从Docker容器

时间:2017-03-22 14:50:25

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

我在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时,我收到以下错误:

  

scraper_1 |警告:' awslogs'日志驱动程序

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

我现在完全失去了我应该做的事情,并且会建议任何建议。

4 个答案:

答案 0 :(得分:3)

flatMap无需使用ECS。

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

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

答案 1 :(得分:0)

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

关于限制here的部分说,docker logs命令仅适用于json文件和日志驱动程序,内置驱动程序适用。

当尝试从不支持读取的驱动程序获取日志时,没有任何挂起的东西,docker日志显示以下内容:

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

答案 2 :(得分:-1)

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

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

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

答案 3 :(得分:-1)

涉及三个主要步骤。

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

我已参考文章here,其中包含将Docker日志发送到AWS CloudWatch的步骤。