3.3. ログストアの設定
OpenShift Container Platform は Elasticsearch 6 (ES) を使用してログデータを保存し、整理します。
ログストアに加えることのできる変更には、以下が含まれます。
- Elasticsearch クラスターのストレージ。
- シャードをクラスター内の複数のデータノードにレプリケートする方法 (完全なレプリケーションからレプリケーションなしまで)。
- Elasticsearch データへの外部アクセス
Elasticsearch はメモリー集約型アプリケーションです。それぞれの Elasticsearch ノードには、ClusterLogging
カスタムリソースで指定しない限り、メモリー要求および制限の両方に 16G のメモリーが必要です。初期設定の OpenShift Container Platform ノードのセットは、Elasticsearch クラスターをサポートするのに十分な大きさではない場合があります。その場合、推奨されるサイズ以上のメモリーを使用して実行できるようにノードを OpenShift Container Platform クラスターに追加する必要があります。
各 Elasticsearch ノードはこれより低い値のメモリー設定でも動作しますが、これは実稼働環境には推奨されません。
3.3.1. 監査ログのログストアへの転送
内部 OpenShift Container Platform Elasticsearch ログストアは監査ログのセキュアなストレージを提供しないため、デフォルトで監査ログは内部 Elasticsearch インスタンスに保存されません。
監査ログを内部ログストアに送信する必要がある場合 (Kibana で監査ログを表示するなど)、ログ転送 API を使用する必要があります。ログ転送 API は現時点ではテクノロジープレビュー機能です。
内部 OpenShift Container Platform Elasticsearch ログストアは、監査ログのセキュアなストレージを提供しません。監査ログを転送するシステムが組織および政府の規制に準拠しており、適切にセキュリティーが保護されていることを確認することが推奨されています。OpenShift Container Platform クラスターロギングはこれらの規制に準拠しません。
手順
ログ転送 API を使用して監査ログを内部 Elasticsearch インスタンスに転送するには、以下を実行します。
ログ転送 API が有効にされていない場合:
openshift-logging
プロジェクトでClusterLogging
カスタムリソース (CR) を編集します。$ oc edit ClusterLogging instance
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: {}
LogForwarding
CR YAML ファイルを作成するか、または既存の CR を編集します。すべてのログタイプを内部 Elasticsearch インスタンスに送信するために CR を作成します。変更せずに以下の例を使用できます。
apiVersion: logging.openshift.io/v1alpha1 kind: LogForwarding metadata: name: instance namespace: openshift-logging spec: disableDefaultForwarding: true outputs: - name: clo-es type: elasticsearch endpoint: 'elasticsearch.openshift-logging.svc:9200' 1 secret: name: fluentd pipelines: - name: audit-pipeline 2 inputSource: logs.audit outputRefs: - clo-es - name: app-pipeline 3 inputSource: logs.app outputRefs: - clo-es - name: infra-pipeline 4 inputSource: logs.infra outputRefs: - clo-es
注記アプリケーション、インフラストラクチャーおよび監査の 3 つの種類のログすべてのパイプラインおよび出力を設定する必要があります。ログの種類に対応するパイプラインおよび出力を指定しない場合、それらのログは保存されず、失われます。
既存の
LogForwarding
CR がある場合、内部 Elasticsearch インスタンスの出力およびパイプラインを監査ログの出力に追加します。以下は例になります。apiVersion: "logging.openshift.io/v1alpha1" kind: "LogForwarding" metadata: name: instance namespace: openshift-logging spec: disableDefaultForwarding: true outputs: - name: elasticsearch 1 type: "elasticsearch" endpoint: elasticsearch.openshift-logging.svc:9200 secret: name: fluentd - name: elasticsearch-insecure type: "elasticsearch" endpoint: elasticsearch-insecure.messaging.svc.cluster.local insecure: true - name: secureforward-offcluster type: "forward" endpoint: https://secureforward.offcluster.com:24224 secret: name: secureforward pipelines: - name: container-logs inputSource: logs.app outputRefs: - secureforward-offcluster - name: infra-logs inputSource: logs.infra outputRefs: - elasticsearch-insecure - name: audit-logs 2 inputSource: logs.audit outputRefs: - elasticsearch
追加リソース
ログ転送 API の詳細は、Forwarding logs using the Log Forwarding API を参照してください。