lm-logs HelmチャートにおけるカスタムFluentdフィルター
最終更新日 - 11年2026月XNUMX日
Helmチャートを使用してKubernetes環境にLM Logsをデプロイする場合、カスタムFluentdフィルターを設定することでログ処理を拡張できます。この機能により、Helmチャート自体を変更することなく、収集するログを制御したり、ログデータを充実させたり、ログコンテンツを変換したりすることが可能になります。
Helm Chart を使用した LM Logs のデプロイに関する詳細については、以下を参照してください。 Kubernetes ログとイベントの送信.
カスタムフィルターは以下を使用して設定できます。 fluent.extraFilters Helm で LM Logs をデプロイする際に、lm-logs Helm チャート内のパラメータを指定します。この方法により、アップグレード互換性を維持しながら柔軟性を確保できます。
以下の例は、Fluentdのカスタムフィルタを設定するための基本的な構文を示しています。
lm-logs:
enabled: true
kubernetes:
fluent:
extraFilters: |
<filter kubernetes.**>
@type grep
...
</filter>Fluentd フィルター プラグインと構文の詳細については、以下を参照してください。 Fluentd のドキュメント.
Fluentdフィルターの使用例
Fluentdフィルターを使用すると、ログがLM Logsに送信される前にどのように処理されるかを制御できます。 fluent.extraFiltersKubernetes メタデータに基づいてログを含めるか除外するか、メッセージの内容でログをフィルタリングするか、論理条件を適用してログ収集を絞り込むことができます。以下の例では、AND および OR ロジックを適用して特定のログ要件に一致させる方法など、一般的な使用例を示します。
特定の名前空間からのログの除外
この設定を使用して、1つまたは複数のKubernetesネームスペースからログを削除します。
fluent:
extraFilters: |
<filter kubernetes.**>
@type grep
<exclude>
key $.kubernetes.namespace_name
pattern /^(sidecar-ns1|sidecar-ns2)$/
</exclude>
</filter>この構成では、パターンで定義された名前空間からログが削除されます。 | 正規表現の演算子はORロジックを適用するため、どちらのログも sidecar-ns1 or sidecar-ns2 除外されます。
選択した名前空間のログを保持する
この設定を使用すると、特定の名前空間からのみログを収集できます。
fluent:
extraFilters: |
<filter kubernetes.**>
@type grep
<regexp>
key $.kubernetes.namespace_name
pattern /^(ns1|ns2)$/
</regexp>
</filter>この設定では、正規表現パターン内でORロジックを使用して、ns1またはns2からのログを保持します。
名前空間とメッセージの内容によるログのフィルタリング
ログが複数の条件を満たす必要がある場合は、この設定を使用してください。
fluent:
extraFilters: |
<filter kubernetes.**>
@type grep
<regexp>
key $.kubernetes.namespace_name
pattern /^default$/
</regexp>
<regexp>
key message
pattern /ERROR|WARN/
</regexp>
</filter>この構成ではAND論理が適用されます。
- 名前空間は
default - そしてメッセージには以下が含まれている必要があります
ERRORorWARN
Fluentd は、複数の場合、AND ロジックを自動的に適用します。 <regexp> エントリは同じフィルター内で定義されます。
複数のメッセージパターンによるログのフィルタリング
この設定を使用すると、複数のキーワードのいずれかに一致するログを収集できます。
fluent:
extraFilters: |
<filter kubernetes.**>
@type grep
<regexp>
key message
pattern /ERROR|WARN|FATAL/
</regexp>
</filter>この構成では、OR ロジックを使用して、次の内容を含むログを保持します。 ERROR, WARNまたは FATAL.
読みやすさのために明示的なOR論理を使用する
より複雑なシナリオでは、OR条件を明示的に定義できます。
fluent:
extraFilters: |
<filter kubernetes.**>
@type grep
<or>
<regexp>
key $.kubernetes.namespace_name
pattern /^ns1$/
</regexp>
<regexp>
key $.kubernetes.namespace_name
pattern /^ns2$/
</regexp>
</or>
</filter>この設定によりログは ns1 or ns2簡潔な構文よりも可読性が重要な場合は、この方法を使用してください。
明確化のために明示的なAND論理を使用する
AND条件を明示的に定義できます。
fluent:
extraFilters: |
<filter kubernetes.**>
@type grep
<and>
<regexp>
key $.kubernetes.namespace_name
pattern /^default$/
</regexp>
<regexp>
key message
pattern /ERROR|WARN/
</regexp>
</and>
</filter>この構成では、両方の条件が一致する場合にのみログが保持されます。このアプローチは、複数の <regexp> 項目は増えるが、読みやすさは向上する可能性がある。
特定のポッドからのログを除外する
fluent:
extraFilters: |
<filter kubernetes.**>
@type grep
<exclude>
key $.kubernetes.pod_name
pattern /^my-pod-name$/
</exclude>
</filter>この設定では、ポッドからログが削除されます。 my-pod-name.
特定のコンテナからのログの除外
fluent:
extraFilters: |
<filter kubernetes.**>
@type grep
<exclude>
key $.kubernetes.container_name
pattern /^sidecar-container$/
</exclude>
</filter>この設定ではコンテナからログが削除されます sidecar-container.
ログにカスタムフィールドを追加する
この設定により、各レコードに新しいフィールドが追加されます。
fluent:
extraFilters: |
<filter kubernetes.**>
@type record_transformer
<record>
filtername filtervalue
</record>
</filter>ログからフィールドを削除する
この構成では stream フィールド。
fluent:
extraFilters: |
<filter kubernetes.**>
@type record_transformer
remove_keys stream
</filter>複数のフィールドを削除するには:
remove_keys stream,logtagログメッセージからJSONを解析する
この構成では、 message フィールドをJSONとして扱い、構造化されたフィールドを抽出します。
fluent:
extraFilters: |
<filter kubernetes.**>
@type parser
key_name message
reserve_data true
remove_key_name_field false
<parse>
@type json
</parse>
</filter>