对接 Docker Compose 和 CloudWatch

使用 Docker Compose 运行服务的时候,我们可以在命令行中查看容器的日志,但这也许远远不够,我们可能会需要对日志进行持久化存储,并希望能够方便的检索,AWS 的 CloudWatch 服务给我们提供了强大的日志管理能力,那么如何将我们 Docker Compose 的服务产生的日志输出到 CloudWatch 中呢,本文提供了一个成功的实践步骤。

配置 AWS 权限

  1. 创建文件 /etc/systemd/system/docker.service.d/aws-credentials.conf
  2. 将以下内容写到文件中

    [Service]
    Environment="AWS_ACCESS_KEY_ID="
    Environment="AWS_SECRET_ACCESS_KEY="
  3. 执行 sudo systemctl daemon-reload 重新加载虚拟机配置
  4. 执行 sudo service docker restart 重启 docker
  5. 执行 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 命名的日志流,此时说明已经成功的完成了对接。

image-20200601112104855.png

你可能感兴趣的:(docker,容器,docker-compose)