我想在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环境开箱即可收集以下文件:
由于这些path不包含包含nginx日志的目录,因此它们不会被传输到CloudWatch。
要对您的日志进行stream式处理,您需要configurationCloudWatch Logs代理以收集containers目录中的文件。 这里有样例configuration。 坦率地说,Docker的默认configuration有点奇怪,Multicontainer不包含容器日志,但显然这就是AWS实现这一点的方式。