我在multi-containers docker platform
上传了一个有xyz
和两个容器的项目,比如abc
和aws elastic-beanstalk
。 xyz
中包含tomcat服务器。我在Dockerrunner.aws.json
文件的项目中有以下配置。
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"name": "xyz",
"image": "<PLACEHOLDER_REPLACED_BY_CICD_TOOLS>",
"essential": true,
"memory": 2048,
"links": [
"abc"
],
"environment": [
{
"name": "ENVIRONMENT",
"value": "QA"
},
{
"name": "LOG_HOME",
"value": "/usr/local/tomcat/logs"
},
.
.
.
],
"mountPoints": [
{
"sourceVolume": "awseb-logs-xyz",
"containerPath": "/usr/local/tomcat/logs"
}
],
.
.
},
{
"name": "abc",
"image": "image123",
"essential": true,
.
.
.
}
]
}
到目前为止我做了什么来解决这个问题:
/var/log/containers/xyz
(其中health-agent读取日志)的ec2实例主机中创建的文件也正确映射到/usr/local/tomcat/logs
docker容器中的tomcat的日志文件位置(即xyz
)。但是,我仍然看不到增强型健康概述部分的变化。
从Elastic Beanstalk console,验证是否启用了增强型运行状况报告:
- 选择“配置”,然后在“Web层”下的“运行状况”面板上,选择编辑齿轮。
- 在“健康报告”下,确保“系统类型”设置为“增强”。
运行Node.js平台的64位Amazon Linux 2016.xx vx.x.x:
确保配置了正确的代理服务器:
- 选择“配置”,然后在“Web层”下的“软件配置”面板上,选择编辑设备。
- 在“容器选项”中,确保选择了“代理服务器”。如果代理服务器设置为none,则不会在
/var/log/nginx/healthd/
下生成应用程序日志文件,并且运行状况报告不会生成要显示的数据。您还可以修改Node.js日志和位置以与增强型运行状况日志格式兼容,然后查看
healthd
配置文件/etc/healthd/config.yaml
。运行Multicontainer Docker 2.xx.x的64位Amazon Linux 2016.xx vx.x.x:
此平台没有代理服务器,因此您需要确保从容器中以正确的格式生成日志,并配置
healthd
以读取它们。要在Multicontainer Docker环境中使用增强型运行状况监视,您需要配置healthd
以使用这些日志。要向运行状况代理提供日志,请确保以下内容:
- 日志格式正确
- 日志写入
/var/log/nginx/healthd/
- 日志名称使用以下格式:
application.log.$year-$month-$day-$hour
- 日志每小时轮换一次
- 日志不会被截断
注意:使用Node.js平台,如果禁用代理,则不会在
/var/logs/nginx/healthd/
下创建日志。您必须重新启用代理或配置Node.js应用程序以在/var/logs/nginx/healthd/
下生成日志此示例Docker-multicontainer-v2.zip代码显示了如何管理ebextensions,其中
healthd
配置设置为读取另一个目录。 [...]
我认为这部分可能能够帮到你:
如果您无法在增强型运行状况概述中查看服务器的信息,请检查实例上的
healthd
服务状态并确保其正在运行。如果未运行,请重新启动该服务。此示例代码显示了如何检查运行状况良好的服务状态:
$ ps aux | grep healthd
此示例代码显示了如何重新启动
healthd
服务:
[ec2-user@ip-172-31-39-182 ~]$ sudo initctl restart healthd