1.4. ClusterLogForwarder の構造


CLF には、次の主要コンポーネントを含む spec セクションがあります。

Inputs
転送するログメッセージを選択します。組み込みの入力タイプである applicationinfrastructure、および audit は、クラスターのさまざまな部分からログを転送します。カスタム入力を定義することもできます。
出力
ログを転送する宛先を定義します。各出力には、一意の名前とタイプ固有の設定があります。
Pipelines
ログが入力からフィルターを経由して出力されるまでのパスを定義します。パイプラインには一意の名前があり、入力名、出力名、フィルター名のリストで構成されます。
Filters
パイプライン内のログメッセージを変換または破棄します。ユーザーは、特定のログフィールドに一致するフィルターを定義し、メッセージを破棄または変更できます。フィルターはパイプラインで指定された順序で適用されます。

1.4.1. Inputs

入力は spec.inputs の下の配列で設定されます。組み込みの入力タイプは 3 つあります。

application
インフラストラクチャー namespace 内のログを除く、すべてのアプリケーションコンテナーからログを選択します。
infrastructure

次の namespace で実行されているノードおよびインフラストラクチャーコンポーネントからログを選択します。

  • default
  • kube
  • openshift
  • kube- または openshift- 接頭辞を含む
audit
OpenShift API サーバー監査ログ、Kubernetes API サーバー監査ログ、ovn 監査ログ、および auditd からのノード監査ログからログを選択します。

ユーザーは、特定の namespace からログを選択するか、または Pod ラベルを使用してログを選択する application のカスタム入力を定義できます。

1.4.2. 出力

出力は spec.outputs の下の配列で設定されます。各出力には一意の名前とタイプが必要です。サポートされているタイプは次のとおりです。

azureMonitor
ログを Azure Monitor に転送します。
cloudwatch
ログを AWS CloudWatch に転送します。
elasticsearch
ログを外部の Elasticsearch インスタンスに転送します。
googleCloudLogging
ログを Google Cloud Logging に転送します。
http
ログを汎用 HTTP エンドポイントに転送します。
kafka
ログを Kafka ブローカーに転送します。
loki
ログを Loki ロギングバックエンドに転送します。
lokistack
ログを、OpenShift Container Platform 認証インテグレーションによる Loki と Web プロキシーのロギングがサポートされている組み合わせに転送します。LokiStack のプロキシーは、OpenShift Container Platform 認証を使用してマルチテナンシーを適用します。
otlp
OpenTelemetry プロトコルを使用してログを転送します。
splunk
ログを Splunk に転送します。
syslog
ログを外部の syslog サーバーに転送します。

各出力タイプには独自の設定フィールドがあります。

1.4.3. OTLP 出力の設定

クラスター管理者は、OpenTelemetry Protocol (OTLP) 出力を使用してログを収集し、OTLP レシーバーに転送できます。OTLP 出力は、OpenTelemetry Observability フレームワーク で定義された仕様を使用して、HTTP を介して JSON エンコーディングでデータを送信します。

重要

OpenTelemetry Protocol (OTLP) 出力ログフォワーダーは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

手順

  • OTLP を使用した転送を有効にするには、次のアノテーションを追加して ClusterLogForwarder カスタムリソース (CR) を作成または編集します。

    ClusterLogForwarder CR の例

    apiVersion: observability.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
      annotations:
        observability.openshift.io/tech-preview-otlp-output: "enabled" 
    1
    
      name: clf-otlp
    spec:
      serviceAccount:
        name: <service_account_name>
      outputs:
      - name: otlp
        type: otlp
        otlp:
          tuning:
            compression: gzip
            deliveryMode: AtLeastOnce
            maxRetryDuration: 20
            maxWrite: 10M
            minRetryDuration: 5
          url: <otlp_url> 
    2
    
      pipelines:
      - inputRefs:
        - application
        - infrastructure
        - audit
        name: otlp-logs
        outputRefs:
        - otlp
    Copy to Clipboard Toggle word wrap

    1
    このアノテーションを使用して OpenTelemetry Protocol (OTLP) 出力を有効にします。これはテクノロジープレビュー機能です。
    2
    これは絶対 URL でなければならず、ログの送信先である OTLP エンドポイントのプレースホルダーです。
注記

OTLP 出力では OpenTelemetry データモデルが使用されますが、これは他の出力タイプで使用される ViaQ データモデルとは異なります。これは、OpenTelemetry Observability フレームワークで定義された OpenTelemetry Semantic Conventions を使用することで OTLP に準拠しています。

1.4.4. Pipelines

パイプラインは spec.pipelines の下の配列で設定されます。各パイプラインには一意の名前があり、次の要素で構成される必要があります。

inputRefs
このパイプラインにログを転送する入力の名前。
outputRefs
ログを送信する出力の名前。
filterRefs
(オプション) 適用するフィルターの名前。

filterRefs は順番に適用されるため、順序が重要です。以前のフィルターは、後のフィルターで処理されないメッセージを破棄する可能性があります。

1.4.5. Filters

