7.9. ログのサードパーティーシステムへの転送

デフォルトで、OpenShift Container Platform クラスターロギングはクラスターロギングカスタムリソースに定義されるデフォルトの内部 Elasticsearch ログストアにログを送信します。

  • Fluentd 転送プロトコルを使用したログの送信。Configmap を使用して Fluentd 転送 プロトコルを使用し、Fluent 転送 プロトコルを受け入れる外部ロギングアグリゲーターにログを安全に送信できます。
  • syslog を使用したログの送信。Configmap を作成して、syslog プロトコル を使用してログを外部 syslog (RFC 3164) サーバーに送信できます。

または、現在テクノロジープレビューとしてログ転送 API を使用できます。Fluentd プロトコルおよび syslog よりも設定が簡単なログ転送 API は、ログを内部 Elasticsearch ログストアおよび外部の Fluentd ログ集計ソリューションに送信するための設定を公開します。

重要

ログ転送 API はテクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

Red Hat のテクノロジープレビュー機能のサポート範囲についての詳細は、https://access.redhat.com/ja/support/offerings/techpreview/ を参照してください。

ConfigMap を使用してログを転送する方法は非推奨となり、今後のリリースではログ転送 API に置き換えられます。

7.9.1. Fluentd 転送プロトコルを使用したログの転送

Fluentd 転送 プロトコルを使用して、デフォルトの Elasticsearch ログストアではなく外部のログアグリゲーターにログのコピーを送信できます。OpenShift Container Platform クラスターでは、Fluentd 転送 プロトコルを使用して、このプロトコルを受け入れるように設定されたサーバーにログを送信します。外部ログアグリゲーターを OpenShift Container Platform からログを受信するように設定する必要があります。

注記

ログ転送のこの方法は OpenShift Container Platform では非推奨となり、今後のリリースではログ転送 API に置き換えられます。

Fluentd 転送 プロトコルを使用して OpenShift Container Platform をログを送信するように設定するには、外部ログアグリゲーターを参照する openshift-logging namespace の secure-forward という ConfigMap を作成します。

重要

OpenShift Container Platform 4.3 以降では、Fluentd 転送 プロトコルを使用するプロセスは変更されています。以下で説明されているように ConfigMap を作成する必要があります。

さらに、設定で必要になる証明書を、Fluentd Pod にマウントされる secure-forward という名前のシークレットに追加できます。

secure-forward.conf のサンプル

<store>
  @type forward
  <security>
    self_hostname ${hostname} # ${hostname} is a placeholder.
    shared_key "fluent-receiver"
  </security>
  transport tls
  tls_verify_hostname false           # Set false to ignore server cert hostname.

  tls_cert_path '/etc/ocp-forward/ca-bundle.crt'
  <buffer>
    @type file
    path '/var/lib/fluentd/secureforwardlegacy'
    queued_chunks_limit_size "#{ENV['BUFFER_QUEUE_LIMIT'] || '1024' }"
    chunk_limit_size "#{ENV['BUFFER_SIZE_LIMIT'] || '1m' }"
    flush_interval "#{ENV['FORWARD_FLUSH_INTERVAL'] || '5s'}"
    flush_at_shutdown "#{ENV['FLUSH_AT_SHUTDOWN'] || 'false'}"
    flush_thread_count "#{ENV['FLUSH_THREAD_COUNT'] || 2}"
    retry_max_interval "#{ENV['FORWARD_RETRY_WAIT'] || '300'}"
    retry_forever true
    # the systemd journald 0.0.8 input plugin will just throw away records if the buffer
    # queue limit is hit - 'block' will halt further reads and keep retrying to flush the
    # buffer to the remote - default is 'exception' because in_tail handles that case
    overflow_action "#{ENV['BUFFER_QUEUE_FULL_ACTION'] || 'exception'}"
  </buffer>
  <server>
    host fluent-receiver.openshift-logging.svc  # or IP
    port 24224
  </server>
</store>

設定に基づく secure-forward ConfigMap のサンプル

