Amazon AWS Elastic Beanstalk EBSlogging到Cloudwatch(多Docker Env)

我想在cloudwatch中查看我所有的日志。 我目前有一个多docker Elastic beanstalk环境。

我已经select了日志来推到cloudwatch去

Elastic Beanstalk > App > Env > Configuration > Software Configuration > CloudWatch Logs 

这是启用的。

当我在看cloudwatch,我看到以下几点..

 /aws/elasticbeanstalk/myapp-staging/var/log/docker-events.log /aws/elasticbeanstalk/myapp-staging/var/log/eb-activity.log /aws/elasticbeanstalk/myapp-staging/var/log/eb-ecs-mgr.log /aws/elasticbeanstalk/myapp-staging/var/log/ecs/ecs-agent.log /aws/elasticbeanstalk/myapp-staging/var/log/ecs/ecs-init.log 

但是我没有看到nginx的访问/错误日志。

我有这在我的Dockerrun.aws.json

 "mountPoints":[ { "sourceVolume": "awseb-logs-nginx", "containerPath": "/var/log/nginx" } 

如果我SSH的实例与这个包含上我可以看到这些日志(当我点击URLS)正在生成(如预期)在/var/log/containers/nginx/access.log的本地path等

此外,如果我去EBS>日志和请求最近的日志,我也可以看到他们什么是在访问日志中,它只是没有被发送到CloudWatch?

我想知道如果我必须设置正确的path的Log Group ,我试过这个,但没有得到填充?

我相信我错过了一些推动CloudWatch的事情,非常感谢!

更新:我已经添加下面,这是build议作为要求。 该文件位于名为nginx_logs.conf .ebextensions文件夹中。

 packages: yum: awslogs: [] files: "/etc/awslogs/config/nginx_logs.conf" : mode: "000600" owner: root group: root content: | [/var/log/containers/nginx/access.log] log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/containers/nginx/access.log"]]}` log_stream_name = {instance_id} file = /var/log/containers/nginx/access.log* [/var/log//containers/nginx/error.log] log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/containers/nginx/error.log"]]}` log_stream_name = {instance_id} file = /var/log/containers/nginx/error.log* commands: "01": command: chkconfig awslogs on "02": command: service awslogs restart 

仍然没有喜悦,我仍然可以看到他们,当我点击请求日志或请求最后100日志。 但是在cloudwatch中没有任何…

根据官方的AWS 文档 ,Docker Multicontainer EB环境开箱即可收集以下文件:

  • /var/log/eb-activity.log
  • /var/log/ecs/ecs-init.log
  • /var/log/eb-ecs-mgr.log
  • /var/log/ecs/ecs-agent.log
  • /var/log/docker-events.log

由于这些path不包含包含nginx日志的目录,因此它们不会被传输到CloudWatch。

要对您的日志进行stream式处理,您需要configurationCloudWatch Logs代理以收集containers目录中的文件。 这里有样例configuration。 坦率地说,Docker的默认configuration有点奇怪,Multicontainer不包含容器日志,但显然这就是AWS实现这一点的方式。