11.2. 同じ Pod 内のコンテナーから別のインデックスへの JSON ログの転送

構造化ログを、同じ Pod 内の異なるコンテナーから別のインデックスに転送できます。この機能を使用するには、複数コンテナーのサポートを使用してパイプラインを設定し、Pod にアノテーションを付ける必要があります。ログは接頭辞が app- のインデックスに書き込まれます。これに対応するために、エイリアスを使用して Elasticsearch を設定することを推奨します。

重要

ログの JSON 形式は、アプリケーションによって異なります。作成するインデックスが多すぎるとパフォーマンスに影響するため、この機能の使用は、互換性のない JSON 形式のログのインデックスの作成に限定してください。クエリーを使用して、さまざまな namespace または互換性のある JSON 形式のアプリケーションからログを分離します。

前提条件

  • Red Hat OpenShift のロギングサブシステム: 5.5

手順

  1. ClusterLogForwarder CR オブジェクトを定義する YAML ファイルを作成または編集します。

    apiVersion: "logging.openshift.io/v1"
    kind: ClusterLogForwarder
    metadata:
      name: instance
      namespace: openshift-logging
    spec:
      outputDefaults:
        elasticsearch:
          enableStructuredContainerLogs: true 1
      pipelines:
      - inputRefs:
        - application
        name: application-logs
        outputRefs:
        - default
        parse: json
    1
    マルチコンテナー出力を有効にします。
  2. Pod CR オブジェクトを定義する YAML ファイルを作成または編集します。

        apiVersion: v1
        kind: Pod
        metadata:
          annotations:
            containerType.logging.openshift.io/heavy: heavy 1
            containerType.logging.openshift.io/low: low
        spec:
          containers:
          - name: heavy 2
            image: heavyimage
          - name: low
            image: lowimage
    1
    形式: containerType.logging.openshift.io/<container-name>: <index>
    2
    アノテーション名はコンテナー名と同じでなければなりません。
警告

この設定により、クラスター上のシャードの数が大幅に増加する可能性があります。