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 とメモリー制限の両方への調整を許可します。

手順

  1. 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
                cpu: 250m
                memory: 1Gi
              requests:
                cpu: 250m
                memory: 1Gi
    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 です。このパラメーターは、Fluentd chunk_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 パラメーターは Fluentd queue_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
1
Fluentd ファイル バッファープラグイン。この値は変更しないでください。
2
バッファーチャンクが格納されるパス。

前提条件

  • クラスターロギングを管理外の状態に設定する。管理外の状態の Operator はサポートされず、クラスター管理者は個々のコンポーネント設定およびアップグレードを完全に制御していることを前提としています。

手順

バッファーチャンク制限を設定するには、以下を実行します。

  1. fluentd Daemonset で以下のいずれかのパラメーターを編集します。

    spec:
      template:
        spec:
          containers:
              env:
              - name: FILE_BUFFER_LIMIT 1
                value: "256"
              - name: BUFFER_SIZE_LIMIT 2
                value: 8Mi
    1
    出力ごとに Fluentd ファイルバッファーサイズを指定します。
    2
    各 Fluentd バッファーチャンクの最大サイズを指定します。

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 コンソールの MonitoringAlerts ページに一覧表示されます。アラートは以下の状態のいずれかになります。

  • Firingアラートの状態はタイムアウトの期間は true になります。Firing アラートの末尾の Option メニューをクリックし、詳細情報を表示するか、アラートを非通知 (silence) にします。
  • Pending: このアラート状態は現時点で true ですが、タイムアウトに達していません。
  • Not Firingアラートは現時点でトリガーされていません。

表7.3 Fluentd Prometheus アラート

アラートメッセージ説明重大度

FluentdErrorsHigh

In the last minute, <value> errors reported by fluentd <instance>.

Fluentd は指定した数 (デフォルトでは 10) よりも多くの問題を報告しています。

Critical

FluentdNodeDown

Prometheus could not scrape fluentd <instance> for more than 10m.

Fluentd は Prometheus が特定の Fluentd インスタンスを収集できなかったことを報告します。

Critical

FluentdQueueLengthBurst

In the last minute, fluentd <instance> buffer queue length increased more than 32.Current value is <value>.

Fluentd は値が大きすぎることを報告しています。

Warning

FluentdQueueLengthIncreasing

In the last 12h, fluentd <instance> buffer queue length constantly increased more than 1.Current value is <value>.

Fluentd はキューの使用についての問題を報告しています。

Critical


このページには機械翻訳が使用されている場合があります (詳細はこちら)。