エージェント設定ファイルを理解する

ロギング・エージェント は、Fluent Bit ベースの設定ファイルを使用して、受信データがルーティングされる前にどのように処理されるかを決定します。

エージェントのコンフィギュレーション・ファイルを構成する際には、以下の情報を考慮してください:

  • スキーマは複数のセクションに分かれている。
  • Fluent Bit コマンドを使って、設定ファイルを単純化し、読みやすくすることができます。
  • シェルの環境変数を設定するか、@SETコマンドを使うことで、コンフィギュレーション変数を公開することができる。

セクション

Fluent Bit 構成のスキーマは、複数のセクションに分かれています。

  • セクションは括弧内の名前で定義される。
  • 設定できるセクションは4種類ある:ServiceInputFilterOutput です。
  • セクションは1つ以上のエントリーを含むことができる。
  • エントリーは、キーと値を含むテキスト行で定義される。 キーはインデントされ、改行で終わる値を含まなければならない。 スペース4つ分の字下げを考慮すること。

以下の図は、各セクションの適用順序を示している:

![](../images/logging-agent-plugin-flow.svg "のフルエント・ビット処理順セクションのフルエント・ビット処理順" caption-side="bottom"}の"){: caption="処理順*セクションのフルエント・ビット処理順

サービスセクション

SERVICE セクションを設定して、サービスのグローバルプロパティを定義することができます。

次の表は、SERVICE セクションで定義できるキーの一覧です:

サービス・カイズ
キー 説明 デフォルト値
flush 入力プラグインで取り込まれたレコードを出力プラグインで流す時間をseconds.nanosecondsで設定する。 5
log_file 他のログファイルの絶対パス。 デフォルトでは、ログは標準エラーインターフェース(stderr)にリダイレクトされる。
log_level ロギングの冗長性レベルを設定する。 有効な値は offerrorwarninfodebugtrace。 値は累積されることに注意。 たとえば、debug が設定されていれば、errorwarninginfodebug が含まれます。 info
parsers_file パーサーの設定ファイルのパス。 セクションの中に複数の Parsers_File エントリを定義することができます。

サポートされる追加キーの詳細については、サービス・セクションのプロパティを参照してください。

例えば、SERVICEセクションのサンプルは以下のようになる:

[SERVICE]
      Flush                   1
      Log_Level               info
      Daemon                  off
      Parsers_File            parsers.conf
      plug-ins_File           plug-ins.conf
      HTTP_Server             On
      HTTP_Listen             0.0.0.0
      HTTP_Port               8081
      Health_Check            On
      HC_Errors_Count         1
      HC_Retry_Failure_Count  1
      HC_Period               30
      storage.path            /fluent-bit/cache
      storage.max_chunks_up   192
      storage.metrics         On

INPUTセクション

INPUT セクションを構成して、Fluent Bit がデータを収集できるソースを定義できます。

次の表に、INPUT セクションに設定できるキーの概要を示します:

入力キー
キー 説明 ステータス
Name 入力プラグインの名前。 Fluent Bit がどの入力プラグインをロードするかを決定します。 必須
Tag このプラグインからのすべてのレコードに関連付けられるタグ。 ダイナミックタグを提供するinput forwardプラグインを除くすべてのプラグインに必要。
Log_Level ロギングの冗長性レベルを設定する。 有効な値は offerrorwarninfodebugtrace。 値は累積されることに注意。 たとえば、debug が設定されていれば、errorwarninginfodebug が含まれます。 設定されていない場合は、SERVICE セクションの Log_Level の値がデフォルトになります。 オプション
Path ログ記録が読み込まれる場所を設定します。

Kubernetes のログについては、デフォルトでは IBM Cloud Logs ロギング・エージェント は /var/log/containers/*.log ディレクトリからのみログを収集します。 /var/log の下にあるすべてのサブディレクトリからログを収集したい場合は、 /var/log/**/*.logPath パラメータに追加する必要があります。

オプション

INPUT プラグインの詳細については、入力プラグインを参照してください。

INPUT プラグインは、表に示したものに加えて、独自の設定キーを持っています。

例えば、INPUT セクションのサンプルは次のようになる:

[INPUT]
    # Comment
    Name tail
    Tag  kube.*
    log_level info

FILTERセクション

FILTER セクションは、FILTER プラグインに関連するデータを、送信先に送る前に変換するように設定できます。

次の表は、FILTER セクションに設定できるキーの概要です:

フィルター・キー
キー 説明 ステータス
Name フィルタープラグインの名前。 Fluent Bit がどのフィルタープラグインを読み込むかを決定します。 必須
Match 受信レコードに定義されているタグとのマッチに使われるパターン。Match は大文字小文字を区別します。 アスタリスク文字 * はワイルドカードとして使用できます。 必須 [*]
Match_Regex 受信レコードに定義されたタグとのマッチに使用される正規表現。 完全な正規表現構文を使うにはこのオプションを使う。 必須 [*]
Log_Level ロギングの冗長性レベルを設定する。 有効な値は offerrorwarninfodebugtrace。 値は累積されることに注意。 たとえば、debug が設定されていれば、errorwarninginfodebug が含まれます。 設定されていない場合は、SERVICE セクションの Log_Level の値がデフォルトになります。 オプション

[*] Match キー、 キー、またはその両方を設定できる。 Match_Regex 必ず1つは設定しなければならない。 両方を設定した場合は、Match_Regex が優先されます。

例えば、FILTERセクションのサンプルは以下のようになる:

[FILTER]
    Name  kubernetes
    Match kube.*
    log_level info

OUTPUTセクション

