【问题标题】:Logs to AWS Cloudwatch from Docker Containers从 Docker 容器记录到 AWS Cloudwatch
【发布时间】:2017-08-14 18:30:54
【问题描述】:

我在 AWS EC2 实例上使用 docker-compose 运行了一些 docker 容器。我希望将日志发送到 AWS CloudWatch。我在从运行 Sierra 的 Mac 将日志从 docker 容器获取到 AWS CloudWatch 时也遇到了问题,因此我已经转移到运行 Amazon AMI 的 EC2 实例。

我的 docker-compose 文件:

version: '2'
services:
  scraper:
  build: ./Scraper/
  logging:
    driver: "awslogs"
    options:
       awslogs-region: "eu-west-1"
       awslogs-group: "permission-logs"
       awslogs-stream: "stream"
  volumes:
    - ./Scraper/spiders:/spiders

当我运行 docker-compose up 时出现以下错误:

scraper_1 |警告:“awslogs”日志驱动程序没有可用的日志

但容器正在运行。 AWS CloudWatch 流上不显示任何日志。我已将 IAM 角色分配给运行 docker-containers 的 EC2 容器。

我现在完全不知道我应该做什么,并且会欣赏任何建议。

【问题讨论】:

  • 你是在 ECS 集群上还是在普通 EC2 上运行它?
  • 它在普通 EC2 上运行。

标签: amazon-web-services docker amazon-ec2 docker-compose amazon-cloudwatchlogs


【解决方案1】:

您使用的 AWS 日志驱动程序 awslogs 用于 EC2 容器服务 (ECS)。它不适用于普通的 EC2。 See documentation.

我建议创建单个节点ECS cluster。确保该集群中的 EC2 实例具有角色,并且该角色提供写入 Cloudwatch 日志的权限。

从那里记录到stdout 的容器中的任何内容都将被awslogs 驱动程序捕获并流式传输到 Cloudwatch 日志。

【讨论】:

  • docs.docker.com/engine/admin/logging/awslogs/#tag 上没有任何内容表明它仅适用于 ECS。事实上,“或者(如果您在 Amazon EC2 实例上运行 Docker 守护程序)Amazon EC2 实例配置文件。”会让你相信它在其他地方也有效。
  • 我不会依赖 Docker 文档来对 AWS 的运作具有权威性。如果我没记错的话,那些有问题的日志驱动程序依赖于在 EC2 上运行的 ECS 客户端。在这方面,您可以可能安装客户端,看看是否有帮助
  • 我在常规 EC2 实例上使用它,不需要 ECS。
  • 这个答案应该被删除,它会导致大多数在这个问题上苦苦挣扎的人走错了路。
【解决方案2】:

awslogs 无需使用 ECS 即可工作。

您需要配置 AWS 凭证(用户应具有适当的 IAM 角色 [cloudwatch 日志])。

我使用了这个教程,它对我有用:https://wdullaer.com/blog/2016/02/28/pass-credentials-to-the-awslogs-docker-logging-driver-on-ubuntu/

【讨论】:

    【解决方案3】:

    我遇到了同样的错误,但是当我检查 cloudwatch 日志时,我能够看到 cloudwatch 中的日志。您是否检查过是否在 cloudwatch 中创建了日志组。当我们使用自定义日志驱动程序时,Docker 不支持控制台日志记录。

    关于限制here 的部分说 docker logs 命令仅适用于 json-file 和 journald 驱动程序,内置驱动程序也是如此。

    当试图从不支持读取的驱动程序中获取日志时,我没有任何问题,docker logs 会打印:

    Error response from daemon: configured logging driver does not support reading
    

    【讨论】:

      【解决方案4】:

      它涉及三个主要步骤。

      1. 创建 IAM 角色/用户
      2. 安装 CloudAgent
      3. 修改 docker-compose 文件或 docker run 命令

      我参考了一篇文章 here,其中包含将 docker 日志发送到 aws cloudwatch 的步骤。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-16
        • 2016-02-25
        • 2023-02-02
        • 1970-01-01
        • 2016-04-29
        相关资源
        最近更新 更多