apiVersion: v1
data:
 secure-forward.conf: "<store>
     \ @type forward
     \ <security>
     \   self_hostname ${hostname} # ${hostname} is a placeholder.
     \   shared_key \"fluent-receiver\"
     \ </security>
     \ transport tls
     \ tls_verify_hostname false           # Set false to ignore server cert hostname.
     \ tls_cert_path '/etc/ocp-forward/ca-bundle.crt'
     \ <buffer>
     \   @type file
     \   path '/var/lib/fluentd/secureforwardlegacy'
     \   queued_chunks_limit_size \"#{ENV['BUFFER_QUEUE_LIMIT'] || '1024' }\"
     \   chunk_limit_size \"#{ENV['BUFFER_SIZE_LIMIT'] || '1m' }\"
     \   flush_interval \"#{ENV['FORWARD_FLUSH_INTERVAL'] || '5s'}\"
     \   flush_at_shutdown \"#{ENV['FLUSH_AT_SHUTDOWN'] || 'false'}\"
     \   flush_thread_count \"#{ENV['FLUSH_THREAD_COUNT'] || 2}\"
     \   retry_max_interval \"#{ENV['FORWARD_RETRY_WAIT'] || '300'}\"
     \   retry_forever true
     \   # the systemd journald 0.0.8 input plugin will just throw away records if the buffer
     \   # queue limit is hit - 'block' will halt further reads and keep retrying to flush the
     \   # buffer to the remote - default is 'exception' because in_tail handles that case
     \   overflow_action \"#{ENV['BUFFER_QUEUE_FULL_ACTION'] || 'exception'}\"
     \ </buffer>
     \ <server>
     \   host fluent-receiver.openshift-logging.svc  # or IP
     \   port 24224
     \ </server>
     </store>"
kind: ConfigMap
metadata:
  creationTimestamp: "2020-01-15T18:56:04Z"
  name: secure-forward
  namespace: openshift-logging
  resourceVersion: "19148"
  selfLink: /api/v1/namespaces/openshift-logging/configmaps/secure-forward
  uid: 6fd83202-93ab-d851b1d0f3e8

手順

OpenShift Container Platform を Fluentd 転送 プロトコルを使用してログを転送できるように設定するには、以下を実行します。

  1. 転送 パラメーターについて secure-forward.conf という名前の設定ファイルを作成します。

    1. シークレットおよび TLS 情報を設定します。

       <store>
        @type forward
      
        self_hostname ${hostname} 1
        shared_key <SECRET_STRING> 2
      
        transport tls 3
      
        tls_verify_hostname true 4
        tls_cert_path <path_to_file> 5
      1
      自動生成される証明書の共通名 (CN) のデフォルト値を指定します。
      2
      ノード間で共有キーを入力します。
      3
      tls を指定して TLS 検証を有効にします。
      4
      サーバー証明書のホスト名を確認するには true に設定します。サーバー証明書のホスト名を無視するには、false に設定します。
      5
      プライベート CA 証明書ファイルへのパスを /etc/ocp-forward/ca_cert.pem として指定します。

      mTLS を使用するには、クライアント証明書およびキーパラメーターなどの設定に関する情報として Fluentd のドキュメントを参照してください。

    2. 外部 Fluentd サーバーの名前、ホスト、およびポートを設定します。

        <server>
          name 1
          host 2
          hostlabel 3
          port 4
        </server>
        <server> 5
          name
          host
        </server>
      1
      オプションで、このサーバーの名前を入力します。
      2
      サーバーのホスト名または IP を指定します。
      3
      サーバーのホストラベルを指定します。
      4
      サーバーのポートを指定します。
      5
      オプションで、サーバーを追加します。2 つ以上のサーバーを指定する場合、forward はこれらのサーバーノードをラウンドロビン順で使用します。

      以下は例になります。

        <server>
          name externalserver1
          host 192.168.1.1
          hostlabel externalserver1.example.com
          port 24224
        </server>
        <server>
          name externalserver2
          host externalserver2.example.com
          port 24224
        </server>
        </store>
  2. 設定ファイルから openshift-logging namespace に secure-forward という名前の ConfigMap を作成します。

    $ oc create configmap secure-forward --from-file=secure-forward.conf -n openshift-logging
  3. オプション: レシーバーに必要なシークレットをインポートします。

    $ oc create secret generic secure-forward --from-file=<arbitrary-name-of-key1>=cert_file_from_fluentd_receiver --from-literal=shared_key=value_from_fluentd_receiver

    以下は例になります。

    $ oc create secret generic secure-forward --from-file=ca-bundle.crt=ca-for-fluentd-receiver/ca.crt --from-literal=shared_key=fluentd-receiver
  4. fluentd Pod を更新し、secure-forward シークレットおよび secure-forward ConfigMap を適用します。

    $ oc delete pod --selector logging-infra=fluentd
  5. 外部ログアグリゲーターを OpenShift Container Platform からメッセージを安全に受信できるように設定します。

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

