FireLens触ってみた
完全に理解できてるわけでないので、違ったらご指摘いただけると!
FireLensとは?
ECSとかのLogDriverとして、FluentdやFluentbitを利用して、簡単にFirehoseとかに投げることができる!という認識。
https://github.com/aws/containers-roadmap/tree/master/preview-programs/firelens
何が嬉しいのか?
自分でFluentdを立てて、ボリューム共有して、そこからFirehoseとかに投げるみたいなことをすることはもともと可能。
(というか既にそんな感じでやっている)
ただ、その設定がほとんどいらずに、標準出力に投げたログを簡単にFirehoseに連携できる!
メリット
- 自身でFluentdのイメージの保守をしないでOK。
- AWS が作ってくれている
amazon/aws-for-fluent-bit:latest
を利用すればOK。
- AWS が作ってくれている
- 簡単に設定できる。
- タスクに、上記のイメージを追加して、設定をちょっとすることで、Fluentbitの利用が可能に。
- 正規表現で保存するログを選別できる。
デメリット?
多分、Cloudwatch と、Firehose両方投げるっていうのは、現状簡単にできない?
FluentBitを自分で立てればできそうなので試してみる。
設定の仕方
{ "family": ..., "containerDefinitions": [ { ..., "logConfiguration": { "logDriver": "awsfirelens", "options": { "Name": "firehose", "region": "us-east-1", "delivery_stream": "stream", // kinesis streamの名前 "include-pattern": "^.*include.*$" // 正規表現で取り込むログを指定 } } }, { "name": "log_router", "essential": true, "image": "amazon/aws-for-fluent-bit:latest", "firelensConfiguration": { "type": "fluentbit", "options": { "enable-ecs-log-metadata": "false" } } } ], ... }
aws ecs register-task-definition --cli-input-json file://${JSON_PATH}
を実行。