第2章 OpenShift Container Platform に Developer Hub 用監査ログの設定
OpenShift Container Platform Web コンソールを使用して、Developer Hub の監査ログを使用するように次の OpenShift Container Platform ロギングコンポーネントを設定します。
- ロギングのデプロイメント
- 各ロギングコンポーネントの CPU とメモリーの制限を含むロギング環境を設定します。詳細は、Red Hat OpenShift Container Platform - ロギングデプロイメントの設定 を参照してください。
- ロギングコレクター
-
ClusterLogging
カスタムリソース (CR) のspec.collection
スタンザを設定して、サポートされているログコレクターの変更を使用し、STDOUT
からログを収集します。詳細は、Red Hat OpenShift Container Platform - ログコレクターの設定 を参照してください。 - ログ転送
-
ClusterLogForwarder
CR で出力とパイプラインの組み合わせを指定して、OpenShift Container Platform クラスター内外の特定のエンドポイントにログを送信します。詳細は、Red Hat OpenShift Container Platform - JSON ログ転送の有効化 および Red Hat OpenShift Container Platform - ログ転送の設定 を参照してください。
2.1. Red Hat Developer Hub 監査ログを Splunk に転送
Red Hat OpenShift Logging (OpenShift Logging) Operator と ClusterLogForwarder
インスタンスを使用して、Developer Hub インスタンスからストリーミングされた監査ログをキャプチャーし、Splunk インスタンスに関連付けられた HTTPS エンドポイントに転送できます。
前提条件
- サポートされている OpenShift Container Platform バージョンでクラスターが実行している。
-
cluster-admin
権限を持つアカウントがある。 - Splunk Cloud アカウントまたは Splunk Enterprise インストールをもっている。
手順
- OpenShift Container Platform クラスターにログインします。
OpenShift Logging Operator を
openshift-logging
namespace にインストールし、namespace に切り替えます。namespace に切り替えるコマンドの例
oc project openshift-logging
log-collector
という名前のserviceAccount
を作成し、collect-application-logs
ロールをserviceAccount
にバインドします。serviceAccount
を作成するためのコマンド例oc create sa log-collector
ロールを
serviceAccount
にバインドするコマンドの例oc create clusterrolebinding log-collector --clusterrole=collect-application-logs --serviceaccount=openshift-logging:log-collector
-
Splunk インスタンスで
hecToken
を生成します。 openshift-logging
namespace にキー/値シークレットを作成し、そのシークレットを検証します。hecToken
を使用してキー/値シークレットを作成するコマンドの例oc -n openshift-logging create secret generic splunk-secret --from-literal=hecToken=<HEC_Token>
秘密を検証するコマンドの例
oc -n openshift-logging get secret/splunk-secret -o yaml
次のように、基本的な `ClusterLogForwarder` リソース YAML ファイルを作成します。
`ClusterLogForwarder` リソースの YAML ファイルの例
apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: instance namespace: openshift-logging
詳細は、ログフォワーダーの作成 を参照してください。
OpenShift Web コンソールまたは OpenShift CLI を使用して、次の
ClusterLogForwarder
設定を定義します。YAML ファイルで、
log-collector
をserviceAccount
として指定します。serviceAccount
設定例serviceAccount: name: log-collector
転送するログの種類とソースを指定するには、
inputs
を設定します。次の設定により、フォワーダーは指定された namespace 内のすべてのアプリケーションからログをキャプチャーできるようになります。inputs
設定の例inputs: - name: my-app-logs-input type: application application: includes: - namespace: my-developer-hub-namespace containerLimit: maxRecordsPerSecond: 100
詳細は、特定の Pod からのアプリケーションログの転送 を参照してください。
出力を設定して、キャプチャーされたログの送信先を指定します。このステップでは、
splunk
タイプに焦点を当てます。Splunk エンドポイントが自己署名 TLS 証明書を使用する場合はtls.insecureSkipVerify
オプションを使用するか (非推奨)、Secret を使用して証明書チェーンを提供できます。outputs
設定の例outputs: - name: splunk-receiver-application type: splunk splunk: authentication: token: key: hecToken secretName: splunk-secret index: main url: 'https://my-splunk-instance-url' rateLimit: maxRecordsPerSecond: 250
詳細は、OpenShift Container Platform ドキュメントの Splunk へのログの転送 を参照してください。
オプション: 監査ログのみを含めるようにログをフィルタリングします。
filters
設定例filters: - name: audit-logs-only type: drop drop: - test: - field: .message notMatches: isAuditLog
詳細は、OpenShift Container Platform ドキュメントの コンテンツによるログのフィルタリング を参照してください。
特定の入力から指定された出力にログをルーティングするようにパイプラインを設定します。定義された入力と出力の名前を使用して、各パイプラインで複数の
inputRefs
とoutputRefs
を指定します。pipelines
設定の例pipelines: - name: my-app-logs-pipeline detectMultilineErrors: true inputRefs: - my-app-logs-input outputRefs: - splunk-receiver-application filterRefs: - audit-logs-only
ClusterLogForwarder
設定を適用するには、次のコマンドを実行します。ClusterLogForwarder
設定を適用するコマンドの例oc apply -f <ClusterLogForwarder-configuration.yaml>
オプション: ログ損失のリスクを軽減するには、次のオプションを使用して
ClusterLogForwarder
Pod を設定します。ログコレクターのリソース要求と制限を次のように定義します。
collector
設定の例collector: resources: requests: cpu: 250m memory: 64Mi ephemeral-storage: 250Mi limits: cpu: 500m memory: 128Mi ephemeral-storage: 500Mi
delivery
、compression
、RetryDuration
など、ログ配信のtuning
オプションを定義します。必要に応じて出力ごとにチューニングを適用できます。tuning
設定の例tuning: delivery: AtLeastOnce 1 compression: none minRetryDuration: 1s maxRetryDuration: 10s
- 1
AtLeastOnce
配信モードとは、ログフォワーダーがクラッシュしたり再起動したりした場合に、クラッシュ前に読み取られたが宛先に送信されなかったログが、再送信されることを意味します。クラッシュ後に一部のログが重複している可能性があります。
検証
- Splunk ダッシュボードでログを表示して、ログが Splunk インスタンスに転送されていることを確認します。
- 必要に応じて、OpenShift Container Platform と Splunk ログを使用して問題をトラブルシューティングします。