如何将特定日志文件从多容器Docker Elastic Beanstalk流式传输到CloudWatch?

时间:2018-03-28 20:51:08

标签: amazon-web-services docker logging elastic-beanstalk amazon-cloudwatch

我有一个Web服务部署到运行Docker 多容器堆栈的Elastic Beanstalk环境。我已经在环境中启用了Log Streaming到CloudWatch,因此大约有五个不同的日志组显示在Cloudwatch中,所以当我点击" Request Logs"从Beanstalk它加载一个网页,一个接一个地显示所有日志文件。我注意到此网页上有一些日志没有显示为CloudWatch中的日志组,这些是我真正关心的日志。我的问题是如何让它们显示为CloudWatch Log Groups?

特别是,Elastic Beanstalk自动为我创建的五个日志组是:

  • /aws/elasticbeanstalk/my-web-service/var/log/docker-events.log
  • /aws/elasticbeanstalk/my-web-service/var/log/eb-activity.log
  • /aws/elasticbeanstalk/my-web-service/var/log/eb-ecs-mgr.log
  • /aws/elasticbeanstalk/my-web-service/var/log/ecs/ecs-agent.log
  • /aws/elasticbeanstalk/my-web-service/var/log/ecs/ecs-init.log

当我查看在我"请求日志时生成的文件时,"那五个确实存在。但是这些其他日志文件也表示出来了:

  • /aws/elasticbeanstalk/my-web-service/var/log/awslogs.log
  • / AWS / elasticbeanstalk /我的Web服务在/ var /日志/泊坞窗
  • /aws/elasticbeanstalk/my-web-service/var/log/docker-ps.log
  • /aws/elasticbeanstalk/my-web-service/var/log/eb-commandprocessor.log
  • /aws/elasticbeanstalk/my-web-service/var/log/containers/my-svc-8edcf9cec583-stdouterr.log

这是我真正感兴趣的最后一个,以stdouterr.log结尾的那个。我的容器化应用程序将其所有日志消息写入的位置。我希望看到CloudWatch中的日志组对应于该stdouterr.log文件。据我所知,日志文件名中的12位ID是安装在主机上的docker镜像的ID,每次重新启动服务器时都会更改。所以我猜测我可能需要在Dockerrun.aws.json配置中安装一个卷或类似的东西?而且我猜我还需要手动将日志组添加到CloudWatch?如何才能显示此文件?

1 个答案:

答案 0 :(得分:6)

您似乎目前只将默认日志发送到Cloudwatch日志。您可以通过largestraight = self.count_outcomes().tolist()

将其他日志添加到Cloudwatch代理
.ebextensions

source