使用 Docker Compose 运行服务的时候,我们可以在命令行中查看容器的日志,但这也许远远不够,我们可能会需要对日志进行持久化存储,并希望能够方便的检索,AWS 的 CloudWatch 服务给我们提供了强大的日志管理能力,那么如何将我们 Docker Compose 的服务产生的日志输出到 CloudWatch 中呢,本文提供了一个成功的实践步骤。
配置 AWS 权限
- 创建文件
/etc/systemd/system/docker.service.d/aws-credentials.conf
-
将以下内容写到文件中
[Service] Environment="AWS_ACCESS_KEY_ID=<aws_access_key_id>" Environment="AWS_SECRET_ACCESS_KEY=<aws_secret_access_key>"
- 执行
sudo systemctl daemon-reload
重新加载虚拟机配置 - 执行
sudo service docker restart
重启 docker - 执行
systemctl show --property=Environment docker
检查配置是否生效
配置 docker-compose.yml
给需要收集日志的服务添加 logging 配置(更多的配置项请参考 官方文档):
version: '2'
services:
my-service:
image: my-service:latest
logging:
driver: awslogs
options:
awslogs-region: ap-northeast-1
awslogs-group: /log-prod/my-service
执行 docker-compose up -d
重启 Docker Compose 容器。
检查是否对接成功
进入 AWS 的 CloudWatch 菜单,打开服务所在的日志组,默认情况下我们应该已经可以看到以容器 ID 命名的日志流,此时说明已经成功的完成了对接。