cloudpack大阪の佐々木です。
Docker1.9からlogging driverにAWSのCloudwatch Logsが追加されたので、ECSで試してみました。
logging driverとは
DockerはImmutable Infrastructureとして構成され、不要になったコンテナは削除され、必要に応じて用意に追加できる構成をとることが多いと思います。なので、ログをコンテナ内に保存させておくと、コンテナが削除されるとなくなってしまいます。そのために外部にログを出力させる必要が出てくるのですが、これを容易に実施できるのが、logging driverという機能です。標準出力にログを出力しておけば、logging driverを使ってログを外部に保存できます。
対応しているlogging driverは下記に記載されています。
https://docs.docker.com/engine/admin/logging/overview/
fluentdがよく使われると思いますが、splunkなんかもあります。
Cloudwatch Logs logging driverの使い方
logging-driverにawslogsを指定して、オプションとして、リージョンとロググループを指定するだけ!
超簡単ですね
ECSで使ってみる
CloudWatch Logsの画面からロググループを作成します。
ecs-cliでECSクラスタを作成します。
対応しているECS Agentのバージョンが1.9.0以降ということで、ECS optimized AMIの2016.03.bが必要になります。
http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/using_awslogs.html
今回は2016.03.c(ami-095dbf68)を使用しました。
$ ecs-cli up --capability-iam --keypair KeyName --image-id ami-095dbf68
ecs-cliの使い方は下記も見てください。
環境ができたらWordpressを立ち上げてみます。
wordpress:
image: wordpress
mem_limit: 268435456
ports:
- "80:80"
links:
- mysql
log_driver: awslogs
log_opt:
awslogs-group: "ecs-log-group"
awslogs-region: "ap-northeast-1"
mysql:
image: mysql
mem_limit: 268435456
environment:
MYSQL_ROOT_PASSWORD: password
logging driver関連は下記の部分だけです。
log_driver: awslogs
log_opt:
awslogs-group: "ecs-log-group"
awslogs-region: "ap-northeast-1"
起動します。
$ ecs-cli compose service up
インスタンスのIPアドレスにブラウザでアクセスすると、Wordpressが立ち上がっています。
Cloudwatch Logsを見てみます。
ログが出力されています。
まとめ
Cloudwatch Logs logging driverを使えば、ECSのコンテナのログを簡単にCloudwatch Logsに保存できます。
Cloudwatch Logsのアラートと組み合わせることができるので、ログの管理だけでなく、監視等も簡単にできるのではないかと思います。