AWS FirelensはECSのタスク定義でログルーターの統合を有効にするだけで簡単に
FluentBitまたはFluentdのサイドカーコンテナをタスクに追加してログの操作を移譲できます。
バックエンドはFluentBitかFluentdが選択可能ですが今回はFluentBitを選択します。
Firelensで使用されるFluentBitのDockerイメージはaws-for-fluent-bitという名称でAmazon ECRやDocerHubで提供されています。
- Amazon ECR
- DockerHub
今回は、Firelensで動作するFluentBitコンテナに独自のカスタム設定を追加する方法をまとめます。
カスタム設定を書く場所
Dockerイメージを取得してコンテナを立ち上げてみると/fluent-bit/etc/fluent-bit.confに設定があります。
[INPUT] Name forward Listen 0.0.0.0 Port 24224 [OUTPUT] Name cloudwatch Match ** region us-east-1 log_group_name fluent-bit-cloudwatch log_stream_prefix from-fluent-bit- auto_create_group true
このファイルはECSタスク起動時に差し替えられログルーターとして機能するようになっています。
その為、Dockerコンテナ上でいくらfluent-bit.confを編集しても最終的には差し替えられてしまうため別のファイルで作成することになります。
Fargateの場合には後述する制約があるのでコンテナから参照できる場所にファイルを配置することになります。
/fluent-bit/etc/xxxx.confのような。
カスタム設定適応方法
ECSタスク定義のコンテナの所でカスタム設定ファイルの定義を追加するとカスタム設定を適応できます。
"firelensConfiguration":{ "type":"fluentbit", "options":{ "config-file-type":"s3 | file", "config-file-value":"arn:aws:s3:::mybucket/fluent.conf | filepath" } }FireLens 設定を使用するタスク定義の作成 - Amazon ECS
Fargateで動作させる場合には制約があります。
AWS Fargate でホストされるタスクは、file 設定ファイルタイプのみをサポートします。
FireLens 設定を使用するタスク定義の作成 - Amazon ECS
EC2であればS3から参照することもできるようですがFargateなのでコンテナ内からファイルを参照できる必要があります。
あとはカスタム設定を記載した設定ファイルを内包したDockerイメージが作成できたらECRにアップロードして、
タスク定義のFirelens統合で指定されているコンテナイメージを自分で作成したものに変更すれば完了です。