9.5. ロギングコレクターの設定
Red Hat OpenShift のロギングは、クラスターからオペレーションとアプリケーションログを収集し、Kubernetes Pod とプロジェクトメタデータでデータを拡充します。ログコレクターに対するサポートされるすべての変更は、ClusterLogging カスタムリソース (CR) の spec.collection スタンザを使用して実行できます。
9.5.1. ログコレクターの設定 リンクのコピーリンクがクリップボードにコピーされました!
ClusterLogging カスタムリソース (CR) を変更することで、ロギングで使用するログコレクターのタイプを設定できます。
Fluentd は非推奨となっており、今後のリリースで削除される予定です。Red Hat は、現在のリリースのライフサイクル中にこの機能のバグ修正とサポートを提供しますが、この機能は拡張されなくなりました。Fluentd の代わりに、Vector を使用できます。
前提条件
- 管理者権限がある。
-
OpenShift CLI (
oc) がインストールされている。 - Red Hat OpenShift Logging Operator がインストールされている。
-
ClusterLoggingCR が作成されている。
手順
ClusterLoggingCR のcollection仕様を変更します。ClusterLoggingCR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ロギングに使用するログコレクターのタイプ。これは、
vectorまたはfluentdにすることができます。
次のコマンドを実行して、
ClusterLoggingCR を適用します。oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.2. LogFileMetricExporter リソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
ロギングバージョン 5.8 以降のバージョンでは、LogFileMetricExporter はデフォルトでコレクターを使用してデプロイされなくなりました。実行中のコンテナーによって生成されたログからメトリクスを生成するには、LogFileMetricExporter カスタムリソース (CR) を手動で作成する必要があります。
LogFileMetricExporter CR を作成しない場合、OpenShift Container Platform Web コンソールのダッシュボードの Produced Logs に No datapoints found というメッセージが表示される場合があります。
前提条件
- 管理者権限がある。
- Red Hat OpenShift Logging Operator がインストールされている。
-
OpenShift CLI (
oc) がインストールされている。
手順
LogFileMetricExporterCR を YAML ファイルとして作成します。LogFileMetricExporterCR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
LogFileMetricExporterCR を適用します。oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
logfilesmetricexporter Pod は、各ノードで collector Pod と同時に実行されます。
次のコマンドを実行して出力を確認し、
LogFilesmetricExporterCR を作成した namespace でlogfilesmetricexporterPod が実行されていることを確認します。oc get pods -l app.kubernetes.io/component=logfilesmetricexporter -n openshift-logging
$ oc get pods -l app.kubernetes.io/component=logfilesmetricexporter -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE logfilesmetricexporter-9qbjj 1/1 Running 0 2m46s logfilesmetricexporter-cbc4v 1/1 Running 0 2m46s
NAME READY STATUS RESTARTS AGE logfilesmetricexporter-9qbjj 1/1 Running 0 2m46s logfilesmetricexporter-cbc4v 1/1 Running 0 2m46sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.3. ログコレクター CPU およびメモリー制限の設定 リンクのコピーリンクがクリップボードにコピーされました!
ログコレクターは、CPU とメモリー制限の両方への調整を許可します。
手順
openshift-loggingプロジェクトでClusterLoggingカスタムリソース (CR) を編集します。oc -n openshift-logging edit ClusterLogging instance
$ oc -n openshift-logging edit ClusterLogging instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 必要に応じて CPU、メモリー制限および要求を指定します。表示される値はデフォルト値です。
9.5.4. 入力レシーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Logging Operator は、クライアントがコレクターに書き込めるように、設定された各入力レシーバー用のサービスをデプロイします。このサービスは、入力レシーバーに指定されたポートを公開します。サービス名は、以下に基づいて生成されます。
-
マルチログフォワーダー
ClusterLogForwarderCR のデプロイメントの場合、サービス名は<ClusterLogForwarder_CR_name>-<input_name>という形式になります。たとえば、example-http-receiverなどです。 -
従来の
ClusterLogForwarderCR のデプロイメント (instanceという名前が付けられ、openshift-loggingnamespace に配置されているデプロイメント) の場合、サービス名はcollector-<input_name>という形式になります。たとえば、collector-http-receiverです。
9.5.4.1. 監査ログを HTTP サーバーとして受信するようにコレクターを設定する リンクのコピーリンクがクリップボードにコピーされました!
ClusterLogForwarder カスタムリソース (CR) で http をレシーバー入力として指定すると、HTTP 接続をリッスンして監査ログを HTTP サーバーとして受信するようにログコレクターを設定できます。これにより、OpenShift Container Platform クラスターの内部と外部の両方から収集された監査ログに共通のログストアを使用できるようになります。
前提条件
- 管理者権限がある。
-
OpenShift CLI (
oc) がインストールされている。 - Red Hat OpenShift Logging Operator がインストールされている。
-
ClusterLogForwarderCR が作成されている。
手順
ClusterLogForwarderCR を変更して、httpレシーバー入力の設定を追加します。マルチログフォワーダーデプロイメントを使用している場合の
ClusterLogForwarderCR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 従来のデプロイメントを使用している場合の
ClusterLogForwarderCR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ClusterLogForwarderCR に変更を適用します。oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.5. Fluentd ログフォワーダーの高度な設定 リンクのコピーリンクがクリップボードにコピーされました!
Fluentd は非推奨となっており、今後のリリースで削除される予定です。Red Hat は、現在のリリースのライフサイクル中にこの機能のバグ修正とサポートを提供しますが、この機能は拡張されなくなりました。Fluentd の代わりに、Vector を使用できます。
ロギングには、Fluentd ログフォワーダーのパフォーマンスチューニングに使用できる複数の Fluentd パラメーターが含まれます。これらのパラメーターを使用すると、以下の Fluentd の動作を変更できます。
- チャンクおよびチャンクのバッファーサイズ
- チャンクのフラッシュ動作
- チャンク転送の再試行動作
Fluentd は、チャンク という単一の Blob でログデータを収集します。Fluentd がチャンクを作成する際に、チャンクは ステージ にあると見なされます。ここでチャンクはデータで一杯になります。チャンクが一杯になると、Fluentd はチャンクを キュー に移動します。ここでチャンクはフラッシュされる前か、送信先に書き込まれるまで保持されます。Fluentd は、ネットワークの問題や送信先での容量の問題などのさまざまな理由でチャンクをフラッシュできない場合があります。チャンクをフラッシュできない場合、Fluentd は設定通りにフラッシュを再試行します。
OpenShift Container Platform のデフォルトで、Fluentd は 指数関数的バックオフ 方法を使用してフラッシュを再試行します。この場合、Fluentd はフラッシュを再試行するまで待機する時間を 2 倍にします。これは、送信先への接続要求を減らすのに役立ちます。指数バックオフを無効にし、代わりに 定期的な 再試行方法を使用できます。これは、指定の間隔でチャンクのフラッシュを再試行します。
これらのパラメーターは、待ち時間とスループット間のトレードオフを判断するのに役立ちます。
- Fluentd のスループットを最適化するには、これらのパラメーターを使用して、より大きなバッファーおよびキューを設定し、フラッシュを遅延し、再試行の間隔の長く設定することで、ネットワークパケット数を減らすことができます。より大きなバッファーにはノードのファイルシステムでより多くの領域が必要になることに注意してください。
- 待機時間が低い場合に最適化するには、パラメーターを使用してすぐにデータを送信し、バッチの蓄積を回避し、キューとバッファーが短くして、より頻繁にフラッシュおよび再試行を使用できます。
ClusterLogging カスタムリソース (CR) で以下のパラメーターを使用して、チャンクおよびフラッシュ動作を設定できます。次に、パラメーターは Fluentd で使用するために Fluentd config map に自動的に追加されます。
これらのパラメーターの特徴は以下の通りです。
- ほとんどのユーザーには関連性がありません。デフォルト設定で、全般的に良いパフォーマンスが得られるはずです。
- Fluentd 設定およびパフォーマンスに関する詳しい知識を持つ上級ユーザーのみが対象です。
- パフォーマンスチューニングのみを目的とします。ロギングの機能面に影響を与えることはありません。
| パラメーター | 説明 | デフォルト |
|---|---|---|
|
| 各チャンクの最大サイズ。Fluentd はこのサイズに達するとデータのチャンクへの書き込みを停止します。次に、Fluentd はチャンクをキューに送信し、新規のチャンクを開きます。 |
|
|
| ステージおよびキューの合計サイズであるバッファーの最大サイズ。バッファーサイズがこの値を超えると、Fluentd はデータのチャンクへの追加を停止し、エラーを出して失敗します。チャンクにないデータはすべて失われます。 | ノードディスクの約 15% がすべての出力に分散されます。 |
|
|
チャンクのフラッシュの間隔。 |
|
|
| フラッシュを実行する方法:
|
|
|
| チャンクのフラッシュを実行するスレッドの数。スレッドの数を増やすと、フラッシュのスループットが改善し、ネットワークの待機時間が非表示になります。 |
|
|
| キューが一杯になると、チャンク動作は以下のようになります。
|
|
|
|
|
|
|
| フラッシュに失敗する場合の再試行方法:
|
|
|
| レコードが破棄される前に再試行を試みる最大時間間隔。 |
|
|
| 次のチャンクのフラッシュまでの時間 (秒単位)。 |
|
Fluentd チャンクのライフサイクルの詳細は、Fluentd ドキュメントの Buffer Plugins を参照してください。
手順
openshift-loggingプロジェクトでClusterLoggingカスタムリソース (CR) を編集します。oc edit ClusterLogging instance
$ oc edit ClusterLogging instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のパラメーターを追加または変更します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 各チャンクの最大サイズを指定してから、フラッシュ用にキューに入れます。
- 2
- チャンクのフラッシュの間隔を指定します。
- 3
- チャンクのフラッシュを実行する方法を指定します (
lazy、interval、またはimmediate)。 - 4
- チャンクのフラッシュに使用するスレッドの数を指定します。
- 5
- キューが一杯になる場合のチャンクの動作を指定します (
throw_exception、block、またはdrop_oldest_chunk)。 - 6
exponential_backoffチャンクのフラッシュ方法に対して、最大の間隔 (秒単位) を指定します。- 7
- チャンクのフラッシュが失敗する場合の再試行タイプ (
exponential_backoffまたはperiodic) を指定します。 - 8
- 次のチャンクのフラッシュまでの時間 (秒単位) を指定します。
- 9
- チャンクバッファーの最大サイズを指定します。
Flunentd Pod が再デプロイされていることを確認します。
oc get pods -l component=collector -n openshift-logging
$ oc get pods -l component=collector -n openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規の値が
fluentdconfig map にあることを確認します。oc extract configmap/collector-config --confirm
$ oc extract configmap/collector-config --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow fluentd.conf の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow