7.7. ロギングコレクターの設定
OpenShift Container Platform は Fluentd を使用して、クラスターから操作およびアプリケーションログを収集し、Kubernetes Pod および Namespace メタデータでデータを拡充します。
ログローテーション、ログの位置を設定し、外部のログアグリゲーターを使用し、ログコレクターの他の設定を行うことができます。
特に指示がない場合は、これらの設定を実行する前にクラスターロギングを管理外の状態に設定する必要があります。詳細は、「クラスターロギングの管理状態の変更」を参照してください。
管理外の状態の Operator はサポートされず、クラスター管理者は個々のコンポーネント設定およびアップグレードを完全に制御していることを前提としています。
詳細は、管理外の Operator のサポートポリシーについて参照してください。
7.7.1. ロギングコレクター Pod の表示
oc get pods --all-namespaces -o wide
コマンドを使用して、Fluentd がデプロイされるノードを表示できます。
手順
openshift-logging
プロジェクトで以下のコマンドを実行します。
$ oc get pods --all-namespaces -o wide | grep fluentd NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES fluentd-5mr28 1/1 Running 0 4m56s 10.129.2.12 ip-10-0-164-233.ec2.internal <none> <none> fluentd-cnc4c 1/1 Running 0 4m56s 10.128.2.13 ip-10-0-155-142.ec2.internal <none> <none> fluentd-nlp8z 1/1 Running 0 4m56s 10.131.0.13 ip-10-0-138-77.ec2.internal <none> <none> fluentd-rknlk 1/1 Running 0 4m56s 10.128.0.33 ip-10-0-128-130.ec2.internal <none> <none> fluentd-rsm49 1/1 Running 0 4m56s 10.129.0.37 ip-10-0-163-191.ec2.internal <none> <none> fluentd-wjt8s 1/1 Running 0 4m56s 10.130.0.42 ip-10-0-156-251.ec2.internal <none> <none>
7.7.2. ログコレクター CPU およびメモリー制限の設定
ログコレクターは、CPU とメモリー制限の両方への調整を許可します。
手順
openshift-logging
プロジェクトでクラスターロギングのカスタムリソース (CR) を編集します。$ oc edit ClusterLogging instance
$ oc edit ClusterLogging instance apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" .... spec: collection: logs: fluentd: resources: limits: 1 memory: 736Mi requests: cpu: 100m memory: 736Mi
- 1
- 必要に応じて CPU、メモリー制限および要求を指定します。表示される値はデフォルト値です。
7.7.3. Fluentd のバッファーチャンク制限の設定
Fluentd ログコレクターが多数のログを処理できない場合、Fluentd はメモリーの使用量を減らし、データ損失を防ぐためにファイルバッファリングを実行します。
Fluentd ファイルバッファリングは、記録を chunks に保管します。チャンクは buffers に保管されます。
Fluentd Daemonset で環境変数を編集して、クラスターでファイルバッファリングを調整できます。
Fluentd Daemonset で FILE_BUFFER_LIMIT
または BUFFER_SIZE_LIMIT
パラメーターを変更するには、クラスターロギングを管理外 (unmanaged) の状態に設定する必要があります。管理外の状態の Operator はサポートされず、クラスター管理者は個々のコンポーネント設定およびアップグレードを完全に制御していることを前提としています。
BUFFER_SIZE_LIMITこのパラメーターは、Fluentd が新規チャンクを作成する前に各チャンクファイルの最大サイズを決定します。デフォルトは
8M
です。このパラメーターは、Fluentdchunk_limit_size
変数を設定します。高い値の
BUFFER_SIZE_LIMIT
の場合、チャンクファイルごとにより多くのレコードを収集できます。ただし、レコードのサイズが大きくなると、ログストアに送信されるまでにより長い時間がかかります。FILE_BUFFER_LIMITこのパラメーターは、ログ出力ごとにファイルバッファーサイズを決定します。この値は、Fluentd Pod がスケジュールされるノードの利用可能な領域をベースとする要求のみになります。OpenShift Container Platform では、Fluentd がノードの容量を超えることを許可しません。デフォルトは
256Mi
です。高い値の
FILE_BUFFER_LIMIT
は出力数に基づいてより高い値のBUFFER_QUEUE_LIMIT
に変換される可能性があります。ただし、ノードの領域が不足すると、Fluentd は失敗する可能性があります。デフォルトで、
number_of_outputs
は、すべてのログが単一リソースに送信され、追加のリソースごとに1
つずつ増分する場合に1
になります。ログ転送 API、Fluentd Forward プロトコル、または syslog プロトコルを使用してログを外部の場所に転送する場合、複数の出力がある可能性があります。永続的なボリュームサイズは、
FILE_BUFFER_LIMIT
に出力数を乗算した結果よりも大きくなければなりません。BUFFER_QUEUE_LIMIT.このパラメーターは、許可されるバッファーチャンクの最大数です。
BUFFER_QUEUE_LIMIT
パラメーターは直接調整できません。OpenShift Container Platform は、この値を利用可能なロギングの出力数、チャンクサイズ、およびファイルシステム領域に基づいて計算します。デフォルトは32
チャンクです。BUFFER_QUEUE_LIMIT
を変更するには、FILE_BUFFER_LIMIT
の値を変更する必要があります。BUFFER_QUEUE_LIMIT
パラメーターは Fluentdqueue_limit_length
パラメーターを設定します。OpenShift Container Platform は
BUFFER_QUEUE_LIMIT
を(FILE_BUFFER_LIMIT / (number_of_outputs * BUFFER_SIZE_LIMIT))
として計算します。デフォルトの値のセットを使用すると、
BUFFER_QUEUE_LIMIT
の値は 32 になります。-
FILE_BUFFER_LIMIT = 256Mi
-
number_of_outputs = 1
-
BUFFER_SIZE_LIMIT = 8Mi
-
OpenShift Container Platform は Fluentd ファイル バッファープラグイン を使用してチャンクを保存する方法を設定します。以下のコマンドを使用してバッファーファイルの場所を確認できます。
$ oc get cm fluentd -o json | jq -r '.data."fluent.conf"'
<buffer> @type file 1 path '/var/lib/flunetd/retry-elasticseach' 2
前提条件
- クラスターロギングを管理外の状態に設定する。管理外の状態の Operator はサポートされず、クラスター管理者は個々のコンポーネント設定およびアップグレードを完全に制御していることを前提としています。
手順
バッファーチャンク制限を設定するには、以下を実行します。
7.7.4. 環境変数を使用したロギングコレクターの設定
環境変数を使用して Fluentd ログコレクターの設定を変更することができます。
利用可能な環境変数の一覧については、Github の Fluentd README を参照してください。
前提条件
- クラスターロギングを管理外の状態に設定する。管理外の状態の Operator はサポートされず、クラスター管理者は個々のコンポーネント設定およびアップグレードを完全に制御していることを前提としています。
手順
必要に応じて Fluentd 環境変数のいずれかを設定します。
oc set env ds/fluentd <env-var>=<value>
以下は例になります。
oc set env ds/fluentd LOGGING_FILE_AGE=30
7.7.5. ロギングコレクターのアラートについて
以下のアラートはロギングコレクターによって生成され、Prometheus UI の Alerts タブに表示できます。
すべてのロギングコレクターアラートは、OpenShift Container Platform Web コンソールの Monitoring
- Firingアラートの状態はタイムアウトの期間は true になります。Firing アラートの末尾の Option メニューをクリックし、詳細情報を表示するか、アラートを非通知 (silence) にします。
- Pending: このアラート状態は現時点で true ですが、タイムアウトに達していません。
- Not Firingアラートは現時点でトリガーされていません。
アラート | メッセージ | 説明 | 重大度 |
---|---|---|---|
|
| Fluentd は指定した数 (デフォルトでは 10) よりも多くの問題を報告しています。 | Critical |
|
| Fluentd は Prometheus が特定の Fluentd インスタンスを収集できなかったことを報告します。 | Critical |
|
| Fluentd は値が大きすぎることを報告しています。 | Warning |
|
| Fluentd はキューの使用についての問題を報告しています。 | Critical |