【发布时间】:2018-09-07 16:42:02
【问题描述】:
我将 Web 服务部署到运行 Docker 多容器 堆栈的 Elastic Beanstalk 环境中。我在环境中启用了到 CloudWatch 的日志流,因此 Cloudwatch 中显示了大约五个不同的日志组,因此当我从 Beanstalk 中单击“请求日志”时,它会加载一个网页,一个接一个地显示所有日志文件。我注意到这个网页上有一些日志没有在 CloudWatch 中显示为日志组,这些是我真正关心的日志。我的问题是如何让它们显示为 CloudWatch 日志组?
具体来说,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/my-web-service/var/log/docker
- /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?我怎样才能让这个文件显示出来?
【问题讨论】:
标签: amazon-web-services docker logging amazon-elastic-beanstalk amazon-cloudwatch