OUTPUT セクションを設定して、Fluent Bit が Tag にマッチした後にデータを送信する先を定義できます。

Fluent Bit は最大 256 個の OUTPUT プラグインをルーティングできます。

以下の表に、OUTPUTセクションで設定できるキーの概要を示します:

出力キー
キー 説明 ステータス
Name 出力プラグインの名前。 どの出力プラグインがFluent Bitによってロードされるべきかを決定します。 必須
Match 受信レコードに定義されているタグとのマッチに使われるパターン。Match は大文字小文字を区別します。 アスタリスク文字 * はワイルドカードとして使用できます。 必須 [*]
Match_Regex 受信レコードに定義されたタグとのマッチに使用される正規表現。 完全な正規表現構文を使うにはこのオプションを使う。 必須 [*]
Log_Level ロギングの冗長性レベルを設定する。 有効な値は offerrorwarninfodebugtrace。 値は累積されることに注意。 たとえば、debug が設定されていれば、errorwarninginfodebug が含まれます。 設定されていない場合は、SERVICE セクションの Log_Level の値がデフォルトになります。 オプション

[*] Match キー、 キー、またはその両方を設定できる。 Match_Regex 必ず1つは設定しなければならない。 両方を設定した場合は、Match_Regex が優先されます。

例えば、logger-icl-output-plugin のOUTPUTセクションは以下のようなものだ:

    [OUTPUT]
        Name logger-icl-output-plugin
        Id icl-output-plugin
        Match *
        Retry_Limit 8

        # Connection
        Target_Host REPLACE_INGESTER_HOST
        Target_Port REPLACE_INGESTER_PORT
        Target_Path /logs/v1/singles

        # Authentication
        Authentication_Mode REPLACE_IAM_AUTH_MODE
        IAM_Environment REPLACE_IAM_ENVIRONMENT
        REPLACE_TRUSTED_PROFILE_ID
        CR_Token_Mount_Path /var/run/secrets/tokens/vault-token

        # Logging
        Logging_Level info

        # Buffer storage
        storage.total_limit_size 5G

logger-icl-output-plugin は、Fluent Bit 組み込みのヘルスチェックを使います。 ポッドは、プラグインが少なくとも1つのエラーを投げるか、30秒の間にリトライの制限を使い果たしたときに、不健全であるとみなされる。

変数

Fluent Bitでは、環境変数を使って、Fluent Bitの設定ファイルで定義されているキーの値を設定することができます。

変数は大文字と小文字を区別する。

変数を表すには以下の書式を使用する:

${MY_VARIABLE}

環境変数を定義するには、bashの構文を使う。

環境変数を定義するには、以下のいずれかのオプションを選択します:

  • ターミナルを開き、exportコマンドを使って環境変数を設定する。

    たとえば、次のように定義できる:$ export MY_VARIABLE=stdout.

    Fluent Bit が起動すると、設定リーダーは MY_VARIABLE という名前の環境変数を探します。

  • 公式パッケージを使ってsystemd上でFluent Bitを動作させる場合は、以下のいずれかのファイルに環境変数を設定してください:/etc/default/fluent-bit (Debian ベースのシステム) または /etc/sysconfig/fluent-bit (その他のシステム).

例えば、ターミナルを開き、環境変数を設定します:$ export MY_OUTPUT=stderr それから、以下の設定ファイルを作成する:

[INPUT]
    Name              tail
    Tag               kube.*

[OUTPUT]
    Name  ${MY_OUTPUT}
    Match kube.*

環境変数 ${MY_OUTPUT} で設定されるように定義されているキーNameがstderrに設定される。

コマンド

Fluent Bit コマンドを使って、設定ファイルを単純化し、読みやすくすることができます。

次の表は、使用できるコマンドの概要です:

サポートされるコマンド
コマンド 説明
@INCLUDE 設定ファイルを含める。 @INCLUDE <FILE>
@SET 設定変数を設定する。 @SET KEY=VAL

INCLUDE コマンド

複雑で長い設定ファイルを避けるために、@INCLUDE コマンドを使って、メインのFluent Bit設定ファイルを複数のファイルに分割することができます。 @INCLUDE コマンドを使うと、外部ファイルをインクルードできます。

以下のフォーマットに従ったエントリーを追加することで、追加のコンフィギュレーション・ファイルを含めることができる:

@INCLUDE <FILE>

@INCLUDE コマンドを使うときは、以下の情報を考慮してください:

  • 設定行の左上レベルで @INCLUDE コマンドを使うことができる。
  • セクションの中に @INCLUDE コマンドを含めることはできません。
  • ワイルドカード文字(*)を使うと、複数のファイルをインクルードできます。 例えば @INCLUDE input_*.conf.
  • ワイルドカード (*) を使って複数のファイルをインクルードする場合、ワイルドカード文字にマッチするファイルはソートされずにインクルードされます。 ファイル間の順序を保持する必要がある場合は、ファイルを希望する順序で明示的に含める必要があります。
  • 定義したパスはすべて、ルート・コンフィギュレーション・ファイルからの相対パスとして読み込まれる。

以下に例を示します。

@INCLUDE somefile.conf

SET コマンド

@SET コマンドを使って、Fluent Bit の設定に設定変数を注入することができます。

  • 各行のルートレベルで @SET コマンドを使うことができます。
  • セクションの中では @SET コマンドは使えません。

例えば、以下のような変数を設定し、それを使ってさまざまなキーを設定することができる:

@SET my_input=abc
@SET my_output=def

[SERVICE]
    Flush 1

[INPUT]
    Name ${my_input}

[OUTPUT]
    Name ${my_output}