syslog プロトコルを使用して、デフォルトの Elasticsearch ログストアではなく外部の syslog サーバーにログのコピーを送信できます。この syslog プロトコルについては、以下の点に注意してください。

  • RFC 5424 ではなく、syslog プロトコル (RFC 3164) を使用する
  • TLS に対応していないため、安全ではない
  • Kubernetes メタデータ、systemd データその他のメタデータを提供しない
注記

ログ転送のこの方法は OpenShift Container Platform では非推奨となり、今後のリリースではログ転送 API に置き換えられます。

syslog プロトコルには、以下の 2 つのバージョンがあります。

syslog プロトコルを使用してログ転送を設定するには、ログを転送するために必要な情報を使って syslog.conf という設定ファイルを作成します。次に、そのファイルを使用して OpenShift Container Platform がログの転送時に使用する openshift-logging namespace の syslog という ConfigMap を作成します。syslog サーバーを OpenShift Container Platform からログを受信するように設定する必要があります。

重要

OpenShift Container Platform 4.3 以降では、syslog プロトコルを使用するプロセスは変更されています。以下で説明されているように ConfigMap を作成する必要があります。

設定ファイルに別個の <store> スタンザを指定して、ログを複数の syslog サーバーに転送できます。

サンプル syslog.conf

<store>
@type syslog_buffered 1
remote_syslog rsyslogserver.openshift-logging.svc.cluster.local 2
port 514 3
hostname fluentd-4nzfz 4
remove_tag_prefix tag 5
tag_key ident,systemd.u.SYSLOG_IDENTIFIER 6
facility local0 7
severity info 8
use_record true 9
payload_key message 10
</store>

1
syslog プロトコル ( syslog または syslog_buffered のいずれか)。
2
syslog サーバーの完全修飾ドメイン名 (FQDN) または IP アドレス。
3
接続先のポート番号。デフォルトは 514 です。
4
syslog サーバーの名前。
5
タグからプレフィックスを削除します。デフォルトは '' (空) です。
6
syslog キーを設定するためのフィールド。
7
syslog ログファシリティーまたはソース。
8
syslog ログの重大度。
9
レコードの重大度とファシリティーを使用するかどうかを決定する(ある場合)。
10
syslog メッセージのペイロードを設定するためのキー。デフォルトは message に設定されます。

サンプル syslog.conf をベースとするサンプル syslog ConfigMap

kind: ConfigMap
apiVersion: v1
metadata:
  name: syslog
  namespace: openshift-logging
data:
  syslog.conf: |
    <store>
     @type syslog_buffered
     remote_syslog syslogserver.openshift-logging.svc.cluster.local
     port 514
     hostname fluentd-4nzfz
     remove_tag_prefix tag
     tag_key ident,systemd.u.SYSLOG_IDENTIFIER
     facility local0
     severity info
     use_record true
     payload_key message
    </store>

手順

