8.3. JSON ログの Elasticsearch ログストアへの転送

Elasticsearch ログストアの場合、JSON ログエントリーが異なるスキーマに従う場合、各 JSON スキーマを 1 つの出力定義にグループ化するように ClusterLogForwarder カスタムリソース (CR) を設定します。これにより、Elasticsearch はスキーマごとに個別のインデックスを使用します。

重要

異なるスキーマを同じインデックスに転送するとタイプの競合やカーディナリティーの問題を引き起こす可能性があるため、データを Elasticsearch ストアに転送する前にこの設定を実行する必要があります。

インデックスが多すぎることが原因のパフォーマンスの問題を回避するには、共通のスキーマに標準化して使用できるスキーマの数を保持することを検討してください。

手順

  1. 以下のスニペットを ClusterLogForwarder CR YAML ファイルに追加します。

    outputDefaults:
     elasticsearch:
        structuredTypeKey: <log record field>
        structuredTypeName: <name>
    pipelines:
    - inputRefs:
      - application
      outputRefs: default
      parse: json
  2. オプション: 上には、Elasticsearch の JSON ログデータの設定 で説明されているように、structuredTypeKey を使用してログレコードフィールドのいずれかを指定します。それ以外の場合は、この行を削除します。
  3. オプション: Elasticsearch の JSON ログデータの設定 で前述しているように structuredTypeName を使用して <name> を指定します。それ以外の場合は、この行を削除します。

    重要

    JSON ログを解析するには、structuredTypeKey または structuredTypeName か、structuredTypeKeystructuredTypeName の両方を設定する必要があります。

  4. inputRefs の場合は、applicationinfrastructure または audit などのパイプラインを使用して転送するログタイプを指定します。
  5. parse: json 要素をパイプラインに追加します。
  6. CR オブジェクトを作成します。

    $ oc create -f <file-name>.yaml

    Red Hat OpenShift Logging Operator は Fluentd Pod を再デプロイします。ただし、再デプロイが完了しない場合は、Fluentd Pod を削除して、強制的に再デプロイされるようにします。

    $ oc delete pod --selector logging-infra=collector