我在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角色。
我现在完全失去了我应该做的事情,并且会建议任何建议。
答案 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)
涉及三个主要步骤。
我已参考文章here,其中包含将Docker日志发送到AWS CloudWatch的步骤。