OpenShift Container Platform が syslog プロトコルを使用してログを転送するように設定するには、以下を実行します。

  1. <store> スタンザ内に以下のパラメーターが含まれる syslog.conf という名前の設定ファイルを作成します。

    1. syslog プロトコルタイプを指定します。

      @type syslog_buffered 1
      1
      使用するプロトコル (syslog または syslog_buffered のいずれか) を指定します。
    2. 外部 syslog サーバーの名前、ホスト、およびポートを設定します。

      remote_syslog <remote> 1
      port <number> 2
      hostname <name> 3
      1
      syslog サーバーの FQDN または IP アドレスを指定します。
      2
      syslog サーバーのポートを指定します。
      3
      この syslog サーバーの名前を指定します。

      以下は例になります。

      remote_syslog syslogserver.openshift-logging.svc.cluster.local
      port 514
      hostname fluentd-server
    3. 必要に応じて他の syslog 変数を設定します。

      remove_tag_prefix 1
      tag_key <key> 2
      facility <value>  3
      severity <value>  4
      use_record <value> 5
      payload_key message 6
      1
      このパラメーターを追加して、tag フィールドを syslog プレフィックスから削除します。
      2
      syslog キーを設定するためのフィールドを指定します。
      3
      syslog ログファシリティーまたはソースを指定します。値については、RTF 3164 を参照してください。
      4
      syslog ログの重大度を指定します。値については、RTF 3164 リンクを参照してください。
      5
      true を指定して、レコードの重大度およびファシリティーを使用します (ある場合)。true の場合、container_namenamespace_name、および pod_name は、出力の内容に組み込まれます。
      6
      syslog メッセージのペイロードを設定するためにキーを指定します。デフォルトは message に設定されます。

      以下は例になります。

      facility local0
      severity info

      設定ファイルは以下のように表示されます。

      <store>
      @type syslog_buffered
      remote_syslog syslogserver.openshift-logging.svc.cluster.local
      port 514
      hostname fluentd-4nzfz
      tag_key ident,systemd.u.SYSLOG_IDENTIFIER
      facility local0
      severity info
      use_record false
      </store>
  2. 設定ファイルから openshift-logging namespace に syslog という名前の ConfigMap を作成します。

    $ oc create configmap syslog --from-file=syslog.conf -n openshift-logging

    Cluster Logging Operator は Fluentd Pod を再デプロイします。Pod が再デプロイされない場合、強制的に再デプロイするために Fluentd Pod を削除できます。

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

7.9.3. ログ転送 API を使用したログの転送

ログ転送 API により、コンテナーおよびノードログをクラスター内外の特定のエンドポイントに送信できるようにカスタムパイプラインを設定できます。既存のロギングサービス、外部 Elasticsearch クラスター、外部ログ集計ソリューション、またはセキュリティー情報およびイベント管理 (SIEM) システムなどの OpenShift Container Platform クラスターロギングで管理されていないリモート宛先および内部 OpenShift Container Platform Elasticsearch ログストアにログをタイプ別に送信することができます。

重要

ログ転送 API は現時点ではテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

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

異なるタイプのログを異なるシステムに送信して、組織の誰がそれぞれのタイプにアクセスできるかを制御できます。オプションの TLS サポートにより、組織の必要に応じてセキュアな通信を使用してログを送信することができます。

注記

ログ転送 API の使用はオプションです。ログを内部の OpenShift Container Platform Elasticsearch インスタンスのみに転送する必要がある場合は、ログ転送 API を設定しないようにしてください。

7.9.3.1. ログ転送 API について

ログ転送 API を使用してクラスターログを転送するには、outputs および pipelines の組み合わせを使用して、OpenShift Container Platform クラスター内外の特定のエンドポイントにログを送信する必要があります。

注記

デフォルトの内部 OpenShift Container Platform Elasticsearch ログストアのみを使用する必要がある場合は、ログ転送機能は設定しません。

デフォルトで、クラスターロギング Operator はクラスターロギングカスタムリソースに定義されるデフォルトの内部 Elasticsearch ログストアにログを送信します。ログ転送機能を使用するには、カスタム logforwarding 設定ファイルを作成し、指定したエンドポイントにログを送信します。

output はログデータの宛先で、パイプライン は単一のソースまたは 1 つまたは複数の出力の単純なルーティングを定義します。

出力には、以下のいずれかが該当します。

  • elasticsearch を使用して、外部の Elasticsearch v5.x クラスターおよび/または内部の OpenShift Container Platform Elasticsearch インスタンスにログを転送します。
  • forward を使用して、ログを外部のログ集計ソリューションに転送します。このオプションは Fluentd forward プロトコルを使用します。
注記

CIDR アノテーションを使用するクラスター全体のプロキシーが有効になっている場合、エンドポイントは IP アドレスではなくサーバー名または FQDN である必要があります。

