6.3.3. ログ転送 API を使用したログ転送の設定
ログ転送を設定するには、クラスターロギングの ClusterLogging (CR) を編集して、clusterlogging.openshift.io/logforwardingtechpreview: enabled アノテーションを追加し、LogForwarding カスタムリソースを作成して出力、パイプラインを指定し、ログ転送を有効にします。
ログ転送を有効にする場合、次の 3 つのソースタイプのすべててのパイプラインを定義する必要があります (logs.app、logs.infra、および logs.audit)。未定義のソースタイプのログはすべてドロップされます。たとえば、logs.app および log-audit タイプのパイプラインを指定するものの、logs.infra タイプのパイプラインを指定していない場合、logs.infra ログがドロップされます。
手順
API を使用してログ転送を設定するには、以下を実行します。
以下のような
LogForwardingCR YAML ファイルを作成します。apiVersion: "logging.openshift.io/v1alpha1" kind: "LogForwarding" metadata: name: instance1 namespace: openshift-logging2 spec: disableDefaultForwarding: true3 outputs:4 - name: elasticsearch type: "elasticsearch" endpoint: elasticsearch.openshift-logging.svc:9200 secret: name: fluentd - name: elasticsearch-insecure type: "elasticsearch" endpoint: elasticsearch-insecure.messaging.svc.cluster.local insecure: true - name: secureforward-offcluster type: "forward" endpoint: https://secureforward.offcluster.com:24224 secret: name: secureforward pipelines:5 - name: container-logs inputSource: logs.app outputRefs: - elasticsearch - secureforward-offcluster - name: infra-logs inputSource: logs.infra outputRefs: - elasticsearch-insecure - name: audit-logs inputSource: logs.audit outputRefs: - secureforward-offcluster- 1
- ログ転送 CR の名前は
instanceである必要があります。 - 2
- ログ転送 CR の namespace は
openshift-loggingである必要があります。 - 3
trueに設定されると、デフォルトのログ転送動作が無効になります。- 4
- 1 つ以上のエンドポイントを追加するには、以下を実行します。
-
elasticsearchまたはforwardのいずれかの出力タイプを指定します。 - 出力の名前を入力します。
-
サーバー名、FQDN、または IP アドレスのいずれかのエンドポイントを入力します。CIDR アノテーションを使用するクラスター全体のプロキシーが有効になっている場合、エンドポイントは IP アドレスではなくサーバー名または FQDN である必要があります。内部 OpenShift Container Platform Elasticsearch インスタンスの場合は、
elasticsearch.openshift-logging.svc:9200を指定します。 -
オプション: TLS 通信のエンドポイントに必要なシークレットの名前を入力します。シークレットは
openshift-loggingプロジェクトに存在する必要があります。 -
エンドポイントがシークレットを使用しない場合に
insecure: trueを指定します (これにより、非セキュアな通信が発生します)。
-
- 5
- 1 つ以上のパイプラインを追加します。
- パイプラインの名前を入力します。
-
ソースタイプ (
logs.app、logs.infra、またはlogs.audit) を指定します。 CR に設定された 1 つ以上の出力の名前を指定します。
注記disableDefaultForwarding: trueを設定する場合、アプリケーション、インフラストラクチャーおよび監査の 3 つの種類のログすべてのパイプラインおよび出力を設定する必要があります。ログの種類に対応するパイプラインおよび出力を指定しない場合、それらのログは保存されず、失われます。
CR オブジェクトを作成します。
$ oc create -f <file-name>.yaml
6.3.3.1. ログ転送カスタムリソースのサンプル リンクのコピーリンクがクリップボードにコピーされました!
通常のログ転送設定は以下の例のようになります。
以下のログ転送カスタムリソースは、すべてのログをセキュアな Elasticsearch ログストアに送信します。
Elasticsearch ログストアに転送するカスタムリソースのサンプル
apiVersion: logging.openshift.io/v1alpha1
kind: LogForwarding
metadata:
name: instance
namespace: openshift-logging
spec:
disableDefaultForwarding: true
outputs:
- name: user-created-es
type: elasticsearch
endpoint: 'elasticsearch-server.openshift-logging.svc:9200'
secret:
name: piplinesecret
pipelines:
- name: app-pipeline
inputSource: logs.app
outputRefs:
- user-created-es
- name: infra-pipeline
inputSource: logs.infra
outputRefs:
- user-created-es
- name: audit-pipeline
inputSource: logs.audit
outputRefs:
- user-created-es
以下のログ転送カスタムリソースは、Fluentd forward プロトコルを使用してすべてのログをセキュアな Fluentd インスタンスに送信します。
forward プロトコルを使用するためのサンプルカスタムリソース
apiVersion: logging.openshift.io/v1alpha1
kind: LogForwarding
metadata:
name: instance
namespace: openshift-logging
spec:
disableDefaultForwarding: true
outputs:
- name: fluentd-created-by-user
type: forward
endpoint: 'fluentdserver.openshift-logging.svc:24224'
secret:
name: fluentdserver
pipelines:
- name: app-pipeline
inputSource: logs.app
outputRefs:
- fluentd-created-by-user
- name: infra-pipeline
inputSource: logs.infra
outputRefs:
- fluentd-created-by-user
- name: clo-default-audit-pipeline
inputSource: logs.audit
outputRefs:
- fluentd-created-by-user