第13章 パフォーマンスと信頼性のチューニング


13.1. フロー制御メカニズム

ログの生成速度が収集できる速度よりも速い場合、出力に送信されるログの量の予測や制御が困難になることがあります。出力に送信されるログの量を予測または制御できないと、ログが失われる可能性があります。システムの停止が発生し、ユーザーの制御なしにログバッファーが蓄積されると、接続が復元されるときに回復時間と遅延が長くなることもあります。

管理者は、ログのフロー制御メカニズムを設定することで、ログの速度を制限できます。

13.1.1. フロー制御メカニズムの利点

  • ログのコストと量をより正確に事前予測できます。
  • ノイズの多いコンテナーが無制限に生成するログトラフィックにより、他のコンテナーのログが埋もれることがなくまります。
  • 価値の低いログを無視することで、ロギングインフラストラクチャーの負荷が軽減されます。
  • レート制限を引き上げることで、値の高いログを値の低いログよりも優先することができます。

13.1.2. レート制限の設定

レート制限はコレクターごとに設定されます。つまり、ログ収集の最大レートはコレクターインスタンスの数にレート制限を掛けたものになります。

ログは各ノードのファイルシステムから収集されるため、各クラスターノードにコレクターがデプロイされます。たとえば、3 ノードクラスターでは、コレクターあたりの最大レート制限が 1 秒あたり 10 レコードの場合、ログ収集の最大レートは 1 秒あたり 30 レコードになります。

出力に書き込まれるレコードの正確なバイトサイズは、変換、エンコーディングの違い、その他の要因によって異なる可能性があるため、レート制限はバイト数ではなくレコード数で設定されます。

ClusterLogForwarder カスタムリソース (CR) でレート制限を設定するには、次の 2 つの方法があります。

出力レート制限
出力のネットワークやストレージ容量などに合わせて、選択した出力への送信ログの速度を制限します。出力レート制限では、出力ごとの集約レートを制御します。
入力レート制限
選択したコンテナーのコンテナーごとのログ収集レートを制限します。

13.1.3. ログフォワーダーの出力レート制限の設定

ClusterLogForwarder カスタムリソース (CR) を設定することで、送信ログのレートを指定の出力に制限できます。

前提条件

  • Red Hat OpenShift Logging Operator がインストールされている。
  • 管理者権限がある。

手順

  1. 特定の出力の ClusterLogForwarder CR に maxRecordsPerSecond 制限値を追加します。

    次の例は、kafka-example という名前の Kafka ブローカー出力のコレクターごとの出力レート制限を設定する方法を示しています。

    ClusterLogForwarder CR の例

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
    # ...
    spec:
    # ...
      outputs:
        - name: kafka-example 1
          type: kafka 2
          limit:
            maxRecordsPerSecond: 1000000 3
    # ...

    1
    出力名。
    2
    出力のタイプ。
    3
    ログの出力レート制限。この値は、1 秒あたりに Kafka ブローカーに送信できるログの 最大量 を設定します。この値はデフォルトでは設定されていません。デフォルトの動作はベストエフォートであり、ログフォワーダーが処理が追いつかない場合、レコードが削除されます。この値が 0 の場合、ログは転送されません。
  2. ClusterLogForwarder CR を適用します。

    コマンドの例

    $ oc apply -f <filename>.yaml

13.1.4. ログフォワーダーの入力レート制限の設定

ClusterLogForwarder カスタムリソース (CR) を設定することで、収集される受信ログの速度を制限できます。コンテナーごとまたは namespace ごとに入力制限を設定できます。

前提条件

  • Red Hat OpenShift Logging Operator がインストールされている。
  • 管理者権限がある。

手順

  1. 特定の入力の ClusterLogForwarder CR に maxRecordsPerSecond 制限値を追加します。

    さまざまなシナリオで入力レート制限を設定する方法を以下に例示します。

    特定のラベルを持つコンテナーに対してコンテナーごとの制限を設定する ClusterLogForwarder CR の例

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
    # ...
    spec:
    # ...
      inputs:
        - name: <input_name> 1
          application:
            selector:
              matchLabels: { example: label } 2
            containerLimit:
              maxRecordsPerSecond: 0 3
    # ...

    1
    入力の名前。
    2
    ラベルのリスト。これらのラベルが Pod に適用されているラベルと一致する場合、maxRecordsPerSecond フィールドに指定したコンテナーごとの制限がそれらのコンテナーに適用されます。
    3
    レート制限を設定します。maxRecordsPerSecond フィールドを 0 に設定すると、コンテナーでログが収集されません。maxRecordsPerSecond フィールドを他の値に設定すると、コンテナーで 1 秒あたりの最大数のレコードが収集されます。

    選択した namespace 内のコンテナーごとに制限を設定する ClusterLogForwarder CR の例

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
    # ...
    spec:
    # ...
      inputs:
        - name: <input_name> 1
          application:
            namespaces: [ example-ns-1, example-ns-2 ] 2
            containerLimit:
              maxRecordsPerSecond: 10 3
        - name: <input_name>
          application:
            namespaces: [ test ]
            containerLimit:
              maxRecordsPerSecond: 1000
    # ...

    1
    入力の名前。
    2
    namespace のリスト。maxRecordsPerSecond フィールドで指定したコンテナーごとの制限が、リストした namespace 内のすべてのコンテナーに適用されます。
    3
    レート制限を設定します。maxRecordsPerSecond フィールドを 10 に設定すると、リストした namespace 内の各コンテナーで 1 秒あたり最大 10 レコードが収集されます。
  2. ClusterLogForwarder CR を適用します。

    コマンドの例

    $ oc apply -f <filename>.yaml

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.