パイプライン は、データのソースを出力に関連付けます。データのソースは以下のいずれかになります。

  • logs.app: クラスターで実行される、インフラストラクチャーコンテナーアプリケーションを除くユーザーアプリケーションによって生成されるコンテナーログ。
  • logs.infra: ジャーナルログなどの、クラスターで実行されるインフラストラクチャーコンポーネントおよび OpenShift Container Platform ノードで生成されるログ。インフラストラクチャーコンポーネントは、openshift*kube*、または default プロジェクトで実行される Pod です。
  • logs.audit: ノード監査システム (auditd) で生成されるログ (/var/log/audit/audit.log ファイルに保存される)、および Kubernetes apiserver および OpenShift apiserver の監査ログ。

以下の点に注意してください。

  • 内部 OpenShift Container Platform Elasticsearch インスタンスは、監査ログのセキュアなストレージを提供しません。監査ログを転送するシステムが組織および政府の規制に準拠しており、適切にセキュリティーが保護されていることを確認することが推奨されています。OpenShift Container Platform クラスターロギングはこれらの規制に準拠しません。
  • 出力は、シークレットを使用する TLS 通信をサポートします。シークレットには、tls.crttls.key、および ca-bundler.crt のキーが含まれる必要があります。これらは、それぞれが表す証明書を参照します。転送機能を安全な方法で使用するには、シークレットにキー shared_key が含まれる必要があります。
  • キーやシークレット、サービスアカウント、ポートのオープン、またはグローバルプロキシー設定など、外部の宛先で必要となる可能性のある追加設定を作成し、維持する必要があります。

以下の例は、3 つの出力を作成します。

  • 内部 OpenShift Container Platform Elasticsearch インスタンス
  • 非セキュアな外部で管理される Elasticsearch インスタンス
  • セキュアな外部ログアグリゲーター (forward プロトコルを使用)。

3 つのパイプラインは以下を送信します。

  • 内部 OpenShift Container Platform Elasticsearch へのアプリケーションログ
  • 外部 Elasticsearch インスタンスへのインフラストラクチャーログ
  • セキュリティーが保護されたデバイスへの監査ログ ( forward プロトコルを使用)

ログ転送の出力とパイプラインのサンプル

apiVersion: "logging.openshift.io/v1alpha1"
kind: "LogForwarding"
metadata:
  name: instance 1
  namespace: openshift-logging
spec:
  disableDefaultForwarding: true 2
  outputs: 3
   - name: elasticsearch 4
     type: "elasticsearch"  5
     endpoint: elasticsearch.openshift-logging.svc:9200 6
     secret: 7
        name: fluentd
   - name: elasticsearch-insecure
     type: "elasticsearch"
     endpoint: elasticsearch-insecure.svc.messaging.cluster.local
     insecure: true 8
   - name: secureforward-offcluster
     type: "forward"
     endpoint: https://secureforward.offcluster.com:24224
     secret:
        name: secureforward
  pipelines: 9
   - name: container-logs 10
     inputSource: logs.app 11
     outputRefs: 12
     - elasticsearch
     - secureforward-offcluster
   - name: infra-logs
     inputSource: logs.infra
     outputRefs:
     - elasticsearch-insecure
   - name: audit-logs
     inputSource: logs.audit
     outputRefs:
     - secureforward-offcluster

1
ログ転送 CR の名前は instance である必要があります。
2
デフォルトのログ転送動作を無効にするパラメーター。
3
出力の設定。
4
出力を記述する名前。
5
elasticsearch または forward のいずれかの出力タイプ。
6
サーバー名、FQDN、または IP アドレスのいずれかのエンドポイントを入力します。CIDR アノテーションを使用するクラスター全体のプロキシーが有効になっている場合、エンドポイントは IP アドレスではなくサーバー名または FQDN である必要があります。内部 OpenShift Container Platform Elasticsearch インスタンスの場合は、elasticsearch.openshift-logging.svc:9200 を指定します。
7
TLS 通信のエンドポイントで必要なシークレットのオプションの名前。シークレットは openshift-logging プロジェクトに存在する必要があります。
8
エンドポイントがシークレットを使用しない場合のオプションの設定 (これにより、非セキュアな通信が発生します)。
9
パイプラインの設定。
10
パイプラインを説明する名前。
11
データソース: logs.applogs.infra、または logs.audit
12
CR に設定される単一または複数の出力の名前。

