エージェント設定ファイルを理解する
ロギング・エージェント は、Fluent Bit ベースの設定ファイルを使用して、受信データがルーティングされる前にどのように処理されるかを決定します。
エージェントのコンフィギュレーション・ファイルを構成する際には、以下の情報を考慮してください:
- スキーマは複数のセクションに分かれている。
- Fluent Bit コマンドを使って、設定ファイルを単純化し、読みやすくすることができます。
- シェルの環境変数を設定するか、@SETコマンドを使うことで、コンフィギュレーション変数を公開することができる。
セクション
Fluent Bit 構成のスキーマは、複数のセクションに分かれています。
- セクションは括弧内の名前で定義される。
- 設定できるセクションは4種類ある:
Service、Input、Filter、Outputです。 - セクションは1つ以上のエントリーを含むことができる。
- エントリーは、キーと値を含むテキスト行で定義される。 キーはインデントされ、改行で終わる値を含まなければならない。 スペース4つ分の字下げを考慮すること。
以下の図は、各セクションの適用順序を示している:
{: caption="処理順*セクションのフルエント・ビット処理順
サービスセクション
SERVICE セクションを設定して、サービスのグローバルプロパティを定義することができます。
次の表は、SERVICE セクションで定義できるキーの一覧です:
| キー | 説明 | デフォルト値 |
|---|---|---|
flush |
入力プラグインで取り込まれたレコードを出力プラグインで流す時間をseconds.nanosecondsで設定する。 | 5 |
log_file |
他のログファイルの絶対パス。 | デフォルトでは、ログは標準エラーインターフェース(stderr)にリダイレクトされる。 |
log_level |
ロギングの冗長性レベルを設定する。 有効な値は off、error、warn、info、debug、trace。 値は累積されることに注意。 たとえば、debug が設定されていれば、error、warning、info、debug が含まれます。 |
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 |
ロギングの冗長性レベルを設定する。 有効な値は off、error、warn、info、debug、trace。 値は累積されることに注意。 たとえば、debug が設定されていれば、error、warning、info、debug が含まれます。 設定されていない場合は、SERVICE セクションの Log_Level の値がデフォルトになります。 |
オプション |
Path |
ログ記録が読み込まれる場所を設定します。
Kubernetes のログについては、デフォルトでは IBM Cloud Logs ロギング・エージェント は |
オプション |
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 |
ロギングの冗長性レベルを設定する。 有効な値は off、error、warn、info、debug、trace。 値は累積されることに注意。 たとえば、debug が設定されていれば、error、warning、info、debug が含まれます。 設定されていない場合は、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 |
ロギングの冗長性レベルを設定する。 有効な値は off、error、warn、info、debug、trace。 値は累積されることに注意。 たとえば、debug が設定されていれば、error、warning、info、debug が含まれます。 設定されていない場合は、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}