首页 > 解决方案 > AWS Elastic Beanstalk 中的多容器 Docker 配置无法正确报告增强的运行状况概述

问题描述

我上传了一个项目,其中multi-containers docker platform包含两个容器xyz,例如abc. 其中包含tomcat服务器。我的项目中有以下配置文件。aws 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,
      .
      .
      .
    }
  ]
}

但是,我无法在弹性豆茎的健康部分查看数据。
在此处输入图像描述

到目前为止,我为解决此问题所做的工作:

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

标签: amazon-web-servicesdockercloudamazon-elastic-beanstalk

解决方案


从此AWS 支持站点

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

  1. 选择Configuration,然后在Web Tier下的Health面板上,选择编辑齿轮。
  2. Health Reporting下,确保System type设置为Enhanced

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

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

  1. 选择Configuration,然后在Web Tier下的Software Configuration面板上,选择编辑齿轮。

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

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

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

该平台不附带代理服务器,因此您需要确保从其容器中以正确的格式生成日志并配置healthd为读取它们。要在多容器 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代码显示了如何管理healthd配置设置为读取另一个目录的 ebextensions。[...]

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

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

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

$ ps aux | grep healthd

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

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


推荐阅读