7.9.3.2. ログ転送 API の有効化

API を使用してログを転送する前に、ログ転送 API を有効にする必要があります。

手順

ログ転送 API を有効にするには、以下を実行します。

  1. openshift-logging プロジェクトでクラスターロギングのカスタムリソース (CR) を編集します。

    $ oc edit ClusterLogging instance
  2. clusterlogging.openshift.io/logforwardingtechpreview アノテーションを追加し、enabled に設定します。

    apiVersion: "logging.openshift.io/v1"
    kind: "ClusterLogging"
    metadata:
      annotations:
        clusterlogging.openshift.io/logforwardingtechpreview: enabled 1
      name: "instance"
      namespace: "openshift-logging"
    spec:
    
    ...
    
      collection: 2
        logs:
          type: "fluentd"
          fluentd: {}
    1
    ログ転送 API を有効および無効にします。ログ転送を使用するには、enabled に設定します。OpenShift Container Platform Elasticsearch インスタンスのみを使用するには、disable に設定するか、またはアノテーションを追加しません。
    2
    Fluentd を使用できるように、spec.collection ブロックをクラスターロギング CR で定義する必要があります。

7.9.3.3. ログ転送 API を使用したログ転送の設定

ログ転送を設定するには、クラスターロギングのカスタムリソース (CR) を編集して、clusterlogging.openshift.io/logforwardingtechpreview: enabled アノテーションを追加し、ログ転送カスタムリソースを作成して出力、パイプラインを指定し、ログ転送を有効にします。

ログ転送を有効にする場合、次の 3 つのソースタイプのすべててのパイプラインを定義する必要があります (logs.applogs.infra、および logs.audit)。未定義のソースタイプのログはすべてドロップされます。たとえば、logs.app および log-audit タイプのパイプラインを指定するものの、logs.infra タイプのパイプラインを指定していない場合、logs.infra ログがドロップされます。

手順

API を使用してログ転送を設定するには、以下を実行します。

  1. 以下のようなログ転送 CR YAML ファイルを作成します。

    apiVersion: "logging.openshift.io/v1alpha1"
    kind: "LogForwarding"
    metadata:
      name: instance 1
      namespace: openshift-logging 2
    spec:
      disableDefaultForwarding: true 3
      outputs: 4
       - name: elasticsearch
         type: "elasticsearch"
         endpoint: elasticsearch.openshift-logging.svc:9200
         secret:
            name: elasticsearch
       - name: elasticsearch-insecure
         type: "elasticsearch"
         endpoint: elasticsearch-insecure.svc.messaging.cluster.local
         insecure: true
       - name: secureforward-offcluster
         type: "forward"
         endpoint: https://secureforward.offcluster.com:24224
         secret:
            name: secureforward
      pipelines: 5
       - name: container-logs
         inputSource: logs.app
         outputRefs:
         - elasticsearch
         - secureforward-offcluster
       - name: infra-logs
         inputSource: logs.infra
         outputRefs:
         - elasticsearch-insecure
       - name: audit-logs
         inputSource: logs.audit
         outputRefs:
         - secureforward-offcluster
    1
    ログ転送 CR の名前は instance である必要があります。
    2
    ログ転送 CR の namespace は openshift-logging である必要があります。
    3
    true に設定されると、デフォルトのログ転送動作が無効になります。
    4
    1 つ以上のエンドポイントを追加するには、以下を実行します。
    • elasticseach または forward のいずれかの出力タイプを指定します。
    • 出力の名前を入力します。
    • サーバー名、FQDN、または IP アドレスのいずれかのエンドポイントを入力します。CIDR アノテーションを使用するクラスター全体のプロキシーが有効になっている場合、エンドポイントは IP アドレスではなくサーバー名または FQDN である必要があります。内部 OpenShift Container Platform Elasticsearch インスタンスの場合は、elasticsearch.openshift-logging.svc:9200 を指定します。
    • オプション: TLS 通信のエンドポイントに必要なシークレットの名前を入力します。シークレットは openshift-logging プロジェクトに存在する必要があります。
    • エンドポイントがシークレットを使用しない場合に insecure: true を指定します (これにより、非セキュアな通信が発生します)。
    5
    1 つ以上のパイプラインを追加します。
    • パイプラインの名前を入力します。
    • ソースタイプ (logs.applogs.infra、または logs.audit) を指定します。
    • CR に設定された 1 つ以上の出力の名前を指定します。

      注記

      disableDefaultForwarding: true を設定する場合、アプリケーション、インフラストラクチャーおよび監査の 3 つの種類のログすべてのパイプラインおよび出力を設定する必要があります。ログの種類に対応するパイプラインおよび出力を指定しない場合、それらのログは保存されず、失われます。

  2. CR オブジェクトを作成します。

    $ oc create -f <file-name>.yaml
