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

Bis*_*alG 5 cloud amazon-web-services docker amazon-elastic-beanstalk

我上传了一个项目,其中有multi-containers docker platform两个容器,例如xyz和。其中包含tomcat服务器。我的项目中有以下文件配置。abcaws elastic-beanstalkxyzDockerrunner.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,
      .
      .
      .
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法查看 elastic-beanstalk 的健康部分中的数据。
在此输入图像描述

到目前为止我为解决这个问题所做的事情:

  • 我阅读了(https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-serverlogs.html)并了解到Elastic beanstalk具有特殊的日志记录格式,可以使多容器运行状况页面正常工作。
  • 为了测试建议,我通过访问 ec2 实例手动创建了相同格式的错误日志文件。我在 ec2 实例主机上的位置(health-agent 读取日志的位置)创建的文件也正确映射到 docker 容器中/var/log/containers/xyztomcat 日志文件的位置(即) 。/usr/local/tomcat/logsxyz

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

cha*_*har 2

这个 AWS 支持网站

\n\n
\n

Elastic Beanstalk 控制台验证是否启用了增强型运行状况报告:

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

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

\n\n

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

\n\n
    \n
  1. 选择“配置”,然后在“Web 层”下的“软件配置”面板上,选择编辑齿轮。

  2. \n
  3. 容器选项中,确保您选择了代理服务器。\n 如果代理服务器设置为none,则不会生成应用程序日志文件/var/log/nginx/healthd/,并且运行状况报告不会生成要显示的数据。

  4. \n
\n\n

您还可以修改 Node.js 日志和位置以与增强型运行状况日志格式兼容,然后查看healthd配置文件/etc/healthd/config.yaml

\n\n

运行多容器 Docker 2.xx.x 的 64 位 Amazon Linux 2016.xx vx.xx:

\n\n

该平台没有\xe2\x80\x99t附带代理服务器,因此您需要确保从其容器中以正确的格式生成日志并配置healthd为读取它们。要在多容器 Docker 环境中使用增强的运行状况监控,您需要配置healthd以使用这些日志。

\n\n

要向运行状况代理提供日志,请确保满足以下条件:

\n\n
    \n
  • 日志格式正确

  • \n
  • 日志写入到/var/log/nginx/healthd/

  • \n
  • 日志名称使用以下格式:application.log.$year-$month-$day-$hour

  • \n
  • 日志每小时轮换一次

  • \n
  • 日志不会被截断

  • \n
\n\n

注意:对于 Node.js 平台,如果禁用代理,则不会在 下创建日志/var/logs/nginx/healthd/。您必须重新启用代理或配置 Node.js 应用程序以在以下位置生成日志/var/logs/nginx/healthd/

\n\n

此示例Docker-multicontainer-v2.zip代码展示了如何管理 ebextensions,其中healthd配置设置为读取另一个目录。[...]

\n
\n\n

我认为这部分可能会对您有所帮助:

\n\n
\n

如果您无法在增强运行状况概览中查看服务器的信息,请检查healthd实例上的服务状态并确保它\xe2\x80\x99 正在运行。如果它没有运行,请重新启动该服务。

\n\n

此示例代码展示了如何检查 healthd 服务状态:

\n\n

$ ps aux | grep healthd

\n\n

此示例代码展示了如何重新启动healthd服务:

\n\n

[ec2-user@ip-172-31-39-182 ~]$ sudo initctl restart healthd

\n
\n