Fluentbitのカスタマイズ(イメージのビルド)が必要な場合、実案件でインフラ担当者が行うのが困難になる。そのため、どのようなケースでカスタマイズが必要か調査した。
※PJの役割分担上、Fluentbitのサイドカー含めたタスク定義全般にインフラ担当者では行わないという仕切りであれば気にする必要はない。ECSにおける、役割分担の推奨はこちら。
目次
Fluentbitビルドによるカスタマイズ無しで可能なこと。(タスク定義設定のみで可能なこと)
- 以下のいずれかへ1か所へのログ送付が可能。
- CloudWatch
- S3
- Firehose
- ログのフィルタ
S3にログ転送する場合のタスク定義記載例(抜粋):
"logConfiguration": {
"logDriver": "awsfirelens",
"options": {
"bucket": "demo-fluent-bit-bucketnmae",
"total_file_size": "1M",
"use_put_object": "On",
"region": "ap-northeast-1",
"Name": "s3"
}
},
Firehoseにログ転送する場合のタスク定義記載例(抜粋):
"logConfiguration": {
"logDriver": "awsfirelens",
"options": {
"Name": "firehose",
"region": "us-west-2",
"delivery_stream": "my-stream",
"log-driver-buffer-limit": "2097152"
}
},
タスク定義によるFluentbit (awsfirelens) 設定の補足
上記のように、タスク定義で設定した内容は、Fluentbitの設定ファイル(/fluent-bit/etc/fluent-bit.conf) に追記される。
上記Firehoseにログ転送するタスク定義を設定した場合の /fluent-bit/etc/fluent-bit.conf に追記される記述
[OUTPUT]
Name firehose
Match app-firelens*
region us-west-2
delivery_stream my-stream
カスタマイズが必要になるケース
- 2か所以上に同時に送付する場合
- ログをパース(データの整形、構造化)したい場合。
- 特定条件のログにタグを割り当てて、タグごとに転送先を振り分ける場合。
カスタマイズ方法
- カスタマイズ用confを作成し、Fluentbitに読み込ませる必要がある。公式では、extra.confとあるが、名前は任意に決めれる。以降便宜的にカスタマイズ用のconfは、extra.confという名称とする。
- extra.confの読み込み方法は以下。extra.confファイル自体の格納と、読み込み設定の2Stepが必要。
- ケース1
- FluentbitのDockerfile内で、extra.confをコンテナ内にコピー(格納)する処理を記述
- FluentbitのDockerfile内で、Fluent-bit.confをコンテナ内にコピー(格納)する処理を記述。
- Fluent-bit.conf内にextra.confを読み込む記述(例:@INCLUDE /fluent-bit-conf/conf/extra.conf)を追記。
- DockerfileをビルドしてFluentbitのカスタムイメージを作成
- ケース2
- FluentbitのDockerfile内で、extra.confをコンテナ内にコピー(格納)する処理を記述
- FluentbitのDockerfile内で、Fluent-bit.confをコンテナ内にコピー(格納)する処理を記述。
- タスク定義内で、コンテナ内のextra.confを読み込む設定を行う。
- DockerfileをビルドしてFluentbitのカスタムイメージを作成
- ケース3(fargateでは使えないため注意、EC2上のコンテナのみ可)
- S3にextra.confを格納する。
- タスク定義内で、S3からextra.confを読み込む設定を行う。
- ケース1