从Docker容器登录AWS Cloudwatch

问题描述 投票:3回答:4

我在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角色。

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

amazon-web-services docker amazon-ec2 docker-compose amazon-cloudwatchlogs
4个回答
4
投票

awslogs不使用ECS。

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

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


0
投票

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

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

当试图从不支持读取的驱动程序获取日志时,没有任何内容可供我使用,docker日志打印出来:

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

-1
投票

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

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

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


-2
投票

它涉及3个主要步骤。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.