7.9.3.3.1. ログ転送カスタムリソースのサンプル

通常のログ転送設定は以下の例のようになります。

以下のログ転送カスタムリソースは、すべてのログをセキュアな Elasticsearch ログストアに送信します。

Elasticsearch ログストアに転送するカスタムリソースのサンプル

apiVersion: logging.openshift.io/v1alpha1
kind: LogForwarding
metadata:
  name: instance
  namespace: openshift-logging
spec:
  disableDefaultForwarding: true
  outputs:
    - name: user-created-es
      type: elasticsearch
      endpoint: 'elasticsearch-server.openshift-logging.svc:9200'
      secret:
        name: piplinesecret
  pipelines:
    - name: app-pipeline
      inputSource: logs.app
      outputRefs:
        - user-created-es
    - name: infra-pipeline
      inputSource: logs.infra
      outputRefs:
        - user-created-es
    - name: audit-pipeline
      inputSource: logs.audit
      outputRefs:
        - user-created-es

以下のログ転送カスタムリソースは、Fluentd forward プロトコルを使用してすべてのログをセキュアな Fluentd インスタンスに送信します。

forward プロトコルを使用するためのサンプルカスタムリソース

apiVersion: logging.openshift.io/v1alpha1
kind: LogForwarding
metadata:
  name: instance
  namespace: openshift-logging
spec:
  disableDefaultForwarding: true
  outputs:
    - name: fluentd-created-by-user
      type: forward
      endpoint: 'fluentdserver.openshift-logging.svc:24224'
      secret:
        name: fluentdserver
  pipelines:
    - name: app-pipeline
      inputType: logs.app
      outputRefs:
        - fluentd-created-by-user
    - name: infra-pipeline
      inputType: logs.infra
      outputRefs:
        - fluentd-created-by-user
    - name: clo-default-audit-pipeline
      inputType: logs.audit
      outputRefs:
        - fluentd-created-by-user

7.9.3.4. ログ転送 API の無効化

ログ転送 API を無効にし、指定されたエンドポイントへのログの転送を停止するには、metadata.annotations.clusterlogging.openshift.io/logforwardingtechpreview:enabled パラメーターをクラスターロギング CR から削除してからログ転送 CR を削除します。コンテナーおよびノードログは内部 OpenShift Container Platform Elasticsearch インスタンスに転送されます。

注記

disableDefaultForwarding=false を設定すると、クラスターロギングがログを指定されたエンドポイント および デフォルトの内部 OpenShift Container Platform Elasticsearch インスタンスに送信できなくなります。

手順

ログ転送 API を無効にするには、以下を実行します。

  1. openshift-logging プロジェクトでクラスターロギングのカスタムリソース (CR) を編集します。

    $ oc edit ClusterLogging instance
  2. clusterlogging.openshift.io/logforwardingtechpreview アノテーションを削除します。

    apiVersion: "logging.openshift.io/v1"
    kind: "ClusterLogging"
    metadata:
      annotations:
        clusterlogging.openshift.io/logforwardingtechpreview: enabled 1
      name: "instance"
      namespace: "openshift-logging"
    ....
    1
    このアノテーションを削除します。
  3. ログ転送カスタムリソースを削除します。

    $ oc delete LogForwarding instance -n openshift-logging

このページには機械翻訳が使用されている場合があります (詳細はこちら)。