

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Elastic Beanstalk 中的增强型运行状况报告和监控
增强型运行状况报告和监控

本节介绍 Elastic Beanstalk 增强型运行状况功能。

增强型运行状况报告是一项可以在环境中启用的功能， Amazon Elastic Beanstalk 用于收集有关环境中资源的其他信息。Elastic Beanstalk 分析收集的信息，以更好地了解总体环境运行状况并帮助识别可能导致您的应用程序变得不可用的问题。

除运行状况颜色工作方式方面的更改之外，增强型运行状况还添加了*状态* 描述符，当环境为黄色或红色时，状态描述符提供观察到的问题的严重性指标。如果系统提供了有关当前状态的更多信息，您可以选择**原因**按钮，在[运行状况](health-enhanced-console.md)页面上查看详细的运行状况信息。

为提供有关在您的环境中运行的 Amazon EC2 实例的运行状况详细信息，Elastic Beanstalk 将在 Amazon 系统映像 (AMI) 中为支持增强型运行状况的每个平台版本包括一个[运行状况代理](#health-enhanced-agent)。运行状况代理监控 Web 服务器日志和系统指标并将它们中继到 Elastic Beanstalk 服务。Elastic Beanstalk 会分析来自 Elastic Load Balancing 和 Amazon EC2 Auto Scaling 的这些指标和数据，以提供环境运行状况的总体情况。

除收集和展示有关环境资源的信息之外，Elastic Beanstalk 还监控环境中的资源是否存在一些错误条件并向您发送通知以帮助避免失败和解决配置问题。[影响环境运行状况的因素](#health-enhanced-factors)包括应用程序处理的每个请求的结果、实例操作系统的指标和最新部署的状态。

您可以使用 Elastic Beanstalk 控制台的[环境概述](health-enhanced-console.md)页面或 [Elastic Beanstalk 命令行界面](eb-cli3.md) (EB CLI) 中的 [eb health](health-enhanced-ebcli.md) 命令实时查看运行状况。要记录和跟踪一段时间内的环境和实例运行状况，您可以将环境配置为将 Elastic Beanstalk 收集的用于增强运行状况报告的信息作为自定义指标发布给 CloudWatch 亚马逊。 CloudWatch 自定义指标的[费用](https://www.amazonaws.cn/cloudwatch/pricing/)适用于除此之外的所有指标`EnvironmentHealth`，后者是免费的。

**Windows 平台备注**  
当您在 Windows Server 环境中启用增强型运行状况报告时，请勿更改 [IIS 日志记录配置](https://docs.microsoft.com/en-us/iis/manage/provisioning-and-managing-iis/configure-logging-in-iis)。要使增强型运行状况监控正常工作，必须使用 **W3C** 格式和 **ETW event only (仅限 ETW 事件)** 或 **Both log file and ETW event (日志文件和 ETW 事件两者)** 日志事件目标配置 IIS 日志记录。  
此外，不要在您环境的任何实例上禁用或停止[Elastic Beanstalk 运行状况代理](#health-enhanced-agent) Windows 服务。要收集和报告实例上的增强型运行状况信息，应启用并运行该服务。

首次创建环境时，Elastic Beanstalk 会提示您创建所需的角色并默认启用增强型运行状况报告。继续阅读有关增强型运行状况报告的工作方式的详细信息，或参阅[启用 Elastic Beanstalk 增强型运行状况报告](health-enhanced-enable.md)立即开始使用增强型运行状况报告。

**Topics**
+ [

## Elastic Beanstalk 运行状况代理
](#health-enhanced-agent)
+ [

## 实例和环境运行状况的确定因素
](#health-enhanced-factors)
+ [

## 运行状况检查规则自定义
](#health-enhanced.rules)
+ [

## 增强型运行状况角色
](#health-enhanced-roles)
+ [

## 增强型运行状况授权
](#health-enhanced-authz)
+ [

## 增强型运行状况事件
](#health-enhanced-events)
+ [

## 更新、部署和扩展期间的增强型运行状况报告行为
](#health-enhanced-effects)
+ [

# 启用 Elastic Beanstalk 增强型运行状况报告
](health-enhanced-enable.md)
+ [

# 采用环境管理控制台的增强型运行状况监控
](health-enhanced-console.md)
+ [

# 运行状况颜色和状态
](health-enhanced-status.md)
+ [

# 实例指标
](health-enhanced-metrics.md)
+ [

# 为环境配置增强型运行状况规则
](health-enhanced-rules.md)
+ [

# 为环境发布 Amazon CloudWatch 自定义指标
](health-enhanced-cloudwatch.md)
+ [

# 将增强型运行状况报告与 Elastic Beanstalk API 结合使用
](health-enhanced-api.md)
+ [

# 增强型运行状况日志格式
](health-enhanced-serverlogs.md)
+ [

# 通知和问题排查
](environments-health-enhanced-notifications.md)
+ [

# 人工智能驱动的环境分析
](health-ai-analysis.md)

## Elastic Beanstalk 运行状况代理


Elastic Beanstalk 运行状况代理是在您的环境中的每个 Amazon EC2 实例上运行的守护程序进程（或 Windows 环境上的一项服务），它可监控操作系统和应用程序级别的运行状况指标并将问题报告给 Elastic Beanstalk。从每个平台的 2.0 版本开始，所有平台版本中都包含运行状况代理。

运行状况代理报告的指标与 Amazon EC2 Auto Scaling 和 Elastic Load Balancing 作为[基本运行状况报告](using-features.healthstatus.md)的一部分[发布](using-features.healthstatus.md#monitoring-basic-cloudwatch)的指标类似，包括 CPU 负载、HTTP 代码和延迟。 CloudWatch不过，运行状况代理会以与基本运行状况报告相比更小的粒度和更高的频率直接向 Elastic Beanstalk 报告。

对于基本运行状况，这些指标每五分钟发布一次，并且可通过环境管理控制台中的图表监控。对于增强型运行状况，Elastic Beanstalk 运行状况代理每 10 秒向 Elastic Beanstalk 报告指标一次。Elastic Beanstalk 使用运行状况代理提供的指标来确定环境中每个实例的运行状况状态，并将这些指标与其他[因素](#health-enhanced-factors)结合使用来确定环境的总体运行状况。

环境的整体运行状况可以在 Elastic Beanstalk 控制台的环境概述页面中实时查看，并 CloudWatch 由 Elastic Beanstalk 每 60 秒发布一次。您可以使用 [EB CLI](eb-cli3.md) 中的 [**eb health**](health-enhanced-ebcli.md) 命令实时查看运行状况代理报告的详细指标。

只需支付额外费用，您就可以选择 CloudWatch 每隔 60 秒发布一次单个实例和环境级别的指标。然后，发布到 CloudWatch 的指标可用于在[环境管理控制台](environments-console.md)中创建[监控图表](environment-health-console.md#environment-health-console-customize)。

增强型运行状况报告仅在您选择将增强型运行状况指标发布到 CloudWatch 时产生费用。在使用增强型运行状况时，您仍可免费发布基本运行状况指标，即使您不选择发布增强型运行状况指标。

请参阅[实例指标](health-enhanced-metrics.md)以了解有关运行状况代理报告的指标的详细信息。有关向发布增强型运行状况指标的详细信息 CloudWatch，请参阅[为环境发布 Amazon CloudWatch 自定义指标](health-enhanced-cloudwatch.md)。

## 实例和环境运行状况的确定因素


除基本运行状况报告系统检查（包括[Elastic Load Balancing 运行状况检查](using-features.healthstatus.md#using-features.healthstatus.understanding)和[资源监控](using-features.healthstatus.md#monitoring-basic-additionalchecks)）之外，Elastic Beanstalk 增强型运行状况报告还收集有关您的环境中的实例状态的其他数据。这包括操作系统指标、服务器日志以及正在进行的环境操作（如部署和更新）的状态。Elastic Beanstalk 运行状况报告服务将来自所有可用源的信息合并在一起，并分析这些信息以确定环境的总体运行状况。



### 操作和命令


当您对环境执行某项操作（如部署新版本的应用程序）时，Elastic Beanstalk 将进行多项影响环境的运行状况状态的更改。

例如，如果您将某个应用程序的新版本部署到正在运行多个实例的环境中，您可能会在[使用 EB CLI](health-enhanced-ebcli.md) 监控环境的运行状况时看到如下类似的消息。

```
  id             status     cause
    Overall      Info       Command is executing on 3 out of 5 instances
  i-bb65c145     Pending    91 % of CPU is in use. 24 % in I/O wait
                            Performing application deployment (running for 31 seconds)
  i-ba65c144     Pending    Performing initialization (running for 12 seconds)
  i-f6a2d525     Ok         Application deployment completed 23 seconds ago and took 26 seconds
  i-e8a2d53b     Pending    94 % of CPU is in use. 52 % in I/O wait
                            Performing application deployment (running for 33 seconds)
  i-e81cca40     Ok
```

在此示例中，环境的总体状态为 `Ok`，此状态的原因是 *Command is executing on 3 out of 5 instances*。环境中的三个实例的状态为*等待*，表示一项操作正在进行。

当一项操作完成时，Elastic Beanstalk 将报告有关该操作的额外信息。对于本示例，Elastic Beanstalk 显示了有关一个已使用应用程序的新版本进行更新的实例的以下信息：

```
i-f6a2d525     Ok         Application deployment completed 23 seconds ago and took 26 seconds
```

实例运行状况信息还包括有关环境中每个实例的最新部署的详细信息。每个实例都会报告一个部署 ID 和状态。部署 ID 是一个整数，每次在您部署新版本的应用程序或针对环境变量等有关实例的配置选项更改设置时，其数量就会增加一个。[滚动部署](using-features.rolling-version-deploy.md)失败后，您可以使用部署信息来识别那些运行错误应用程序版本的实例。

在原因列中，Elastic Beanstalk 包括有关成功的操作以及在多个运行状况检查中的其他运行状况状态的信息性消息，但它们不会无限期保持。运行状况不佳的环境状态的原因将持续，直到环境恢复运行状况良好状态。

### 命令超时


Elastic Beanstalk 从操作开始的时间起应用一个命令超时，以允许实例转换为运行状况良好状态。此命令超时在您的环境的更新和部署配置中设置（在 [aws:elasticbeanstalk:command](command-options-general.md#command-options-general-elasticbeanstalkcommand) 命名空间中），默认为 10 分钟。

在滚动更新期间，Elastic Beanstalk 将为操作中每个批次应用不同的超时。此超时将作为环境的滚动更新配置的一部分设置（在 [aws:autoscaling:updatepolicy:rollingupdate](command-options-general.md#command-options-general-autoscalingupdatepolicyrollingupdate) 命名空间中）。如果在滚动更新超时期间，该批次中所有实例都运行状况良好，则操作将继续到下一个批次。否则，操作将失败。

**注意**  
如果应用程序未通过运行状况检查（即未处于 **OK (正常)** 状态），但在另一级别很稳定，您可以在 [`HealthCheckSuccessThreshold`](command-options-general.md#command-options-general-elasticbeanstalkcommand)中设置 `aws:elasticbeanstalk:command namespace` 选项，从而更改 Elastic Beanstalk 将实例视为运行状况良好的级别。

一个 Web 服务器环境若要被视为运行状况良好，该环境或批次中每个实例必须在两分钟内连续通过 12 次运行状况检查。对于工作线程层环境，每个实例必须通过 18 次运行状况检查。在命令超时之前，Elastic Beanstalk 不会在运行状况检查失败时降低环境的运行状况状态。如果环境中的实例在命令超时范围内转变为运行状况良好，则操作成功。

### HTTP 请求


当没有对环境正在进行的操作时，有关实例和环境运行状况的主要信息源为每个实例的 Web 服务器日志。为了确定实例的运行状况和环境的总体运行状况，Elastic Beanstalk 将考虑请求的数量、每个请求的结果以及解决每个请求的速度。

在基于 Linux 的平台上，Elastic Beanstalk 将读取并解析 Web 服务器日志以获取有关 HTTP 请求的信息。在 Windows Server 平台上，Elastic Beanstalk 将[直接从 IIS Web 服务器](health-enhanced-metrics-server-iis.md)接收此信息。

您的环境可能不具有有效的 Web 服务器。例如，多容器 Docker 平台不包含 Web 服务器。其他平台包括一个 Web 服务器，并且您的应用程序可能会将其禁用。在这些情况下，您的环境需要额外的配置，以向 [Elastic Beanstalk 运行状况代理](#health-enhanced-agent)提供日志，日志格式为将运行状况信息中继到 Elastic Beanstalk 服务所需的格式。有关更多信息，请参阅 [增强型运行状况日志格式](health-enhanced-serverlogs.md)。

### 操作系统指标


Elastic Beanstalk 监控运行状况代理报告的操作系统指标以识别系统资源始终较少的实例。

请参阅[实例指标](health-enhanced-metrics.md)以了解有关运行状况代理报告的指标的详细信息。

## 运行状况检查规则自定义


Elastic Beanstalk 增强型运行状况报告依靠一组规则来确定环境的运行状况。其中一些规则可能不适合您的特定应用程序。一种常见情况是应用程序设计为频繁返回 HTTP 4xx 错误。Elastic Beanstalk 使用其默认规则之一判断出现问题，并根据错误比率将您环境的运行状况从“正常”更改为“警告”、“已降级”或“严重”。为正确处理这种情况，Elastic Beanstalk 允许您配置此规则并忽略应用程序 HTTP 4xx 错误。有关详细信息，请参阅[为环境配置增强型运行状况规则](health-enhanced-rules.md)。

## 增强型运行状况角色


增强型运行状况报告需要两个角色：一个适用于 Elastic Beanstalk 的服务角色和一个适用于环境的实例配置文件。服务角色允许 Elastic Beanstalk 代表您 Amazon 与其他服务进行交互，以收集有关您环境中资源的信息。实例配置文件允许环境中的实例向 Amazon S3 写入日志并向 Elastic Beanstalk 服务传递增强型运行状况信息。

使用 Elastic Beanstalk 控制台或 EB CLI 创建 Elastic Beanstalk 环境时，Elastic Beanstalk 会创建默认服务角色并将所需的托管策略附加到您环境的默认实例配置文件。

如果您使用 API、SDK 或创建环境，则必须提前创建这些角色，并在创建环境时指定这些角色才能使用增强型运行状况。 Amazon CLI 有关为您的环境创建适当角色的说明，请参阅[Elastic Beanstalk 服务角色、实例配置文件和用户策略](concepts-roles.md)。

我们建议您对实例配置文件和服务角色使用*托管策略*。托管策略是 Elastic Beanstalk 维护的 Amazon Identity and Access Management (IAM) 策略。使用托管策略可确保您的环境具有其正常运行所需的所有权限。

对于实例配置文件，您可以分别对 [Web 服务器层](concepts-webserver.md)或[工作线程层](concepts-worker.md)环境使用 `AWSElasticBeanstalkWebTier` 或 `AWSElasticBeanstalkWorkerTier` 托管策略。有关这两个托管实例配置文件策略的详细信息，请参阅 [管理 Elastic Beanstalk 实例配置文件](iam-instanceprofile.md)。

## 增强型运行状况授权


Elastic Beanstalk 实例配置文件托管策略包含 `elasticbeanstalk:PutInstanceStatistics` 操作的权限。此操作不是 Elastic Beanstalk API 的一部分。这是不同的 API 的一部分，环境实例在内部使用它向 Elastic Beanstalk 服务传递增强型运行状况信息。您不直接调用此 API。

创建新环境时，默认状态下已启用 `elasticbeanstalk:PutInstanceStatistics` 操作的授权。为了提高环境的安全性并帮助防止以您的名义骗取运行状况数据，我们建议您启用该操作的授权。如果您对实例配置文件使用托管策略，则此功能将可在您的新环境中使用，而无需进行进一步配置。如果您使用*自定义实例配置文件*而不是*托管策略*，则您的环境可能会显示 **No Data**（无数据）运行状况状态。发生这种情况的原因是，实例未获授权执行将增强型运行状况数据传送到服务的操作。

要授权执行此操作，请在您的实例配置文件中包含以下语句。

```
    {
      "Sid": "ElasticBeanstalkHealthAccess",
      "Action": [
        "elasticbeanstalk:PutInstanceStatistics"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:*:*:application/*",
        "arn:aws:elasticbeanstalk:*:*:environment/*"
      ]
    }
```

如果您目前不想使用增强型运行状况授权，则可以将 [aws:elasticbeanstalk:healthreporting:system](command-options-general.md#command-options-general-elasticbeanstalkhealthreporting) 命名空间中的 `EnhancedHealthAuthEnabled` 选项设为 `false`。如果此选项处于禁用状态，则不需要前面所述的权限。您可以从实例配置文件中删除它们，以获得对应用程序和环境的[最小权限访问](security-best-practices.md#security-best-practices.preventive.least-priv)。

**注意**  
以前 `EnhancedHealthAuthEnabled` 默认设置为 `false`，这会导致默认情况下，`elasticbeanstalk:PutInstanceStatistics` 操作的授权也会遭禁用。要为现有环境启用此操作，请将 [aws:elasticbeanstalk:healthreporting:system](command-options-general.md#command-options-general-elasticbeanstalkhealthreporting) 命名空间中的 `EnhancedHealthAuthEnabled` 选项设为 `true`。您可以通过在[配置文件](ebextensions.md)中使用[选项设置](ebextensions-optionsettings.md)来配置此选项。

## 增强型运行状况事件


当环境在不同状态间转换时，增强型运行状况系统将生成事件。以下示例显示了环境在**信息**、**正常**和**严重**状态间转换时输出的事件。

![\[Elastic Beanstalk 控制台的 Elastic Beanstalk 环境概述页面，此页面显示了增强型运行状况最新事件\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-events.png)


转换到较差的状态时，增强型运行状况事件将包括一条消息，指示转换原因。

并非所有实例级别的状态更改都会导致 Elastic Beanstalk 发送事件。为了防止错误警报，仅当一个问题在多次检查中连续出现时，Elastic Beanstalk 才生成与运行状况相关的事件。

实时的环境级别运行状况信息（包括状态、颜色和原因）可在 Elastic Beanstalk 控制台和 [EB CLI](eb-cli3.md) 的[环境概述](environments-dashboard.md)页面中找到。通过将 EB CLI 连接到您的环境并运行 [**eb health**](health-enhanced-ebcli.md) 命令，您还可以查看来自环境中每个实例的实时状态。

## 更新、部署和扩展期间的增强型运行状况报告行为


启用增强型运行状况报告可影响您的环境在配置更新和部署期间的行为。在所有实例一致通过运行状况检查之前，Elastic Beanstalk 不会完成批量更新。此外，由于增强型运行状况报告将对运行状况应用更高标准并监控更多因素，因此通过了基本运行状况报告的 [ELB 运行状况检查](using-features.healthstatus.md#using-features.healthstatus.understanding)的实例不一定通过增强型运行状况报告的检查。请参阅有关[滚动配置更新](using-features.rollingupdates.md)和[滚动部署](using-features.rolling-version-deploy.md)的主题，以了解有关运行状况检查如何影响更新过程的详细信息。

增强型运行状况报告还可以凸显为 Elastic Load Balancing 设置恰当的[运行状况检查 URL](environments-cfg-clb.md#using-features.managing.elb.healthchecks) 的必要性。当您的环境纵向扩展以满足需求时，新的实例在通过足够的 ELB 运行状况检查之后便会立即开始接收请求。如果没有配置运行状况检查 URL，则这可能是在新实例能够接受 TCP 连接之后的短短 20 秒。

如果您的应用程序在负载均衡器声明其运行状况足够良好并可以接受流量之前还没有完成启动，您将会看到一大批失败的请求，而且您的环境将开始让运行状况检查失败。命中您的应用程序所服务的路径的运行状况检查 URL 可防止此问题。在对运行状况检查 URL 的 GET 请求返回 200 状态代码之前，ELB 运行状况检查不会通过。

# 启用 Elastic Beanstalk 增强型运行状况报告
启用增强型运行状况

本主题介绍如何启用增强型运行状况报告。它为您提供了使用 Elastic Beanstalk 控制台、EB CLI 和 .ebextensions 配置为您的环境启用增强型运行状况功能的过程。

使用最新[平台版本](concepts.platforms.md)创建的新环境包括支持增强型 Amazon Elastic Beanstalk [运行状况报告的运行状况代理](health-enhanced.md#health-enhanced-agent)。如果您在 Elastic Beanstalk 控制台中或使用 EB CLI 创建环境，则默认启用增强型运行状况。您也可以使用[配置文件](ebextensions.md)在应用程序的源代码中设置运行状况报告首选项。

增强型运行状况报告要求[实例配置文件](concepts-roles-instance.md)和有标准权限集的[服务角色](concepts-roles-service.md)。在 Elastic Beanstalk 控制台中创建环境时，Elastic Beanstalk 会自动创建所需的角色。有关创建您的第一个环境的说明，请参阅[了解如何开始使用 Elastic Beanstalk](GettingStarted.md)。

**Topics**
+ [

## 使用 Elastic Beanstalk 控制台启用增强型运行状况报告
](#health-enhanced-enable-console)
+ [

## 使用 EB CLI 启用增强型运行状况报告
](#health-enhanced-enable-ebcli)
+ [

## 使用配置文件启用增强型运行状况报告
](#health-enhanced-enable-config)

## 使用 Elastic Beanstalk 控制台启用增强型运行状况报告


**使用 Elastic Beanstalk 控制台在正在运行的环境中启用增强型运行状况报告**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Monitoring (监控)** 配置类别中，选择 **Edit (编辑)**。

1. 在**运行状况报告**下，为**系统**选择**增强型**。
**注意**  
如果您使用的是[不受支持的平台或版本](health-enhanced.md)，则不会显示用于增强型运行状况报告的选项。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

在使用版本 2 (v2) 平台版本创建新环境时，Elastic Beanstalk 控制台默认使用增强型运行状况报告。您可以通过在环境创建期间更改运行状况报告选项来禁用增强型运行状况报告。

**在使用 Elastic Beanstalk 控制台创建环境时禁用增强型运行状况报告**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. [创建一个应用程序](applications.md)或选择现有应用程序。

1. [创建一个环境](using-features.environments.md)。在**创建新环境**页面上，在选择**创建环境**之前，选择**配置更多选项**。

1. 在 **Monitoring (监控)** 配置类别中，选择 **Edit (编辑)**。

1. 在**运行状况报告**下，为**系统**选择**基本**。

1. 选择**保存**。

## 使用 EB CLI 启用增强型运行状况报告


在使用 **eb create** 命令创建新环境时，EB CLI 默认启用增强型运行状况报告并应用默认实例配置文件和服务角色。

您可以使用 `--service-role` 选项通过名称指定不同的服务角色。

如果您有一个在 v2 平台版本上使用基本运行状况报告运行的环境且希望将其切换到增强型运行状况，请按以下步骤操作。

**使用 [EB CLI](eb-cli3.md) 在正在运行的环境上启用增强型运行状况**

1. 使用 **eb config** 命令在默认文本编辑器中打开配置文件。

   ```
   ~/project$ eb config
   ```

1. 在设置部分找到 `aws:elasticbeanstalk:environment` 命名空间。确保 `ServiceRole` 的值不为空且与您的[服务角色](concepts-roles-service.md)的名称匹配。

   ```
     aws:elasticbeanstalk:environment:
       EnvironmentType: LoadBalanced
       ServiceRole: aws-elasticbeanstalk-service-role
   ```

1. 在 `aws:elasticbeanstalk:healthreporting:system:` 命名空间下，将 `SystemType` 的值更改为 **enhanced**。

   ```
     aws:elasticbeanstalk:healthreporting:system:
       SystemType: enhanced
   ```

1. 保存配置文件，关闭文本编辑器。

1. EB CLI 将启动环境更新以应用配置更改。等待操作完成或按 **Ctrl\$1C** 以安全退出。

   ```
   ~/project$ eb config
   Printing Status:
   INFO: Environment update is starting.
   INFO: Health reporting type changed to ENHANCED.
   INFO: Updating environment no-role-test's configuration settings.
   ```

## 使用配置文件启用增强型运行状况报告


您可以通过在源包中包含[配置文件](ebextensions.md)来启用增强型运行状况报告。下面示例的配置文件启用增强型运行状况报告并为环境分配默认服务和实例配置文件：

**Example .ebextensions/enhanced-health.config**  

```
option_settings:
  aws:elasticbeanstalk:healthreporting:system:
    SystemType: enhanced
  aws:autoscaling:launchconfiguration:
    IamInstanceProfile: aws-elasticbeanstalk-ec2-role
  aws:elasticbeanstalk:environment:
    ServiceRole: aws-elasticbeanstalk-service-role
```

如果您创建了自己的实例配置文件或服务角色，请将突出显示的文本替换为这些角色的名称。

# 采用环境管理控制台的增强型运行状况监控
运行状况控制台

在中启用增强型运行状况报告后 Amazon Elastic Beanstalk，可以在环境[管理控制台中监控环境](environments-console.md)运行状况。

**Topics**
+ [

## 环境概述
](#health-enhanced-console-overview)
+ [

## 环境运行状况页面
](#health-enhanced-console-healthpage)
+ [

## 监控页面
](#health-enhanced-console-monitoringpage)

## 环境概述


[环境概述](environments-dashboard.md)会显示环境的[运行状况](health-enhanced-status.md)，并列出可提供有关运行状况的最新更改信息的事件。

**查看环境概述**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

有关当前环境运行状况的详细信息，请选择 **Causes (原因)** 来打开 **Health (运行状况)** 页面。或者，在导航窗格中，选择 **Health (运行状况)**。

## 环境运行状况页面


He **al** th 页面显示环境和环境中每个 Amazon EC2 实例的运行状况、指标和原因。

**注意**  
只有当您为环境[启用了增强型运行状况监控](health-enhanced-enable.md)时，Elastic Beanstalk 才会显示 **Health**（运行状况）页面。

下图显示了 Linux 环境的 **Health (运行状况)** 页面。

![\[Linux 环境的“environment health (环境运行状况)”页面\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-instances.png)


下图显示了 Windows 环境 **Health (运行状况)** 页面。请注意，CPU 指标与 Linux 环境中的相应指标不同。

![\[Windows 环境的“环境运行状况”页面。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-instances-win.png)


在页面顶部，您可以看到环境实例的总数以及每种状态所对应的实例数。要仅显示处于特定状态的实例，请选择 **Filter By (筛选依据)**，然后选择一种[状态](health-enhanced-status.md)。

![\[环境运行状况页面，其中显示了用于选择要显示的实例状态的筛选依据菜单\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-instances-status.png)


要重启或终止运行不正常的实例，请选择 **Instance Actions (实例操作)**，然后选择 **Reboot (重启)** 或 **Terminate (终止)**。

![\[“环境运行状况”页面，显示“实例操作”菜单，用于重启或终止运行状况不佳的实例。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-instances-actions.png)


Elastic Beanstalk 每 10 秒更新一次 **Health (运行状况)** 页面。它报告了有关环境和实例运行状况的信息。

对于环境中的每个 Amazon EC2 实例，该页面会显示实例的 ID 和[状态](health-enhanced-status.md)、实例启动以来的时间、在该实例上执行的最新部署的 ID、该实例处理的请求的响应和延迟，以及负载和 CPU 使用率信息。**Overall (总体)** 行显示整个环境的平均响应和延迟信息。

此页面在一个非常宽的表中显示了许多详细信息。要隐藏某些列，请选择 ![\[the cog icon.\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/cog.png)（**Preferences (首选项)**）。选择或清除列名称，然后选择 **Confirm (确认)**。

![\[选择要在环境运行状况页面上显示的列\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-console-preferences.png)


选择任意实例的 **Instance ID (实例 ID)** 可查看有关该实例的更多信息，包括其可用区和实例类型。

![\[环境运行状况页面上的服务器指标以及实例信息\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-console-instance.png)


选择任意实例的 **Deployment ID (部署 ID)** 可查看有关针对实例的上次[部署](using-features.deploy-existing-version.md)的信息。

![\[环境运行状况页面上的服务器指标以及部署信息\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-console-deployment.png)


部署信息包括以下内容：
+ **部署 ID** - [部署](using-features.deploy-existing-version.md)的唯一标识符。部署 IDs 从 1 开始，每次部署新的应用程序版本或更改影响环境中实例上运行的软件或操作系统的配置设置时，部署将增加 1。
+ **版本** - 部署中所用应用程序源代码的版本标签。
+ **状态** - 部署状态，可以是 `In Progress`、`Deployed` 或 `Failed`。
+ **时间** - 对于正在进行的部署，表示部署开始时间。对于已完成的部署，表示部署结束时间。

如果您在环境中[启用 X-Ray 集成](environment-configuration-debugging.md)并使用 Amazon X-Ray SDK 对应用程序进行检测，则 He **alth** 页面会在概述行中添加指向 Amazon X-Ray 控制台的链接。

![\[请求“environment health (环境运行状况)”页面上的指标\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-console-xray.png)


选择一个链接，在 Amazon X-Ray 控制台中查看与突出显示的统计数据相关的跟踪。

## 监控页面


**监控**页面显示增强型运行状况报告系统生成的自定义 Amazon CloudWatch 指标的摘要统计数据和图表。有关将图表和统计数据添加到此页面的说明，请参阅[在 Amazon 管理控制台中监控环境运行状况](environment-health-console.md)。

# 运行状况颜色和状态


与[基本运行状况报告](using-features.healthstatus.md)类似，增强型运行状况报告使用四种颜色来代表实例和总体环境运行状况。增强型运行状况报告还提供七种运行状况状态，这些单个词的描述符将更好地指明您的环境的状态。

## 实例状态和环境状态


每次 Elastic Beanstalk 对您的环境运行运行状况检查时，增强型运行状况报告将通过分析所有可用[数据](health-enhanced.md#health-enhanced-factors)来检查您的环境中每个实例的运行状况。如果任何较低级别的检查未通过，则 Elastic Beanstalk 将降低实例的运行状况级别。

Elastic Beanstalk 在[环境管理控制台](environments-console.md)中显示有关总体环境的运行状况信息（颜色、状态和原因）。此信息也可在 EB CLI 中找到。各个实例的运行状况状态和原因消息每 10 秒更新一次，并且，当使用 [**eb health**](health-enhanced-ebcli.md) 查看运行状况时，这些信息会在 [EB CLI](eb-cli3.md) 中提供。

Elastic Beanstalk 使用实例运行状况中的更改来评估环境运行状况，但不会立即更改环境运行状况状态。如果一个实例在任意的一分钟时间段内至少三次未通过运行状况检查，则 Elastic Beanstalk 会将环境的运行状况降级。根据环境中实例的数量和识别的问题，一个运行状况不佳的实例可能会导致 Elastic Beanstalk 显示一条信息性消息，或导致环境的运行状况状态从绿色（**OK (正常)**）更改为黄色（**Warning (警告)**）或红色（**Degraded (降级)** 或 **Severe (严重)**）。

## 正常 (绿色)


在以下情况下显示此状态：
+ 一个实例通过了运行状况检查，且运行状况代理没有报告任何问题。
+ 环境中的大多数实例通过了运行状况检查，且运行状况代理没有报告重大问题。
+ 一个实例通过了运行状况检查并正常完成请求。

*示例：*您的环境最近进行了部署，并且正在正常接收请求。5% 的请求返回 400 系列错误。对每个实例的部署正常完成。

*消息（实例）：*应用程序部署已于 23 秒前完成，耗时 26 秒。

## 警告 (黄色)


在以下情况下显示此状态：
+ 运行状况代理报告了实例或环境的中等数量的请求失败或其他问题。
+ 正在对一个实例进行一项操作且耗费很长时间。

*示例：*环境中的一个实例的状态为**严重**。

*消息（环境）：*5 个实例中有 1 个实例的服务受损。

## 降级 (红色)


当运行状况代理报告了实例或环境的大量的请求失败或其他问题时，显示此状态。

*示例：*环境处于扩展到 5 个实例的过程中。

*消息（环境）：*4 个活动实例低于 Auto Scaling 组的最小大小 5。

## 严重 (红色)


当运行状况代理报告了实例或环境的非常大量的请求失败或其他问题时，显示此状态。

*示例：*Elastic Beanstalk 无法联系负载均衡器来获取实例运行状况。

*消息（环境）：*ELB 运行状况失败或对所有实例均不可用。任何实例都未发送数据。无法担任角色 “arn: aws: iam:: 123456789012: role/”。aws-elasticbeanstalk-service-role确认角色存在并已正确配置。

*消息（实例）：*实例 ELB 运行状况已在 37 分钟的时间内不可用。没有数据。上次显示还是在 37 分钟前。

## 信息 (绿色)


在以下情况下显示此状态：
+ 正在对一个实例进行一项操作。
+ 正在对环境中几个实例进行一项操作。

*示例：*正在将新的应用程序版本部署到正在运行的实例。

*消息（环境）：*正在对 5 个实例中的 3 个实例执行命令。

*消息（实例）：*正在执行应用程序部署（运行了 3 秒）。

## 等待 (灰色)


在[命令超时](health-enhanced.md#health-enhanced-factors-timeout)范围内正在对一个实例进行一项操作时，显示此状态。

*示例：*您最近创建了环境，实例正在进行引导启动。

*消息：*正在执行初始化（运行了 12 秒）。

## 未知 (灰色)


Elastic Beanstalk 和运行状况代理报告实例上的数据量不足时显示此状态。

*示例：*未接收数据。

## 已暂停（灰色）


当 Elastic Beanstalk 停止监控环境的运行状况时，显示此状态。环境可能无法正常工作。某些严重运行状况（如果持续较长时间）会导致 Elastic Beanstalk 将环境转换为**暂停**状态。

*示例：*Elastic Beanstalk 无法访问环境的[服务角色](iam-servicerole.md)。

*示例：*Elastic Beanstalk 为环境创建的 [Auto Scaling](using-features.managing.as.md) 组已被删除。

*消息：*环境运行状况已从**正常**转换为**严重**。没有实例。Auto Scaling 组所需的容量已设置为 1。

# 实例指标


实例指标提供有关环境中实例运行状况的信息。每个实例上都有 [Elastic Beanstalk 运行状况代理](health-enhanced.md#health-enhanced-agent)运行。此代理收集有关实例的指标并将指标中继到 Elastic Beanstalk，后者分析这些指标以确定您环境中实例的运行状况。

实例上 Elastic Beanstalk 运行状况代理从 Web 服务器和操作系统中收集有关实例的指标。为获取有关基于 Linux 的平台的 Web 服务器信息，Elastic Beanstalk 将读取并解析 Web 服务器日志。在 Windows Server 平台上，Elastic Beanstalk 将直接从 IIS Web 服务器接收此信息。Web 服务器提供有关传入 HTTP 请求的信息：传入请求的数量、出错请求的数量以及解决错误所花时间。操作系统提供有关实例资源状态的快照信息：CPU 负载及每种处理类型的用时分布。

运行状况代理收集 Web 服务器和操作系统指标，并且每 10 秒将它们中继到 Elastic Beanstalk。Elastic Beanstalk 分析这些数据并使用分析结果来更新每个实例和环境的运行状况状态。

**Topics**
+ [

## Web 服务器指标
](#health-enhanced-metrics-server)
+ [

## 操作系统指标
](#health-enhanced-metrics-os)
+ [

# Windows Server 上的 IIS 中的 Web 服务器指标捕获
](health-enhanced-metrics-server-iis.md)

## Web 服务器指标


在基于 Linux 的平台上，Elastic Beanstalk 运行状况代理从日志（由处理针对环境中每个实例的请求的 Web 容器或服务器生成）读取 Web 服务器指标。Elastic Beanstalk 平台配置为生成两个日志：一个为人类可读的格式，另一个为机器可读的格式。运行状况代理每 10 秒将机器可读的日志中继到 Elastic Beanstalk 一次。

有关 Elastic Beanstalk 使用的日志格式的更多信息，请参阅[增强型运行状况日志格式](health-enhanced-serverlogs.md)。

在 Windows Server 平台上，Elastic Beanstalk 将一个模块添加到 IIS Web 服务器的请求管道并捕获有关 HTTP 请求时间和响应代码的指标。此模块使用高性能进程间通信 (IPC) 通道将这些指标发送到实例上的运行状况代理。有关实施详细信息，请参阅[Windows Server 上的 IIS 中的 Web 服务器指标捕获](health-enhanced-metrics-server-iis.md)。报告的 Web 服务器指标

`RequestCount`  
过去 10 秒内 Web 服务器每秒处理的请求数。在 EB CLI 和[环境运行状况页面](health-enhanced-console.md#health-enhanced-console-healthpage)中显示为平均 `r/sec`（请求数/秒）。

`Status2xx``Status3xx``Status4xx``Status5xx`  
过去 10 秒内导致每种类型的状态代码的请求数。例如，成功请求返回 200 OK；重定向为 301；如果输入的 URL 与应用程序中任何资源不匹配，则返回 404。  
EB CLI 和[环境运行状况页面](health-enhanced-console.md#health-enhanced-console-healthpage)以实例请求数和占环境总体请求数的百分比的形式显示这些指标。

`p99.9``p99``p95``p90``p85``p75``p50``p10`  
过去 10 秒内最慢的 *x*% 的请求的平均延迟，其中 *x* 是数字与 100 之差。例如，`p99 1.403` 表示过去 10 秒内最慢的 1% 请求的平均延迟为 1.403 秒。

## 操作系统指标


Elastic Beanstalk 运行状况代理将报告以下操作系统指标。Elastic Beanstalk 使用这些指标确定持续承受重负载的实例。这些指标因操作系统而异。报告的操作系统指标 - Linux

`Running`  
自启动实例以来经过的时间量。

`Load 1``Load 5`  
过去一分钟和五分钟时段内的负载平均值。显示为一位小数值，表示该时间段内正在运行的进程的平均数。如果显示的数字大于可用的 vCPUs （线程）数，则余数为等待的平均进程数。  
例如，如果您的实例类型有 4 vCPUs，负载为 4.5，则在该时间段内平均有 0.5 个进程在等待，相当于一个进程有 50% 的时间在等待。

`User %``Nice %``System %``Idle %``I/O Wait %`  
过去 10 秒内 CPU 在每个状态中耗费的时间的百分比。报告的操作系统指标 - Windows

`Running`  
自启动实例以来经过的时间量。

`% User Time``% Privileged Time``% Idle Time`  
过去 10 秒内 CPU 在每个状态中耗费的时间的百分比。

# Windows Server 上的 IIS 中的 Web 服务器指标捕获
IIS 指标捕获

在 Windows Server 平台上，Elastic Beanstalk 将一个模块添加到 IIS Web 服务器的请求管道并捕获有关 HTTP 请求时间和响应代码的指标。此模块使用高性能进程间通信 (IPC) 通道将这些指标发送到实例上的运行状况代理。运行状况代理聚合这些指标，将它们与操作系统指标组合，然后将组合后的指标发送到 Elastic Beanstalk 服务。

## 实施详情


为了从 IIS 捕获指标，Elastic Beanstalk 会实施托管的 [https://msdn.microsoft.com/en-us/library/system.web.ihttpmodule%28v=vs.110%29.aspx](https://msdn.microsoft.com/en-us/library/system.web.ihttpmodule%28v=vs.110%29.aspx) 并订阅 [https://msdn.microsoft.com/en-us/library/system.web.httpapplication.beginrequest(v=vs.110).aspx](https://msdn.microsoft.com/en-us/library/system.web.httpapplication.beginrequest(v=vs.110).aspx) 和 [https://msdn.microsoft.com/en-us/library/system.web.httpapplication.endrequest(v=vs.110).aspx](https://msdn.microsoft.com/en-us/library/system.web.httpapplication.endrequest(v=vs.110).aspx) 事件。这使此模块报告由 IIS 处理的所有 Web 请求的 HTTP 请求延迟和响应代码。为将此模块添加到 IIS 请求管道，Elastic Beanstalk 将在 IIS 配置文件 `%windir%\System32\inetsrv\config\applicationHost.config` 的 [https://docs.microsoft.com/en-us/iis/configuration/system.webserver/modules/](https://docs.microsoft.com/en-us/iis/configuration/system.webserver/modules/) 部分中注册此模块。

IIS 中的 Elastic Beanstalk 模块将捕获的 Web 请求指标发送到实例上的运行状况代理（一项名为 `HealthD` 的 Windows 服务）。为发送此数据，此模块将使用 [https://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding(v=vs.110).aspx](https://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding(v=vs.110).aspx) 来提供针对计算机上通信优化的安全且可靠的绑定。

# 为环境配置增强型运行状况规则
增强型运行状况规则

Amazon Elastic Beanstalk 增强型运行状况报告依赖于一组规则来确定环境的运行状况。其中一些规则可能不适合您的特定应用程序。以下是一些常见的示例：
+ 您使用客户端测试工具。在这种情况下，预计会频繁出现 HTTP 客户端 (4xx) 错误。
+ 您将 [Amazon WAF](https://docs.amazonaws.cn/waf/latest/developerguide/) 与环境的 Application Load Balancer 结合使用来阻止不需要的传入流量。在这种情况下，Application Load Balancer 为每条被拒绝的传入消息返回 HTTP 403。

默认情况下，Elastic Beanstalk 在确定环境的运行状况时会将所有应用程序 HTTP 4xx 错误纳入考虑。它会根据错误率将环境运行状况从**良好**更改为**警告**、**降级**或**严重**。您可以通过 Elastic Beanstalk 配置一些增强型运行状况规则，以便正确处理诸如我们提到的示例这样的情况。您可以选择忽略环境实例上的应用程序 HTTP 4xx 错误，或者忽略环境负载均衡器返回的 HTTP 4xx 错误。本主题介绍如何进行这些配置更改。

**注意**  
目前，这些是唯一可用的增强型运行状况规则自定义设置。您无法配置增强型运行状况规则来忽略除 4xx 之外的其他 HTTP 错误。

## 使用 Elastic Beanstalk 控制台配置增强型运行状况规则


您可以使用 Elastic Beanstalk 控制台在您的环境中配置增强型运行状况规则。

**使用 Elastic Beanstalk控制台配置 HTTP 4xx 状态代码检查**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Monitoring (监控)** 配置类别中，选择 **Edit (编辑)**。

1. 在 **Health monitoring rule customization (运行状况监控规则自定义)** 下，启用或禁用所需的 **Ignore (忽略)** 选项。  
![\[Elastic Beanstalk 控制台的“监控配置”页面上的“运行状况监控规则自定义”部分\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-rule-customization.png)

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

## 使用 EB CLI 配置增强型运行状况规则


您可以通过以下方法使用 EB CLI 配置增强型运行状况规则：在本地保存您的环境的配置，添加用于配置增强型运行状况规则的条目，然后将该配置上传到 Elastic Beanstalk。您可以在环境创建期间或创建后将保存的配置应用于环境。

**使用 EB CLI 和保存的配置来配置 HTTP 4xx 状态代码检查**

1. 使用 [**eb init**](eb-cli3-configuration.md) 初始化您的项目文件夹。

1. 通过运行 **eb create** 命令创建环境。

1. 通过运行 **eb config save** 命令在本地保存配置模板。以下示例使用 `--cfg` 选项指定配置的名称。

   ```
   $ eb config save --cfg 01-base-state
   Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml
   ```

1. 在文本编辑器中打开保存的配置文件。

1. 在 `OptionSettings` > `aws:elasticbeanstalk:healthreporting:system:` 下，添加 `ConfigDocument` 键以列出要配置的各个增强型运行状况规则。以下 `ConfigDocument` 会禁用应用程序 HTTP 4xx 状态代码检查，同时保持启用负载均衡器 HTTP 4xx 代码检查。

   ```
   OptionSettings:
     ...
     aws:elasticbeanstalk:healthreporting:system:
       ConfigDocument:
         Rules:
           Environment:
             Application:
               ApplicationRequests4xx:
                 Enabled: false
             ELB:
               ELBRequests4xx:
                 Enabled: true
         Version: 1
       SystemType: enhanced
   ...
   ```
**注意**  
您可在同一个 `ConfigDocument` 选项设置中结合 `Rules` 和 `CloudWatchMetrics`。[为环境发布 Amazon CloudWatch 自定义指标](health-enhanced-cloudwatch.md)中介绍了 `CloudWatchMetrics`。  
如果您之前启用了 `CloudWatchMetrics`，则您使用 **eb config save** 命令检索的配置文件在 `ConfigDocument` 部分中已经具有 `CloudWatchMetrics` 键。*请勿删除它* - 将 `Rules` 部分添加到相同的 `ConfigDocument` 选项值中。

1. 保存配置文件，关闭文本编辑器。在此示例中，更新的配置文件使用与下载的配置文件不同的名称 (`02-cloudwatch-enabled.cfg.yml`) 保存。这将在上传文件时创建一个单独保存的配置。您可以使用与下载的文件相同的名称覆盖现有配置而无需创建新名称。

1. 使用 **eb config put** 命令将更新的配置文件上传到 Elastic Beanstalk。

   ```
   $ eb config put 02-cloudwatch-enabled
   ```

   当将 **eb config** `get` 和 `put` 命令用于保存的配置时，请勿包含文件名扩展名。

1. 将保存的配置应用于正在运行的环境。

   ```
   $ eb config --cfg 02-cloudwatch-enabled
   ```

   `--cfg` 选项指定一个应用于环境的命名配置文件。可以在本地或在 Elastic Beanstalk 中保存配置文件。如果两个位置中都存在带有指定名称的配置文件，则 EB CLI 将使用本地文件。

## 使用配置文档配置增强型运行状况规则


用于增强型运行状况规则的配置 (config) 文档是列出要配置的规则的 JSON 文档。

以下示例配置文档会禁用应用程序 HTTP 4xx 状态代码检查，并启用负载均衡器 HTTP 4xx 状态代码检查。

```
{
  "Rules": {
    "Environment": {
      "Application": {
        "ApplicationRequests4xx": {
          "Enabled": false
        }
      },
      "ELB": {
        "ELBRequests4xx": {
          "Enabled": true
        }
      }
    }
  },
  "Version": 1
}
```

对于 Amazon CLI，您可以将文档作为选项设置参数中的`Value`键值传递，该参数本身就是一个 JSON 对象。在这种情况下，您必须对所嵌入文档中的引号进行转义。以下命令检查配置设置是否有效。

```
$ aws elasticbeanstalk validate-configuration-settings --application-name my-app --environment-name my-env --option-settings '[
    {
        "Namespace": "aws:elasticbeanstalk:healthreporting:system",
        "OptionName": "ConfigDocument",
        "Value": "{\"Rules\": { \"Environment\": { \"Application\": { \"ApplicationRequests4xx\": { \"Enabled\": false } }, \"ELB\": { \"ELBRequests4xx\": {\"Enabled\": true } } } }, \"Version\": 1 }"
    }
]'
```

对于采用 YAML 的 `.ebextensions` 配置文件，您可以按原样提供 JSON 文档。

```
  option_settings:
    - namespace: aws:elasticbeanstalk:healthreporting:system
      option_name: ConfigDocument
      value: {
  "Rules": {
    "Environment": {
      "Application": {
        "ApplicationRequests4xx": {
          "Enabled": false
        }
      },
      "ELB": {
        "ELBRequests4xx": {
          "Enabled": true
        }
      }
    }
  },
  "Version": 1
}
```

# 为环境发布 Amazon CloudWatch 自定义指标
CloudWatch

您可以将通过 Amazon Elastic Beanstalk 增强型运行状况报告收集的数据 CloudWatch 作为自定义指标发布到 Amazon。发布指标 CloudWatch 可让您监控应用程序性能随时间推移而发生的变化，并通过跟踪资源使用情况和请求延迟随负载的变化情况来识别潜在问题。

通过将指标发布到 CloudWatch，您还可以将其与[监控图表](environment-health-console.md#environment-health-console-graphs)和[警报](using-features.alarms.md)一起使用。当您使用增强型运行状况报告时 *EnvironmentHealth*，会自动启用一个免费指标。除标准[CloudWatch 费用以外的自定义指标*EnvironmentHealth*均会产生费用](https://www.amazonaws.cn/cloudwatch/pricing/)。

要发布环境的 CloudWatch 自定义指标，必须先启用该环境的增强型运行状况报告。有关说明，请参阅[启用 Elastic Beanstalk 增强型运行状况报告](health-enhanced-enable.md)：

**Topics**
+ [

## 增强型运行状况报告指标
](#health-enhanced-cloudwatch-metrics)
+ [

## 使用 Elastic Beanstalk 控制台配置 CloudWatch 指标
](#health-enhanced-cloudwatch-console)
+ [

## 使用 EB CLI 配置 CloudWatch 自定义指标
](#health-enhanced-cloudwatch-ebcli)
+ [

## 提供自定义指标配置文件
](#health-enhanced-cloudwatch-configdocument)

## 增强型运行状况报告指标


当您在环境中启用增强型运行状况报告时，增强型运行状况报告系统会自动发布一个[CloudWatch 自定义指标*EnvironmentHealth*](https://docs.amazonaws.cn/AmazonCloudWatch/latest/DeveloperGuide/publishingMetrics.html)。[要向发布其他指标 CloudWatch，请使用 Elastic Bean [stalk [控制台](#health-enhanced-cloudwatch-ebcli)、EB CLI 或.ebexten](#health-enhanced-cloudwatch-console) sions 使用这些指标配置您的环境。](command-options.md)

您可以将以下增强型运行状况指标从您的环境发布到 CloudWatch。可用指标 – 所有平台

`EnvironmentHealth`  
*仅环境。*除非您配置其他 CloudWatch 指标，否则这是增强型运行状况报告系统发布的唯一指标。环境运行状况由七种[状态](health-enhanced-status.md)之一表示。在 CloudWatch 控制台中，这些状态映射到以下值：  
+ 0 - 正常
+ 1 - 信息
+ 5 - 未知
+ 10 - 无数据
+ 15 - 警告
+ 20 - 已降级
+ 25 - 严重

`InstancesSevere``InstancesDegraded``InstancesWarning``InstancesInfo``InstancesOk``InstancesPending``InstancesUnknown``InstancesNoData`  
*仅环境。*些指标表示环境中处于每种运行状况的实例的数量。`InstancesNoData` 表示未在为其接收数据的实例的数量。

`ApplicationRequestsTotal``ApplicationRequests5xx``ApplicationRequests4xx``ApplicationRequests3xx``ApplicationRequests2xx`  
*实例和环境。*表示实例或环境完成的请求的总数量以及每种状态代码类别的请求的数量。

`ApplicationLatencyP10``ApplicationLatencyP50``ApplicationLatencyP75``ApplicationLatencyP85``ApplicationLatencyP90``ApplicationLatencyP95``ApplicationLatencyP99``ApplicationLatencyP99.9`  
*实例和环境。*表示完成最快的 *x*% 的请求所耗费的平均时间量（以秒为单位）。

`InstanceHealth`  
*仅实例。*表示实例的当前运行状况状态。实例运行状况由七种[状态](health-enhanced-status.md)之一表示。在 CloudWatch 控制台中，这些状态映射到以下值：  
+ 0 - 正常
+ 1 - 信息
+ 5 - 未知
+ 10 - 无数据
+ 15 - 警告
+ 20 - 已降级
+ 25 - 严重可用指标 - Linux

`CPUIrq``CPUIdle``CPUUser``CPUSystem``CPUSoftirq``CPUIowait``CPUNice`  
*仅实例。*表示前一分钟 CPU 在每种状态下耗费时间的百分比。

`LoadAverage1min`  
*仅实例。*前一分钟实例的平均 CPU 负载。

`RootFilesystemUtil`  
*仅实例。*表示正在使用的磁盘空间的百分比。可用指标 - Windows

`CPUIdle``CPUUser``CPUPrivileged`  
仅实例。表示前一分钟 CPU 在每种状态下耗费时间的百分比。

## 使用 Elastic Beanstalk 控制台配置 CloudWatch 指标


您可以使用 Elastic Beanstalk 控制台配置您的环境，以便向其发布增强型运行状况报告 CloudWatch 指标，并使其可用于监控图表和警报。

**在 Elastic Beanstalk 控制台中配置 CloudWatch 自定义指标**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Monitoring (监控)** 配置类别中，选择 **Edit (编辑)**。

1. 在**运行状况报告**下，选择要发布到 CloudWatch 的实例和环境指标。要选择多个指标，请在选择时按住 **Ctrl** 键。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

启用 CloudWatch 自定义指标会将其添加到 “[**监控**” 页面](environment-health-console.md)上的可用指标列表中。

## 使用 EB CLI 配置 CloudWatch 自定义指标


您可以通过以下方法使用 EB CLI 配置自定义指标：在本地保存您的环境的配置，添加用于定义要发布的指标的条目，然后将该配置上传到 Elastic Beanstalk。您可以在环境创建期间或创建后将保存的配置应用于环境。

**使用 EB CLI 和保存的配置配置 CloudWatch 自定义指标**

1. 使用 [**eb init**](eb-cli3-configuration.md) 初始化您的项目文件夹。

1. 通过运行 **eb create** 命令创建环境。

1. 通过运行 **eb config save** 命令在本地保存配置模板。以下示例使用 `--cfg` 选项指定配置的名称。

   ```
   $ eb config save --cfg 01-base-state
   Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml
   ```

1. 在文本编辑器中打开保存的配置文件。

1. 在 `OptionSettings` > 下`aws:elasticbeanstalk:healthreporting:system:`，添加一个`ConfigDocument`密钥以启用您想要的每个 CloudWatch 指标。例如，以下 `ConfigDocument` 将在环境级别发布 `ApplicationRequests5xx` 和 `ApplicationRequests4xx` 指标，并在实例级别发布 `ApplicationRequestsTotal` 指标。

   ```
   OptionSettings:
     ...
     aws:elasticbeanstalk:healthreporting:system:
       ConfigDocument:
         CloudWatchMetrics:
           Environment:
             ApplicationRequests5xx: 60
             ApplicationRequests4xx: 60
           Instance:
             ApplicationRequestsTotal: 60
         Version: 1
       SystemType: enhanced
   ...
   ```

   在示例中，60 表示指标度量之间的秒数。目前，这是唯一支持的值。
**注意**  
您可在同一个 `ConfigDocument` 选项设置中结合 `CloudWatchMetrics` 和 `Rules`。[为环境配置增强型运行状况规则](health-enhanced-rules.md)中介绍了 `Rules`。  
如果您以前使用 `Rules` 配置增强型运行状况规则，则您使用 **eb config save** 命令检索的配置文件在 `ConfigDocument` 部分中已经具有 `Rules` 键。*请勿删除它* - 将 `CloudWatchMetrics` 部分添加到相同的 `ConfigDocument` 选项值中。

1. 保存配置文件，关闭文本编辑器。在此示例中，更新的配置文件使用与下载的配置文件不同的名称 (`02-cloudwatch-enabled.cfg.yml`) 保存。这将在上传文件时创建一个单独保存的配置。您可以使用与下载的文件相同的名称覆盖现有配置而无需创建新名称。

1. 使用 **eb config put** 命令将更新的配置文件上传到 Elastic Beanstalk。

   ```
   $ eb config put 02-cloudwatch-enabled
   ```

   当将 **eb config** `get` 和 `put` 命令用于保存的配置时，请勿包含文件扩展名。

1. 将保存的配置应用于正在运行的环境。

   ```
   $ eb config --cfg 02-cloudwatch-enabled
   ```

   `--cfg` 选项指定一个应用于环境的命名配置文件。可以在本地或在 Elastic Beanstalk 中保存配置文件。如果两个位置中都存在带有指定名称的配置文件，则 EB CLI 将使用本地文件。

## 提供自定义指标配置文件


Amazon CloudWatch 自定义指标的配置（配置）文档是一个 JSON 文档，其中列出了要在环境和实例级别发布的指标。以下示例显示了一个在 Linux 上启用所有可用自定义指标的配置文件。

```
{
  "CloudWatchMetrics": {
    "Environment": {
      "ApplicationLatencyP99.9": 60,
      "InstancesSevere": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "InstancesUnknown": 60,
      "ApplicationLatencyP85": 60,
      "InstancesInfo": 60,
      "ApplicationRequests2xx": 60,
      "InstancesDegraded": 60,
      "InstancesWarning": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "InstancesNoData": 60,
      "InstancesPending": 60,
      "ApplicationLatencyP10": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "InstancesOk": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60
    },
    "Instance": {
      "ApplicationLatencyP99.9": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "ApplicationLatencyP85": 60,
      "CPUUser": 60,
      "ApplicationRequests2xx": 60,
      "CPUIdle": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "RootFilesystemUtil": 60,
      "LoadAverage1min": 60,
      "CPUIrq": 60,
      "CPUNice": 60,
      "CPUIowait": 60,
      "ApplicationLatencyP10": 60,
      "LoadAverage5min": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "CPUSystem": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60,
      "InstanceHealth": 60,
      "CPUSoftirq": 60
    }
  },
  "Version": 1
}
```

对于 Amazon CLI，您可以将文档作为选项设置参数中的`Value`键值传递，该参数本身就是一个 JSON 对象。在这种情况下，您必须对所嵌入文档中的引号进行转义。

```
$ aws elasticbeanstalk validate-configuration-settings --application-name my-app --environment-name my-env --option-settings '[
    {
        "Namespace": "aws:elasticbeanstalk:healthreporting:system",
        "OptionName": "ConfigDocument",
        "Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"ApplicationLatencyP99.9\": 60,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\": 60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": 60,\"ApplicationRequests2xx\": 60,\"InstancesDegraded\": 60,\"InstancesWarning\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"InstancesNoData\": 60,\"InstancesPending\": 60,\"ApplicationLatencyP10\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"InstancesOk\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60},\"Instance\": {\"ApplicationLatencyP99.9\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"ApplicationLatencyP85\": 60,\"CPUUser\": 60,\"ApplicationRequests2xx\": 60,\"CPUIdle\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": 60,\"LoadAverage1min\": 60,\"CPUIrq\": 60,\"CPUNice\": 60,\"CPUIowait\": 60,\"ApplicationLatencyP10\": 60,\"LoadAverage5min\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60,\"InstanceHealth\": 60,\"CPUSoftirq\": 60}},\"Version\": 1}"
    }
]'
```

对于采用 YAML 的 `.ebextensions` 配置文件，您可以按原样提供 JSON 文档。

```
  option_settings:
    - namespace: aws:elasticbeanstalk:healthreporting:system
      option_name: ConfigDocument
      value: {
  "CloudWatchMetrics": {
    "Environment": {
      "ApplicationLatencyP99.9": 60,
      "InstancesSevere": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "InstancesUnknown": 60,
      "ApplicationLatencyP85": 60,
      "InstancesInfo": 60,
      "ApplicationRequests2xx": 60,
      "InstancesDegraded": 60,
      "InstancesWarning": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "InstancesNoData": 60,
      "InstancesPending": 60,
      "ApplicationLatencyP10": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "InstancesOk": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60
    },
    "Instance": {
      "ApplicationLatencyP99.9": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "ApplicationLatencyP85": 60,
      "CPUUser": 60,
      "ApplicationRequests2xx": 60,
      "CPUIdle": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "RootFilesystemUtil": 60,
      "LoadAverage1min": 60,
      "CPUIrq": 60,
      "CPUNice": 60,
      "CPUIowait": 60,
      "ApplicationLatencyP10": 60,
      "LoadAverage5min": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "CPUSystem": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60,
      "InstanceHealth": 60,
      "CPUSoftirq": 60
    }
  },
  "Version": 1
}
```

# 将增强型运行状况报告与 Elastic Beanstalk API 结合使用
API 用户

由于 Amazon Elastic Beanstalk 增强型运行状况报告具有角色和解决方案堆栈要求，因此您必须先更新在增强型运行状况报告发布之前使用的脚本和代码，然后才能使用它。为了保持向后兼容，在您使用 Elastic Beanstalk API 创建环境时默认不会启用增强型运行状况报告。

您可以通过为您的环境设置服务角色、实例配置文件和 Amazon CloudWatch 配置选项来配置增强型运行状况报告。您可以用三种方式完成此操作：在 `.ebextensions` 文件夹中设置配置选项、使用保存的配置或在 `create-environment` 调用的 `option-settings` 参数中直接配置它们。

要使用 API SDKs、或 Amazon 命令行界面 (CLI) 创建支持增强运行状况的环境，您必须：
+ 创建具有适当[权限](concepts-roles.md)的服务角色和实例配置文件
+ 使用新的[平台版本](concepts.platforms.md)创建新环境
+ 设置运行状况系统类型、实例配置文件和服务角色[配置选项](command-options.md)

使用 `aws:elasticbeanstalk:healthreporting:system`、`aws:autoscaling:launchconfiguration` 和 `aws:elasticbeanstalk:environment` 命名空间中的以下配置选项配置适用于增强型运行状况报告的环境。

## 增强型运行状况配置选项


**SystemType**

命名空间: `aws:elasticbeanstalk:healthreporting:system`

要启用增强型运行状况报告，请设置为 **enhanced**。

**IamInstanceProfile**

命名空间: `aws:autoscaling:launchconfiguration`

设置为配置为与 Elastic Beanstalk 一起使用的实例配置文件的名称。

**ServiceRole**

命名空间: `aws:elasticbeanstalk:environment`

设置为配置为与 Elastic Beanstalk 一起使用的服务角色的名称。

**ConfigDocument**（可选）

命名空间: `aws:elasticbeanstalk:healthreporting:system`

一个 JSON 文档，用于定义要发布到的和实例和环境指标 CloudWatch。例如：

```
{
  "CloudWatchMetrics":
    {
    "Environment":
      {
      "ApplicationLatencyP99.9":60,
      "InstancesSevere":60
      }
    "Instance":
      {
      "ApplicationLatencyP85":60,
      "CPUUser": 60
      }
    }
  "Version":1
}
```

**注意**  
可能需要对配置文件进行特殊的格式化，如转义引号，具体视您将它们提供给 Elastic Beanstalk 的方式而定。有关示例，请参阅 [提供自定义指标配置文件](health-enhanced-cloudwatch.md#health-enhanced-cloudwatch-configdocument)。

# 增强型运行状况日志格式


Amazon Elastic Beanstalk 平台使用自定义 Web 服务器日志格式有效地将有关 HTTP 请求的信息中继到增强型运行状况报告系统。系统将分析日志、确定问题并相应地设置实例和环境运行状况。如果您对环境禁用 Web 服务器代理并从 Web 容器直接响应请求，则仍然可以通过将服务器配置为以 [Elastic Beanstalk 运行状况代理](health-enhanced.md#health-enhanced-agent)使用的位置和格式来输出日志，从而充分利用增强型运行状况报告。

**注意**  
此页面上的信息仅与基于 Linux 的平台相关。在 Windows Server 平台上，Elastic Beanstalk 将直接从 IIS Web 服务器接收有关 HTTP 请求的信息。有关更多信息，请参阅 [Windows Server 上的 IIS 中的 Web 服务器指标捕获](health-enhanced-metrics-server-iis.md)。

## Web 服务器日志配置


Elastic Beanstalk 平台配置为输出两个包含有关 HTTP 请求的信息的日志。第一个日志采用详细格式并提供关于请求的详细信息，如请求者的用户代理信息和人类可读的时间戳。

**/var/log/nginx/access.log**  
以下示例来自在 Ruby Web 服务器环境上运行的 Nginx 代理，但格式与 Apache 的类似。

```
172.31.24.3 - - [23/Jul/2015:00:21:20 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:21 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
```

第二个日志采用简洁格式。它只包含与增强型运行状况报告相关的信息。此日志输出到一个名为 `healthd` 的子文件夹，并且每小时轮换一次。旧日志在轮换出之后将会立即被删除。

**/var/log/nginx/healthd/application.log.2015-07-23-00**  
以下示例显示了一个机器可读格式的日志。

```
1437609879.311"/"200"0.083"0.083"177.72.242.17
1437609879.874"/"200"0.347"0.347"177.72.242.17
1437609880.006"/bad/path"404"0.001"0.001"177.72.242.17
1437609880.058"/"200"0.530"0.530"177.72.242.17
1437609880.928"/bad/path"404"0.001"0.001"177.72.242.17
```

增强型运行状况日志格式包括以下信息：
+ 请求的时间，用 Unix 时间表示
+ 请求的路径
+ 结果的 HTTP 状态代码
+ 请求时间
+ 上游时间
+ `X-Forwarded-For` HTTP 标头

对于 nginx 代理，时间印在浮点秒中，有三个小数位。对于 Apache，将用整微秒表示。

**注意**  
如果您在日志文件中看到类似于下面的警告，其中 `DATE-TIME` 是日期和时间，并且您使用了自定义代理，例如在多容器 Docker 环境中，您必须使用 .ebextension 来配置环境，这样 `healthd` 才能读取您的日志文件：  

```
W, [DATE-TIME #1922] WARN -- : log file "/var/log/nginx/healthd/application.log.DATE-TIME" does not exist
```
您可在[多容器 Docker 示例](https://docs.amazonaws.cn/elasticbeanstalk/latest/dg/samples/docker-multicontainer-v2.zip)中开始使用 .ebextension。

**/etc/nginx/conf.d/webapp\$1healthd.conf**  
以下示例显示了 Nginx 的日志配置，并突出显示了 `healthd` 日志格式。

```
upstream my_app {
  server unix:///var/run/puma/my_app.sock;
}

log_format healthd '$msec"$uri"'
                '$status"$request_time"$upstream_response_time"'
                '$http_x_forwarded_for';

server {
  listen 80;
  server_name _ localhost; # need to listen to localhost for worker tier

  if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
    set $year $1;
    set $month $2;
    set $day $3;
    set $hour $4;
  }

  access_log  /var/log/nginx/access.log  main;
  access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;

  location / {
    proxy_pass http://my_app; # match the name of upstream directive which is defined above
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location /assets {
    alias /var/app/current/public/assets;
    gzip_static on;
    gzip on;
    expires max;
    add_header Cache-Control public;
  }

  location /public {
    alias /var/app/current/public;
    gzip_static on;
    gzip on;
    expires max;
    add_header Cache-Control public;
  }
}
```

**/etc/httpd/conf.d/healthd.conf**  
以下示例显示了 Apache 的日志配置。

```
LogFormat "%{%s}t\"%U\"%s\"%D\"%D\"%{X-Forwarded-For}i" healthd
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/healthd/application.log.%Y-%m-%d-%H 3600" healthd
```

## 为增强型运行状况报告生成日志


要将日志提供给运行状况代理，您必须执行以下操作：
+ 以正确格式输出日志，如前一部分所示
+ 将日志输出到 `/var/log/nginx/healthd/`
+ 使用以下格式命名日志：`application.log.$year-$month-$day-$hour`
+ 每小时将日志轮换一次
+ 请勿截断日志

# 通知和问题排查


**尝试使用 Amazon Q 开发者版 CLI 进行人工智能辅助故障排除**  
 Amazon Q 开发者版 CLI 可以帮助您针对环境问题快速进行故障排除。Q CLI 可通过检查环境状态、审核事件、分析日志和询问澄清问题来提供解决方案。有关更多信息和详细演练，请参阅博客中的使用 [Amazon Q Developer CLI 对 Elastic Beanstalk 环境进行故障排除](https://www.amazonaws.cn/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)。 Amazon 

本页列出了常见问题的消息和指向更多信息的链接。消息显示在 Elastic Beanstalk 控制台的 [环境概述窗格](environments-dashboard-envoverview.md) 中，当运行状况问题在多次检查中持续出现时，消息将记录在[事件](using-features.events.md)中。

## 部署


Elastic Beanstalk 监控您的环境以确保一致的后续部署。如果滚动部署失败，则在您的环境中的实例上运行的应用程序版本可能会不同。如果部署在一个或多个批次上成功，但在所有批次完成前失败，则可能出现这种情况。

*在总共 5 个实例的 2 个实例上发现不正确的应用程序版本。预期版本“v1”（deployment 1）。*

*在环境实例上发现了不正确的应用程序版本。预期版本“v1”（deployment 1）。*

环境中部分或所有实例上没有运行预期的应用程序版本。

*不正确的应用程序版本“v2”（deployment 2）。预期版本“v1”（deployment 1）。*

部署到实例的应用程序与预期版本不同。如果部署失败，则预期版本重置为最近成功部署的版本。在以上示例中，第一个部署 (版本“V1”) 成功，但第二个部署 (版本“V2”) 失败。任何运行“V2”的实例将被视为运行状况不佳。

要解决此问题，请启动另一个部署。您可以[重新部署以前已知可以正常工作的版本](using-features.deploy-existing-version.md)，或者配置您的环境在部署和重新部署新版本期间[忽略运行状况检查](using-features.rolling-version-deploy.md#environments-cfg-rollingdeployments-console)，以强制部署完成。

您还可以确定和终止运行错误应用程序版本的实例。Elastic Beanstalk 将使用正确版本启动实例来替换任何您终止的实例。使用 [EB CLI 运行状况命令](health-enhanced-ebcli.md)来确定运行错误应用程序版本的实例。

## 应用程序服务器


*15% 的 HTTP 请求出错，错误消息为 HTTP 4xx*

*20% 的 ELB 请求出现 HTTP 4xx 错误。*

对实例或环境的 HTTP 请求中有很大一部分失败，错误消息为 4xx。

400 系列状态代码表示用户发出了一个错误请求，如请求了不存在的页面 (404 未找到文件) 或用户无法访问 (403 禁止访问)。少量的 404 是正常的，但如果数量多，则可能表示存在指向不可用的页面的内部或外部链接。可以通过修复错误的内部链接并为错误的外部链接添加重定向来解决这些问题。

*5% 的请求失败，错误消息为 HTTP 5xx*

*3% 的 ELB 请求失败，错误消息为 HTTP 5xx。*

对实例或环境的 HTTP 请求中有很大一部分失败，错误消息为 500 系列状态代码。

500 系列状态代码表示应用程序服务器遇到了内部错误。这些问题表示应用程序代码中存在错误，应该快速加以确定和修复。

*95% 的 CPU 正在使用中*

对于一个实例，运行状况代理将会报告极高百分比的 CPU 使用率并将实例运行状况设置为**警告**或**降级**。

请扩展您的环境以减少实例的负载。

## 工作线程实例


*20 条消息正在队列中等待（25 秒前）*

向您的工作线程环境的队列添加请求的速度超过了处理这些请求的速度。请扩展您的环境以增加容量。

*5 条消息位于死信队列中（15 分钟前）*

工作线程请求重复失败，正在添加到[死信队列](using-features-managing-env-tiers.md#worker-deadletter)。请检查死信队列中的请求以了解它们失败的原因。

## 其他资源


*4 个活动实例小于 Auto Scaling 组的最小大小 5*

在您的环境中运行的实例数少于为 Auto Scaling 组配置的最小数量。

*Auto Scaling 组 (groupname) 通知已删除或修改*

为 Auto Scaling 组配置的通知已在 Elastic Beanstalk 外部修改。

# 人工智能驱动的环境分析
人工智能驱动的环境分析

Amazon Elastic Beanstalk人工智能驱动的分析可确定根本原因并推荐环境健康问题的解决方案。当您的环境遇到问题时，您可以使用`RequestEnvironmentInfo`和带有`analyze`信息类型的 `RetrieveEnvironmentInfo` API 操作来请求 AI 分析，以获取 AI 生成的见解和推荐的解决方案。

**注意**  
人工智能分析仅在 2026 年 2 月 16 日或之后发布的受支持的 Amazon Linux 2 AL2023 和平台版本上可用。

## 工作原理


[当您请求 AI 分析时，Elastic Beanstalk 会在您环境中的实例上运行一个脚本，用于收集最近的事件、实例运行状况和日志（最多 170,000 个数据令牌）。](https://docs.amazonaws.cn/bedrock/latest/userguide/key-definitions.html)然后，它会将这些数据发送到您的账户中的 Amazon Bedrock，并返回见解和建议的后续步骤。

## 先决条件


在使用 AI 分析之前，请验证您的环境是否满足以下要求：
+ 运行[支持的平台版本](#health-ai-analysis-supported-platforms)的环境
+ 具有所需权限的@@ [实例配置文件](iam-instanceprofile.md)（见[所需的权限](#health-ai-analysis-permissions)下文）
+ **Anthropic 用例详情** — 人工智能分析通过 Amazon Bedrock 使用 Anthropic Claude 模型。Anthropic 要求您先提交一次性用例详情表，然后才能调用他们的模型。要提交此表单，请从 [Amazon Bedrock 控制台](https://console.amazonaws.cn/bedrock/)的模型目录中选择任何 Anthropic 模型，或者调用 API。[https://docs.amazonaws.cn/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html](https://docs.amazonaws.cn/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html)每个 Amazon 账户只需要这样做一次。如果您通过 Organizati Amazon ons 管理账户提交表单，则它会自动涵盖组织中的所有成员帐户。有关更多信息，请参阅[访问 Amazon Bedrock 基础模型](https://docs.amazonaws.cn/bedrock/latest/userguide/model-access.html)。
+ **GovCloud 区域** — 如果您使用的是 Amazon GovCloud （美国）区域，则必须先在 Amazon Bedrock 中启用对最新 Anthropic Claude Sonnet and/or Opus 模型的访问权限，然后才能使用 AI 分析。有关在 GovCloud 各地区启用模型访问权限的说明，请参阅[管理对 Amazon Bedrock 基础模型的访问权限](https://docs.amazonaws.cn/bedrock/latest/userguide/model-access.html#model-access-govcloud)。有关最新可用的 Anthropic Claude Sonnet and/or Opus 模型的信息，请参阅推理[配置文件的支持区域和模型](https://docs.amazonaws.cn/bedrock/latest/userguide/inference-profiles-support.html)。

## 所需的权限


要使用 AI 分析，您的环境的 Amazon EC2 实例配置文件必须具有调用 Amazon Bedrock 的权限。向您的实例配置文件添加以下权限：
+ `bedrock:InvokeModel`
+ `bedrock:ListFoundationModels`
+ `elasticbeanstalk:DescribeEvents`
+ `elasticbeanstalk:DescribeEnvironmentHealth`

有关配置实例配置文件的更多信息，请参阅[管理 Elastic Beanstalk 实例配置文件](iam-instanceprofile.md)。

## 在控制台中使用 AI 分析


**来自环境概述**  
当环境的运行状况为 “**警告**”、“**已降级**” 或 “**严重**” 时，“环境概述” 部分会显示 “**AI 分析**” 按钮。单击此按钮可启动对您的环境的 AI 分析。

**从 “日志” 页面**  
您也可以从导航窗格的 “日**志**” 页面访问 AI 分析。单击 **AI Anal** ysis 按钮，请求对环境的当前状态进行 AI 驱动的分析。

## 将 AI 分析与 Amazon CLI


您可以 Amazon CLI 通过使用 Elastic Beanstalk API 以编程方式请求和检索 AI 分析。

**申请 AI 分析**  
使用`InfoType`参数设置为的[https://docs.amazonaws.cn/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html](https://docs.amazonaws.cn/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html)操作`analyze`。

**Example Amazon CLI -请求人工智能分析**  

```
aws elasticbeanstalk request-environment-info \
    --environment-name my-env \
    --info-type analyze \
    --region us-east-1
```

**检索 AI 分析**  
使用`InfoType`参数设置为的[https://docs.amazonaws.cn/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html](https://docs.amazonaws.cn/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html)操作`analyze`来检索分析结果。

**Example Amazon CLI -检索 AI 分析**  

```
aws elasticbeanstalk retrieve-environment-info \
    --environment-name my-env \
    --info-type analyze \
    --region us-east-1
```

响应包括 AI 生成的对环境当前状态的分析，以及针对任何已发现问题的推荐解决方案。

## 在 EB CLI 中使用人工智能分析


如果您使用 EB CLI，则可以使用**eb logs**命令的 `--analyze` (`-ai`) 选项请求 AI 分析。该命令请求分析，等待分析完成，然后显示结果。

**Example EB CLI-请求人工智能分析**  

```
$ eb logs --analyze
```

该`--analyze`选项与`--instance`、`--all``--zip`、或不兼容`--log-group`。有关完整的命令参考，请参见[**eb logs**](eb3-logs.md)。

**注意**  
该`--analyze`选项需要 EB CLI 版本 3.27 或更高版本。

## 重要注意事项

+ **定价** — 人工智能分析使用 Amazon Bedrock 来处理您的环境数据，标准的 Amazon Bedrock 定价适用于模型调用。有关定价详细信息，请参阅 [Amazon Bedrock 定价](https://www.amazonaws.cn/bedrock/pricing/)。
+ **平台要求** — 人工智能分析仅在 2026 年 2 月 16 日或之后发布的 Amazon Linux 2 和 AL2023 基于平台的版本上可用。要使用此功能，请将您的环境更新到支持的平台版本。有关更多信息，请参阅 [更新 Elastic Beanstalk 环境的平台版本](using-features.platform.upgrade.md)。
+ **权限** — 在使用 AI 分析之前，请确保您的实例配置文件具有所需的 Amazon Bedrock 权限（`bedrock:InvokeModel`和`bedrock:ListFoundationModels`）和 Elastic Bean `elasticbeanstalk:DescribeEvents` stalk 权限（和）。`elasticbeanstalk:DescribeEnvironmentHealth`
+ **数据隐私** — 分析会将环境事件和日志发送到您账户中的 Amazon Bedrock 进行处理。有关 Amazon Bedrock 如何处理您的数据的信息，请参阅[亚马逊 Bedrock 安全与](https://www.amazonaws.cn/bedrock/security-compliance/)合规性。
+ **服务配额** — 人工智能分析使用 Amazon Bedrock 中的 Anthropic Claude 模型，该模型具有每分钟请求的默认配额和每分钟令牌的默认配额。如果您遇到限制错误，可以申请增加配额。有关更多信息，请参阅[请求提高限额](https://docs.amazonaws.cn/servicequotas/latest/userguide/request-quota-increase.html)。

## 支持的平台版本


[2026 年 2 月 16](RELEASE_NOTES_URL) 日或之后发布的 Amazon Linux 2 和 AL2023 基于平台的版本支持人工智能分析。要验证您的平台版本，请参阅 [Elastic Beanstalk 发行说明](https://docs.amazonaws.cn/elasticbeanstalk/latest/relnotes/welcome.html)。