フィルターは spec.filters の下の配列で設定されます。構造化フィールドの値に基づいて受信ログメッセージを照合し、変更または削除できます。

管理者は次のタイプのフィルターを設定できます。

1.4.6. 複数行の例外検出の有効化

コンテナーログの複数行のエラー検出を有効にします。

警告

この機能を有効にすると、パフォーマンスに影響が出る可能性があり、追加のコンピューティングリソースや代替のロギングソリューションが必要になる場合があります。

ログパーサーは頻繁に、同じ例外の個別の行を別々の例外として誤って識別します。その結果、余分なログエントリーが発生し、トレースされた情報が不完全または不正確な状態で表示されます。

Java 例外の例

java.lang.NullPointerException: Cannot invoke "String.toString()" because "<param1>" is null
    at testjava.Main.handle(Main.java:47)
    at testjava.Main.printMe(Main.java:19)
    at testjava.Main.main(Main.java:10)
Copy to Clipboard Toggle word wrap

  • ロギングを有効にして複数行の例外を検出し、それらを 1 つのログエントリーに再アセンブルできるようにする場合は、ClusterLogForwarder カスタムリソース (CR) に .spec.filters の下の detectMultilineErrors フィールドが含まれていることを確認します。

ClusterLogForwarder CR の例

apiVersion: "observability.openshift.io/v1"
kind: ClusterLogForwarder
metadata:
  name: <log_forwarder_name>
  namespace: <log_forwarder_namespace>
spec:
  serviceAccount:
    name: <service_account_name>
  filters:
  - name: <name>
    type: detectMultilineException
  pipelines:
    - inputRefs:
        - <input-name>
      name: <pipeline-name>
      filterRefs:
        - <filter-name>
      outputRefs:
        - <output-name>
Copy to Clipboard Toggle word wrap

1.4.6.1. 詳細

ログメッセージが例外スタックトレースを形成する連続したシーケンスとして表示される場合、それらは単一の統合ログレコードに結合されます。最初のログメッセージの内容は、シーケンス内のすべてのメッセージフィールドの連結コンテンツに置き換えられます。

コレクターは次の言語をサポートしています。

  • Java
  • JS
  • Ruby
  • Python
  • Golang
  • PHP
  • Dart

1.4.7. HTTP 経由でのログ転送

HTTP 経由でログを転送できるようにするには、ClusterLogForwarder カスタムリソース (CR) で出力タイプとして http を指定します。

手順

  • 以下のテンプレートを使用して、ClusterLogForwarder CR を作成または編集します。

    ClusterLogForwarder CR の例

    apiVersion: observability.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
      name: <log_forwarder_name>
      namespace: <log_forwarder_namespace>
    spec:
      managementState: Managed
      outputs:
      - name: <output_name>
        type: http
        http:
          headers:  
    1
    
              h1: v1
              h2: v2
          authentication:
            username:
              key: username
              secretName: <http_auth_secret>
            password:
              key: password
              secretName: <http_auth_secret>
          timeout: 300
          proxyURL: <proxy_url> 
    2
    
          url: <url> 
    3
    
        tls:
          insecureSkipVerify: 
    4
    
          ca:
            key: <ca_certificate>
            secretName: <secret_name> 
    5
    
      pipelines:
        - inputRefs:
            - application
          name: pipe1
          outputRefs:
            - <output_name>  
    6
    
      serviceAccount:
        name: <service_account_name> 
    7
    Copy to Clipboard Toggle word wrap

    1
    ログレコードと送信する追加のヘッダー。
    2
    オプション: この出力から http または https 経由でログを転送するために使用する HTTP/HTTPS プロキシーの URL。この設定は、クラスターまたはノードのデフォルトのプロキシー設定をオーバーライドします。
    3
    ログの宛先アドレス。
    4
    値は true または false です。
    5
    宛先認証情報のシークレット名。
    6
    この値は、出力名と同じである必要があります。
    7
    サービスアカウントの名前。

1.4.8. syslog プロトコルを使用したログの転送

syslog RFC3164 または RFC5424 プロトコルを使用して、デフォルトの Elasticsearch ログストアの代わり、またはそれに加えてプロトコルを受け入れるように設定された外部ログアグリゲーターに、ログのコピーを送信できます。syslog サーバーなど、外部ログアグリゲーターを OpenShift Container Platform からログを受信するように設定する必要があります。

syslog プロトコルを使用してログ転送を設定するには、syslog サーバーへの 1 つ以上の出力と、それらの出力を使用するパイプラインを含む ClusterLogForwarder カスタムリソース (CR) を作成する必要があります。syslog 出力では、UDP、TCP、または TLS 接続を使用できます。

前提条件

  • 指定されたプロトコルまたは形式を使用してロギングデータを受信するように設定されたロギングサーバーが必要です。

