gitkadoの日記

島根の若手エンジニアが暇潰しに書いてます

最近知ったこと(AWS FireLens編)

TL;DR

Amazon ECSコンテナからのログ送信がかなり柔軟に設定できるようになった。
(しかもすごく簡単!)

これまで

ECSコンテナからログを出力する場合に、LogDriver: awslogsを以下のように設定すると、Amazon CloudWatch Logs にログが送信されます。
LogConfiguration設定値について

LogConfiguration:
  LogDriver: awslogs
  Options:
    awslogs-group: /ecs/example
    awslogs-region: ap-northeast-1
    awslogs-stream-prefix: ecs

ECSコンテナがEC2タイプの場合は、LogDriverの選択肢も多く比較的困らないと思います。
しかしFargateタイプの場合は、LogDriverの選択肢がawslogssplunkの2択でした。

サポートされているLogDriverのいずれかを選択する必要がありましたので、
選択肢以外の出力先(*1)を選択したい場合に、追加のソフトウェアを維持する必要がありました。
*1 … Amazon Elasticsearch、Amazon S3サードパーティなど

docs.aws.amazon.com

AWS FireLens について

2019年11月にリリースされました。 公式ページ

FireLens を使用することで、顧客は、デプロイメントスクリプトを修正したり、手動で追加のソフトウェアをインストールしたり、追加コードを書き込んだりすることなく、コンテナログをストレージや分析ツールに直接追加できます。Amazon ECS または AWS Fargate の設定をいくつか更新することにより、必要な場所にコンテナログを送信することを FireLens に指示するため、宛先を選択し、オプションでフィルターを定義します。

FireLens は、

使用例

ECSからKinesis Data Firehoseにログ送信

f:id:gitkado:20200416111057p:plain

LogConfiguration:
  LogDriver: awsfirelens
  Options:
    name: firehose
    region: ap-northeast-1
    delivery_stream: my-stream

Source: https://aws.amazon.com/blogs/containers/under-the-hood-firelens-for-amazon-ecs-tasks/

ECSからfluentdにログ送信

LogConfiguration:
  LogDriver: awsfirelens
  Options:
    Name: forward
    Host: fluentdhost
    Port: 24224

Source: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html#firelens-example-forward

ECSからサードパーティ(Datadog)にログ送信

LogConfiguration:
  LogDriver: awsfirelens
  Options:
    Name: datadog
    Host: http-intake.logs.datadoghq.com
    TLS: on
    apikey: <DATADOG_API_KEY>
    dd_service: my-httpd-service
    dd_source: httpd
    dd_tags: project:example
    provider: ecs

Source: https://github.com/aws-samples/amazon-ecs-firelens-examples/tree/master/examples/fluent-bit/datadog

最後に

ログ関係は知識が浅いので、これを機に調べてみようと思いました。
知らないけどCloudのログに関するベストプラクティスとかありそう。

AWS FireLensは、オンライン開催になったJAWS DAYS 2020のセッションから知りました。
来年は新型肺炎も終息して、現地で発表を聞けると信じてます!

参考サイト

aws.amazon.com

github.com

aws.amazon.com