我想在云表中查看我所有的日志。我目前有一个多码头弹性豆茎环境。
我选择了将日志推送到cloudwatch,方法是
Elastic Beanstalk > App > Env > Configuration > Software Configuration > CloudWatch Logs这是启用的。
当我看云表时,我看到了以下几个部分..
/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的本地路径上生成(如预期的)。
另外,如果我转到EBS >日志并请求最近的日志,我也可以看到它们在访问日志中是什么,它只是没有被发送到CloudWatch?
我想知道我是否必须设置一个具有正确路径的Log Group,我尝试过这样做,但是它没有被填充?
我确信我错过了一些东西,把它推到Cloudwatch上,提前感谢你!
更新:我已经添加了下面的内容,这是建议的要求。该文件位于名为.ebextensions的nginx_logs.conf文件夹中。
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条日志时,我仍然可以看到它们。但云图里没有任何东西。
发布于 2017-09-04 11:20:26
根据正式的AWS 文档,以下文件是针对Docker多容器EB环境从盒子中收集的:
由于这些路径不包括包含nginx日志的目录,所以它们不会流到CloudWatch中是有意义的。
要流您的日志,看起来您必须配置CloudWatch日志代理来收集容器目录中的文件。有示例配置这里。坦率地说,对于Docker多容器的默认配置并不包括容器日志,这有点奇怪,但是很明显,AWS就是这样实现的。
https://serverfault.com/questions/871653
复制相似问题