soa*_*gem 7 logging amazon-web-services amazon-cloudwatch docker amazon-elastic-beanstalk
我将一个Web服务部署到运行Docker Multi-Container堆栈的Elastic Beanstalk环境中。我已在该环境上启用了到CloudWatch的日志流,因此Cloudwatch中显示了大约五个不同的日志组,因此,当我从Beanstalk中单击“请求日志”时,它将加载一个网页,向我显示所有日志文件,一个接一个。我注意到该网页上的某些日志在CloudWatch中没有显示为日志组,而这些是我真正关心的日志。我的问题是如何使它们显示为CloudWatch Log Groups?
特别地,Elastic Beanstalk自动为我创建的五个日志组是:
当我查看“请求日志”时生成的文件时,那五个确实存在。但是这些其他日志文件也表示为:
我真正感兴趣的是最后一个,以stdouterr.log结尾的那个。那是我的容器化应用程序将所有日志消息写入的地方。我想看到的是CloudWatch中的一个日志组,它对应于该stdouterr.log文件。据我所知,日志文件名中的12位ID是安装在主机上的Docker映像的ID,并且每次重新启动服务器时都会更改。所以我想我可能需要在Dockerrun.aws.json配置中挂载一个卷或类似的卷?此外,我猜想我是否需要手动将日志组添加到CloudWatch?如何显示此文件?
看起来您当前只有默认日志发送到Cloudwatch日志。您可以通过以下方式将其他日志添加到cloudwatch代理:.ebextensions
### BEGIN .ebextensions/logs.config
option_settings:
- namespace: aws:elasticbeanstalk:cloudwatch:logs
option_name: StreamLogs
value: true
- namespace: aws:elasticbeanstalk:cloudwatch:logs
option_name: DeleteOnTerminate
value: false
- namespace: aws:elasticbeanstalk:cloudwatch:logs
option_name: RetentionInDays
value: 7
files:
"/etc/awslogs/config/stdout.conf":
mode: "000755"
owner: root
group: root
content: |
[docker-stdout]
log_group_name=/aws/elasticbeanstalk/environment_name/docker-stdout
log_stream_name={instance_id}
file=/var/log/eb-docker/containers/eb-current-app/*-stdouterr.log
commands:
"00_restart_awslogs":
command: service awslogs restart
### END .ebextensions/logs.config
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1308 次 |
| 最近记录: |