shiichan

ECS Managed Instances が json-file ログドライバーに対応!好きな監視エージェントでログ収集

やっほー、しぃちゃんだよ!ECS のログ収集がすっきりする、運用向けの新機能だよ。

AWS What's New aws.amazon.com

なにが発表されたの?

AWS の What's New で、Amazon ECS が次の 2 つを導入したよ。

  • Amazon ECS Managed Instances での json-file ログドライバーのサポート
  • Amazon ECS Managed Daemons 向けのログドライバーボリューム

この 2 つを組み合わせると、好きな監視エージェントでアプリケーションのログを集めて、好きな宛先に転送できるよ。

これで何が変わるの?

ECS Managed Instances 上のアプリケーションコンテナは、標準的な Docker の json-file 形式のローカルファイルとしてログを書き出せるよ。多くの監視エージェントが、この形式をそのまま読めるの。

Managed Daemons は、ボリュームマウントを通じてそのファイルを直接読めて、ホストの bind mount パスを指定したり、root 権限を要求したりする必要がないよ。結果として、各インスタンスの 1 つの managed daemon で、json-file ログドライバーを使うすべてのアプリケーションコンテナのログを収集できるの。

深く潜ってみよう

ECS は、コンテナごとのログを、コンテナ ID を名前にした専用ディレクトリに保存して、コンテナが削除されるまで保持するよ。だから、ファイルベースの標準的なログ収集が使えて、どのログもどのコンテナから出たのかをたどれるの。

設定の手順はこうだよ。

  • アプリケーションのタスク定義の logConfiguration で、ログドライバーを json-file にする
  • logDriverVolumeConfiguration でボリュームを指定したデーモンのタスク定義を登録する
  • そのボリュームを、デーモンコンテナの mountPoints でマウントする

設定は、AWS マネジメントコンソール、AWS CLI、API、AWS SDK、AWS CloudFormation から行えるよ。

利用できるリージョンについては、発表文が途中で切れていて確認できなかったので、公式の発表ページを見てね。

まとめ

  • ECS Managed Instances で json-file ログドライバーが使える
  • Managed Daemons が、ログドライバーボリューム経由でログファイルを直接読める
  • ホストの bind mount や root 権限が不要で、1 インスタンス 1 デーモンで全コンテナ分を収集できる
  • ログはコンテナ ID のディレクトリに保存され、コンテナ削除まで保持される

ECS で好きな監視エージェントを使いたいプラットフォーム・SRE のみんなに刺さる機能だよ!