手順

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

    apiVersion: observability.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
      name: collector
    spec:
      managementState: Managed
      outputs:
      - name: rsyslog-east 
    1
    
        syslog:
          appName: <app_name> 
    2
    
          enrichment: KubernetesMinimal
          facility: <facility_value> 
    3
    
          msgId: <message_ID> 
    4
    
          payloadKey: <record_field> 
    5
    
          procId: <process_ID> 
    6
    
          rfc: <RFC3164_or_RFC5424> 
    7
    
          severity: informational 
    8
    
          tuning:
            deliveryMode: <AtLeastOnce_or_AtMostOnce> 
    9
    
          url: <url> 
    10
    
        tls: 
    11
    
          ca:
            key: ca-bundle.crt
            secretName: syslog-secret
        type: syslog
      pipelines:
      - inputRefs: 
    12
    
        - application
        name: syslog-east 
    13
    
        outputRefs:
        - rsyslog-east
      serviceAccount: 
    14
    
        name: logcollector
    Copy to Clipboard Toggle word wrap
    1
    出力の名前を指定します。
    2
    オプション: syslog メッセージヘッダーの APP-NAME 部分の値を指定します。値は Syslog プロトコル に準拠している必要があります。値は、静的値と動的値を組み合わせたものにすることができます。フィールドパスとそれに続く || で構成され、その後に別のフィールドパスまたは静的値が続きます。最終的な値の最大長は 48 文字に切り捨てられます。動的値は中括弧で囲む必要があり、値の後に || で区切られた静的なフォールバック値を付ける必要があります。静的値には、英数字とダッシュ、アンダースコア、ドット、スラッシュのみを含めることができます。値の例は <value1>-{.<value2>||"none"} です。
    3
    オプション: syslog-msg ヘッダーの Facility 部分の値を指定します。
    4
    オプション: syslog-msg ヘッダーの MSGID 部分の値を指定します。値は、静的値と動的値を組み合わせたものにすることができます。フィールドパスとそれに続く || で構成され、その後に別のフィールドパスまたは静的値が続きます。最終的な値の最大長は 32 文字に切り捨てられます。動的値は中括弧で囲む必要があり、値の後に || で区切られた静的なフォールバック値を付ける必要があります。静的値には、英数字とダッシュ、アンダースコア、ドット、スラッシュのみを含めることができます。値の例は <value1>-{.<value2>||"none"} です。
    5
    オプション: ペイロードとして使用するレコードフィールドを指定します。payloadKey 値は、1 つの中括弧 {} で囲まれた 1 つのフィールドパスである必要があります。たとえば、{.<value>} です。
    6
    オプション: syslog メッセージヘッダーの PROCID 部分の値を指定します。値は Syslog プロトコル に準拠している必要があります。値は、静的値と動的値を組み合わせたものにすることができます。フィールドパスとそれに続く || で構成され、その後に別のフィールドパスまたは静的値が続きます。最終的な値の最大長は 48 文字に切り捨てられます。動的値は中括弧で囲む必要があり、値の後に || で区切られた静的なフォールバック値を付ける必要があります。静的値には、英数字とダッシュ、アンダースコア、ドット、スラッシュのみを含めることができます。値の例は <value1>-{.<value2>||"none"} です。
    7
    オプション: 生成されたメッセージが準拠する RFC を設定します。値は RFC3164 または RFC5424 にすることができます。
    8
    オプション: メッセージの重大度レベルを設定します。詳細は、Syslog プロトコル を参照してください。
    9
    オプション: ログ転送の配信モードを設定します。値は AtLeastOnce または AtMostOnce のどちらかです。
    10
    スキームを使用して絶対 URL を指定します。有効なスキームは、tcptls、および udp です。たとえば、tls://syslog-receiver.example.com:6514 です。
    11
    Transport Layer Security (TLS) クライアント接続のオプションを制御するための設定を指定します。
    12
    パイプラインを使用して転送するログタイプ (applicationinfrastructure または audit) を指定します。
    13
    パイプラインの名前を指定します。
    14
    サービスアカウントの名前。
  2. CR オブジェクトを作成します。

    $ oc create -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

1.4.8.1. メッセージ出力へのログソース情報の追加

ClusterLogForwarder カスタムリソース (CR) に enrichment フィールドを追加することで、レコードの message フィールドに namespace_namepod_name、および container_name 要素を追加できます。

# ...
  spec:
    outputs:
    - name: syslogout
      syslog:
        enrichment: KubernetesMinimal
        facility: user
        payloadKey: message
        rfc: RFC3164
        severity: debug
      type: syslog
      url: tls://syslog-receiver.example.com:6514
    pipelines:
    - inputRefs:
      - application
      name: test-app
      outputRefs:
      - syslogout
# ...
Copy to Clipboard Toggle word wrap
注記

この設定は、RFC3164 と RFC5424 の両方と互換性があります。

enrichment: None を使用した syslog メッセージ出力の例

 2025-03-03T11:48:01+00:00  example-worker-x  syslogsyslogserverd846bb9b: {...}
Copy to Clipboard Toggle word wrap

enrichment: KubernetesMinimal を使用した syslog メッセージ出力の例

2025-03-03T11:48:01+00:00  example-worker-x  syslogsyslogserverd846bb9b: namespace_name=cakephp-project container_name=mysql pod_name=mysql-1-wr96h,message: {...}
Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat