7.10.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.10.3.1. ログ転送 API について
ログ転送 API を使用してクラスターログを転送するには、outputs および pipelines の組み合わせを使用して、OpenShift Container Platform クラスター内外の特定のエンドポイントにログを送信する必要があります。
デフォルトの内部 OpenShift Container Platform Elasticsearch ログストアのみを使用する必要がある場合は、ログ転送機能は設定しません。
デフォルトで、クラスターロギング Operator は ClusterLogging
カスタムリソースに定義されるデフォルトの内部 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.crt、tls.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.app
、logs.infra
、またはlogs.audit
。 - 12
- CR に設定される単一または複数の出力の名前。
外部ログアグリゲーターが利用できない場合の Fluentd のログの処理
外部ロギングアグリゲーターが利用できず、ログを受信できない場合、Fluentd は継続してログを収集し、それらをバッファーに保存します。ログアグリゲーターが利用可能になると、バッファーされたログを含む、ログの転送が再開されます。バッファーが完全に一杯になると、Fluentd はログの収集を停止します。OpenShift Container Platform はログをローテーションし、それらを削除します。バッファーサイズを調整したり、永続ボリューム要求 (PVC) を Fluentd デーモンセットまたは Pod に追加したりすることはできません。