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 を使用してログ転送を設定するには、以下を実行します。
以下のような
LogForwarding
CR YAML ファイルを作成します。apiVersion: "logging.openshift.io/v1alpha1" kind: "LogForwarding" metadata: name: instance 1 namespace: openshift-logging 2 spec: disableDefaultForwarding: true 3 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