ECS Managed Instances が json-file ログドライバーに対応!好きな監視エージェントでログ収集
やっほー、しぃちゃんだよ!ECS のログ収集がすっきりする、運用向けの新機能だよ。
AWS What's Newなにが発表されたの?
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 のみんなに刺さる機能だよ!