Forrester Total Economic Impact™の調査によると、Edwin AIは複合組織において313%の投資対効果(ROI)を実現したことが判明しました。

続きを読む

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
  • そしてメッセージには以下が含まれている必要があります ERROR or WARN

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>

14日間フルアクセス LogicMonitor プラットフォーム