我在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角色。
我现在完全不知道自己应该做些什么,并且会建议任何建议。
awslogs
不使用ECS。
您需要配置AWS凭据(用户应具有适当的IAM角色[cloudwatch logs])。
我使用本教程,它对我有用:https://wdullaer.com/blog/2016/02/28/pass-credentials-to-the-awslogs-docker-logging-driver-on-ubuntu/
我得到了同样的错误但是当我检查了cloudwatch日志时,我能够在cloudwatch中看到日志。如果您在cloudwatch中创建了日志组,您是否检查过它?使用自定义日志记录驱动程序时,Docker不支持控制台日志记录。
有关限制的部分here说,docker logs命令仅适用于json文件和日志驱动程序,内置驱动程序也是如此。
当试图从不支持读取的驱动程序获取日志时,没有任何内容可供我使用,docker日志打印出来:
Error response from daemon: configured logging driver does not support reading
您使用awslogs
的AWS日志驱动程序用于EC2容器服务(ECS)。它不适用于普通的EC2。 See documentation。
我建议创建一个单节点ECS cluster。确保该群集中的EC2实例具有角色,并且该角色提供写入Cloudwatch日志的权限。
从那里,容器中记录到stdout
的任何内容都将被awslogs
驱动程序捕获并流式传输到Cloudwatch日志。
它涉及3个主要步骤。
我已经引用了一篇文章here,其中包含将docker日志发送到aws cloudwatch的步骤。