增强型运行状况概述未正确报告AWS Elastic Beanstalk中的多容器Docker配置

问题描述 投票:4回答:1

我在multi-containers docker platform上传了一个有xyz和两个容器的项目,比如abcaws elastic-beanstalkxyz中包含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,
      .
      .
      .
    }
  ]
}

但是,我无法在弹性豆茎的健康部分查看数据。 enter image description here

到目前为止我做了什么来解决这个问题:

  • 我读了(https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-serverlogs.html)并且知道弹性beanstalk具有特殊的日志格式,可以让多容器健康页面起作用。
  • 对于测试建议,我通过访问ec2实例手动创建了相同格式的错误日志文件。我在位于/var/log/containers/xyz(其中health-agent读取日志)的ec2实例主机中创建的文件也正确映射到/usr/local/tomcat/logs docker容器中的tomcat的日志文件位置(即xyz)。

但是,我仍然看不到增强型健康概述部分的变化。

amazon-web-services docker cloud amazon-elastic-beanstalk
1个回答
0
投票

来自this AWS support site

Elastic Beanstalk console,验证是否启用了增强型运行状况报告:

  1. 选择“配置”,然后在“Web层”下的“运行状况”面板上,选择编辑齿轮。
  2. 在“健康报告”下,确保“系统类型”设置为“增强”。

运行Node.js平台的64位Amazon Linux 2016.xx vx.x.x:

确保配置了正确的代理服务器:

  1. 选择“配置”,然后在“Web层”下的“软件配置”面板上,选择编辑设备。
  2. 在“容器选项”中,确保选择了“代理服务器”。如果代理服务器设置为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

© www.soinside.com 2019 - 2024. All rights reserved.