Edited at

docker-composeのログを雑にCloudWatchに投げつける

More than 1 year has passed since last update.

docker-composeでオーケストレーションしているコンテナたちのログを、CloudWatch Logsに集約したいので、

loggingのawslogs driverを使ってみました。

Compose.png


経緯


  • docker-composeでオーケストレーションしているコンテナたちのログを集約したい

  • cloudwatch logsに投げつけたい おりゃ!(イラスト作りたかった)


環境


  • amazon linux: cloudwatch logsのroleをつける

  • docker: 17.03

  • docker-compose: 1.9.0


docker-compose.yml


  • driverに awslogsを指定する

  • optionsにregion,group名,stream名を指定する

logging:

driver: "awslogs"
options:
awslogs-region: "ap-northeast-1"
awslogs-group: "${RAILS_ENV}"
awslogs-stream: "nginx"


Dockerfile


  • 必要ならばログを出したいファイルにリンクを貼るとログが出力される

RUN ln -sf  /dev/stdout /var/log/HOGOHOGE/app-access.log

RUN ln -sf /dev/stderr /var/log/HOGEHOGE/app-error.log


cloud watch


  • 空のgreoupを作成しておかないと、以下のエラーが出てしまいます

ERROR: for redis  Cannot start service redis: Failed to initialize logging driver: ResourceNotFoundException: The specified log group does not exist.

status code: 400, request id: xxxxxx-xxxxxxxxx-xxxxxxxx-xxxxx

ERROR: for db Cannot start service db: Failed to initialize logging driver: ResourceNotFoundException: The specified log group does not exist.
status code: 400, request id: xxxxxx-xxxxxxxxx-xxxxxxxx-xxxxx

スクリーンショット 2017-07-20 16.47.48.png


動かしてみる

$ docker-compose up


ログ集約できた


  • いちいちdocker execしなくてもよくなった

スクリーンショット 2017-07-20 16.48.03.png

スクリーンショット 2017-07-20 16.47.36.png


docker-compose.yml全体(dbとredisに意味はない)


docker-compose.yml

version: '2'

services:
web:
image: nginx
depends_on:
- db
- redis
ports:
- "80:80"
logging:
driver: "awslogs"
options:
awslogs-region: "ap-northeast-1"
awslogs-group: "develop"
awslogs-stream: "nginx"
redis:
image: redis
logging:
driver: "awslogs"
options:
awslogs-region: "ap-northeast-1"
awslogs-group: "develop"
awslogs-stream: "redis"
db:
image: postgres
logging:
driver: "awslogs"
options:
awslogs-region: "ap-northeast-1"
awslogs-group: "develop"
awslogs-stream: "posgre"


まとめ


  • とてもかんたんですね!!

  • これでログとしては十分かと!
    あとの解析はまた、cloudwatchから何かに投げつければいいかなーと!!