

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

# 监控 Elastic Beanstalk 中的环境
<a name="environments-health"></a>

使用 Elastic Beanstalk 运行状况监控功能，您可以验证应用程序的可用性，并创建在指标超过阈值时激活的警报。您可以通过控制台和命令行使用 Elastic Beanstalk 运行状况监控功能来追踪环境状态。

**Topics**
+ [在 AWS 管理控制台中监控环境运行状况](environment-health-console.md)
+ [使用 EB CLI 监控环境的运行状况](health-enhanced-ebcli.md)
+ [基本运行状况报告](using-features.healthstatus.md)
+ [Elastic Beanstalk 中的增强型运行状况报告和监控](health-enhanced.md)
+ [管理警报](using-features.alarms.md)
+ [查看 Elastic Beanstalk 环境的更改历史记录](using-features.changehistory.md)
+ [查看 Elastic Beanstalk 环境的事件流](using-features.events.md)
+ [列出和连接到服务器实例](using-features.ec2connect.md)
+ [查看您的 Elastic Beanstalk 环境中的 Amazon EC2 实例的日志](using-features.logging.md)
+ [查看 Elastic Beanstalk 环境的部署日志](environments-deployment-logs.md)

# 在 AWS 管理控制台中监控环境运行状况
<a name="environment-health-console"></a>

您可以从 Elastic Beanstalk 控制台中访问有关应用程序的运行信息。控制台简要显示环境的状态和应用程序运行状况。在控制台的 **Environments (环境)** 页面和每个应用程序的页面中，已对列表上的环境进行了颜色编码来指示状态。

**在 Elastic Beanstalk 控制台中监控环境**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

1. 在导航窗格中，选择 **Monitoring (监控)**。

“监控”页面向您显示有关环境的总体统计数据，如 CPU 使用率和平均延迟。除了总体统计数据之外，您还可以查看随时间推移显示资源使用情况的监控图表。您可以单击任何图表以查看详细信息。

**注意**  
默认情况下，仅启用基本 CloudWatch 指标，这些指标以五分钟为周期返回数据。您可以通过编辑环境的配置设置来启用更精细的一分钟 CloudWatch 指标。

## 监控图表
<a name="environment-health-console-graphs"></a>

**监控**页面显示您的环境的运行状况相关指标概述。这包括 Elastic Load Balancing 和 Amazon EC2 提供的默认指标集，以及显示环境运行状况如何随时间变化的图表。

图表上方的条形提供了各种时间间隔供您选择。例如，选择 **1w** 可显示过去一周的信息。或者选择 **3h** 显示过去三个小时内的信息。

要选择更多种类的时间间隔，请选择**自定义**。在这里，您有两个范围选项：*绝对*或*相对*。**绝对**选项允许您指定特定的日期范围，例如 *2023 年 1 月 1 日到 2023 年 6 月 30 日*。**相对**选项允许选择具有特定时间单位的整数：*分钟*、*小时*、*天*、*周*或*月*。示例包括 *10 小时*、*10 天*和 *10 个月*。

 

![\[Elastic Beanstalk 控制台的环境监控页面上的“Environment health monitoring (环境运行状况监控)”部分\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/environment-monitoring-graphs.png)


## 自定义监控控制台
<a name="environment-health-console-customize"></a>

要创建和查看自定义指标，您必须使用 Amazon CloudWatch。 CloudWatch 您可以通过创建自定义仪表板，在单一视图中监控您的资源。选择 “**添加到控制面板**”，从 “**监控**” 页面导航到 Amazon CloudWatch 控制台。Amazon CloudWatch 为您提供创建新控制面板或选择现有控制面板的选项。有关更多信息，请参阅[亚马逊* CloudWatch 用户指南中的使用亚马逊 CloudWatch *控制面板](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

![\[Elastic Beanstalk 控制台的环境监控页面上的“Environment health monitoring (环境运行状况监控)”部分\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/environment-monitoring-graphs.png)


所有环境都启用了 [Elastic Load](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/elb-metricscollected.html) Balancing 和 [Amazon EC2](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/ec2-metricscollected.html) 指标。

[增强运行状况](health-enhanced.md)后，将启用该 EnvironmentHealth 指标，并自动向监控控制台添加图表。增强型运行状况还可将[运行状况页面](health-enhanced-console.md#health-enhanced-console-healthpage)添加到管理控制台。有关可用的增强型运行状况指标的列表，请参阅 [为环境发布 Amazon CloudWatch 自定义指标](health-enhanced-cloudwatch.md)。

# 使用 EB CLI 监控环境的运行状况
<a name="health-enhanced-ebcli"></a>

[Elastic Beanstalk 命令行](eb-cli3.md)界面 (EB CLI) 是一款用于管理环境的命令行工具。 AWS Elastic Beanstalk 您也可以使用 EB CLI 实时监控您的环境的运行状况，这比当前在 Elastic Beanstalk 控制台中提供的监控效果更精细。

在[安装](eb-cli3.md#eb-cli3-install)并[配置](eb-cli3-configuration.md) EB CLI 后，您可以使用 **eb create** 命令启动新环境并将代码部署到该环境。如果您已具有在 Elastic Beanstalk 控制台中创建的环境，则可以在项目文件夹中运行 **eb init** 并按提示操作来将 EB CLI 附加到该环境（项目文件夹可能是空的）。

**重要**  
通过运行带 `pip install` 选项的 `--upgrade` 来确保您使用的是 EB CLI 的最新版本：  

```
$ sudo pip install --upgrade awsebcli
```
有关完整的 EB CLI 安装说明，请参阅[使用设置脚本安装 EB CLI（推荐）](eb-cli3.md#eb-cli3-install)。

要使用 EB CLI 监控您的环境的运行状况，您必须首先通过运行 **eb init** 并按照提示操作来配置本地项目文件夹。有关完整说明，请参阅[配置 EB CLI](eb-cli3-configuration.md)。

如果您已有一个在 Elastic Beanstalk 中运行的环境并且想使用 EB CLI 监控其运行状况，请执行这些步骤以将其附加到现有环境。

**将 EB CLI 附加到现有环境**

1. 打开命令行终端并导航至您的用户文件夹。

1. 为您的环境创建一个新的文件夹并打开该文件夹。

1. 运行 **eb init** 命令，然后选择要监控其运行状况的应用程序和环境。如果您只有一个运行您选择的应用程序的环境，EB CLI 将自动选择它，您无需选择环境，如以下示例所示。

   ```
   ~/project$ eb init
   Select an application to use
   1) elastic-beanstalk-example
   2) [ Create new Application ]
   (default is 2): 1
   Select the default environment.
   You can change this later by typing "eb use [environment_name]".
   1) elasticBeanstalkEx2-env
   2) elasticBeanstalkExa-env
   (default is 1): 1
   ```

**使用 EB CLI 监控运行状况**

1. 打开命令行并导航到项目文件夹。

1. 运行 **eb health** 命令以显示您的环境中的实例的运行状况。在此示例中，有五个实例在 Linux 环境中运行。

   ```
   ~/project $ eb health
    elasticBeanstalkExa-env                                  Ok                       2015-07-08 23:13:20
   WebServer                                                                              Ruby 2.1 (Puma)
     total      ok    warning  degraded  severe    info   pending  unknown
       5        5        0        0        0        0        0        0
   
     instance-id   status     cause                                                                                                health
       Overall     Ok
     i-d581497d    Ok
     i-d481497c    Ok
     i-136e00c0    Ok
     i-126e00c1    Ok
     i-8b2cf575    Ok
   
     instance-id   r/sec    %2xx   %3xx   %4xx   %5xx      p99      p90      p75     p50     p10                                 requests
       Overall     671.8   100.0    0.0    0.0    0.0    0.003    0.002    0.001   0.001   0.000
     i-d581497d    143.0    1430      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-d481497c    128.8    1288      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-136e00c0    125.4    1254      0      0      0    0.004    0.002    0.001   0.001   0.000
     i-126e00c1    133.4    1334      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-8b2cf575    141.2    1412      0      0      0    0.003    0.002    0.001   0.001   0.000
   
     instance-id   type       az   running     load 1  load 5      user%  nice%  system%  idle%   iowait%                             cpu
     i-d581497d    t2.micro   1a   12 mins        0.0    0.04        6.2    0.0      1.0   92.5       0.1
     i-d481497c    t2.micro   1a   12 mins       0.01    0.09        5.9    0.0      1.6   92.4       0.1
     i-136e00c0    t2.micro   1b   12 mins       0.15    0.07        5.5    0.0      0.9   93.2       0.0
     i-126e00c1    t2.micro   1b   12 mins       0.17    0.14        5.7    0.0      1.4   92.7       0.1
     i-8b2cf575    t2.micro   1c   1 hour        0.19    0.08        6.5    0.0      1.2   92.1       0.1
     
     instance-id   status     id   version              ago                                                                   deployments
     i-d581497d    Deployed   1    Sample Application   12 mins
     i-d481497c    Deployed   1    Sample Application   12 mins
     i-136e00c0    Deployed   1    Sample Application   12 mins
     i-126e00c1    Deployed   1    Sample Application   12 mins
     i-8b2cf575    Deployed   1    Sample Application   1 hour
   ```

   在此示例中，有一个实例在 Windows 环境中运行。

   ```
   ~/project $ eb health
    WindowsSampleApp-env                                 Ok                                 2018-05-22 17:33:19
   WebServer                                                IIS 10.0 running on 64bit Windows Server 2016/2.2.0
     total      ok    warning  degraded  severe    info   pending  unknown
       1        1        0        0        0        0        0        0
   
     instance-id           status     cause                                                                                        health
       Overall             Ok
     i-065716fba0e08a351   Ok
   
     instance-id           r/sec    %2xx   %3xx   %4xx   %5xx      p99      p90      p75     p50     p10                         requests
       Overall              13.7   100.0    0.0    0.0    0.0    1.403    0.970    0.710   0.413   0.079
     i-065716fba0e08a351     2.4   100.0    0.0    0.0    0.0    1.102*   0.865    0.601   0.413   0.091
   
     instance-id           type       az   running     % user time    % privileged time  % idle time                                  cpu
     i-065716fba0e08a351   t2.large   1b   4 hours             0.2                  0.1         99.7
   
     instance-id           status     id   version              ago                                                           deployments
     i-065716fba0e08a351   Deployed   2    Sample Application   4 hours
   ```

## 读取输出
<a name="health-enhanced-ebcli-output"></a>

输出将在屏幕顶部显示环境的名称、环境的总体运行状况和当前日期。

```
elasticBeanstalkExa-env                                  Ok                       2015-07-08 23:13:20
```

接下来的三行显示了环境的类型（在本例中WebServer为 “”）、配置（带有 Puma 的 Ruby 2.1）以及七个状态中每种状态中有多少实例的明细。

```
WebServer                                                                              Ruby 2.1 (Puma)
  total      ok    warning  degraded  severe    info   pending  unknown
    5        5        0        0        0        0        0        0
```

输出的其余部分分为四个部分。第一个部分依次显示了环境总体和每个实例的*状态* 和状态*原因*。以下示例显示了环境中两个状态为 `Info` 的实例以及一个表示部署已开始的原因。

```
  instance-id    status     cause                                                                                                health
    Overall      Ok
  i-d581497d     Info       Performing application deployment (running for 3 seconds)
  i-d481497c     Info       Performing application deployment (running for 3 seconds)
  i-136e00c0     Ok
  i-126e00c1     Ok
  i-8b2cf575     Ok
```

有关运行状况的状态和颜色的信息，请参阅[运行状况颜色和状态](health-enhanced-status.md)。

**requests** 部分显示了 Web 服务器日志中有关每个实例的信息。在此示例中，每个实例正常接收请求且没有错误。

```
  instance-id    r/sec    %2xx   %3xx   %4xx   %5xx      p99      p90      p75     p50     p10                                 requests
    Overall      13.7    100.0    0.0    0.0    0.0    1.403    0.970    0.710   0.413   0.079
  i-d581497d     2.4     100.0    0.0    0.0    0.0    1.102*   0.865    0.601   0.413   0.091
  i-d481497c     2.7     100.0    0.0    0.0    0.0    0.842*   0.788    0.480   0.305   0.062
  i-136e00c0     4.1     100.0    0.0    0.0    0.0    1.520*   1.088    0.883   0.524   0.104
  i-126e00c1     2.2     100.0    0.0    0.0    0.0    1.334*   0.791    0.760   0.344   0.197
  i-8b2cf575     2.3     100.0    0.0    0.0    0.0    1.162*   0.867    0.698   0.477   0.076
```

**cpu** 部分显示了每个实例的操作系统指标。输出因操作系统而异。以下是 Linux 环境的输出。

```
  instance-id   type       az   running     load 1  load 5      user%  nice%  system%  idle%   iowait%                             cpu
  i-d581497d    t2.micro   1a   12 mins        0.0    0.03        0.2    0.0      0.0   99.7       0.1
  i-d481497c    t2.micro   1a   12 mins        0.0    0.03        0.3    0.0      0.0   99.7       0.0
  i-136e00c0    t2.micro   1b   12 mins        0.0    0.04        0.1    0.0      0.0   99.9       0.0
  i-126e00c1    t2.micro   1b   12 mins       0.01    0.04        0.2    0.0      0.0   99.7       0.1
  i-8b2cf575    t2.micro   1c   1 hour         0.0    0.01        0.2    0.0      0.1   99.6       0.1
```

以下是 Windows 环境的输出。

```
  instance-id           type       az   running     % user time    % privileged time  % idle time
  i-065716fba0e08a351   t2.large   1b   4 hours             0.2                  0.0         99.8
```

有关显示的服务器和操作系统指标的信息，请参阅[实例指标](health-enhanced-metrics.md)。

最后的 **deployments** 部分显示了每个实例的部署状态。如果滚动部署失败，您可以使用显示的部署 ID、状态和版本标签来确定环境中正在运行错误版本的实例。

```
  instance-id   status     id   version              ago                                                                   deployments
  i-d581497d    Deployed   1    Sample Application   12 mins
  i-d481497c    Deployed   1    Sample Application   12 mins
  i-136e00c0    Deployed   1    Sample Application   12 mins
  i-126e00c1    Deployed   1    Sample Application   12 mins
  i-8b2cf575    Deployed   1    Sample Application   1 hour
```

## 交互式运行状况视图
<a name="health-enhanced-ebcli-interactive"></a>

**eb health** 命令将显示环境运行状况的快照。要每 10 秒将显示的信息刷新一次，请使用 `--refresh` 选项。

```
$ eb health --refresh
 elasticBeanstalkExa-env                             Ok                            2015-07-09 22:10:04 (1 secs)
WebServer                                                                                        Ruby 2.1 (Puma)
  total      ok    warning  degraded  severe    info   pending  unknown
    5        5        0        0        0        0        0        0

  instance-id   status     cause                                                                                                health
    Overall     Ok
  i-bb65c145    Ok         Application deployment completed 35 seconds ago and took 26 seconds
  i-ba65c144    Ok         Application deployment completed 17 seconds ago and took 25 seconds
  i-f6a2d525    Ok         Application deployment completed 53 seconds ago and took 26 seconds
  i-e8a2d53b    Ok         Application deployment completed 32 seconds ago and took 31 seconds
  i-e81cca40    Ok

  instance-id   r/sec    %2xx   %3xx   %4xx   %5xx      p99      p90      p75     p50     p10                                 requests
    Overall     671.8   100.0    0.0    0.0    0.0    0.003    0.002    0.001   0.001   0.000
  i-bb65c145    143.0    1430      0      0      0    0.003    0.002    0.001   0.001   0.000
  i-ba65c144    128.8    1288      0      0      0    0.003    0.002    0.001   0.001   0.000
  i-f6a2d525    125.4    1254      0      0      0    0.004    0.002    0.001   0.001   0.000
  i-e8a2d53b    133.4    1334      0      0      0    0.003    0.002    0.001   0.001   0.000
  i-e81cca40    141.2    1412      0      0      0    0.003    0.002    0.001   0.001   0.000

  instance-id   type       az   running     load 1  load 5      user%  nice%  system%  idle%   iowait%                             cpu
  i-bb65c145    t2.micro   1a   12 mins        0.0    0.03        0.2    0.0      0.0   99.7       0.1
  i-ba65c144    t2.micro   1a   12 mins        0.0    0.03        0.3    0.0      0.0   99.7       0.0
  i-f6a2d525    t2.micro   1b   12 mins        0.0    0.04        0.1    0.0      0.0   99.9       0.0
  i-e8a2d53b    t2.micro   1b   12 mins       0.01    0.04        0.2    0.0      0.0   99.7       0.1
  i-e81cca40    t2.micro   1c   1 hour         0.0    0.01        0.2    0.0      0.1   99.6       0.1

  instance-id   status     id   version              ago                                                                   deployments
  i-bb65c145    Deployed   1    Sample Application   12 mins
  i-ba65c144    Deployed   1    Sample Application   12 mins
  i-f6a2d525    Deployed   1    Sample Application   12 mins
  i-e8a2d53b    Deployed   1    Sample Application   12 mins
  i-e81cca40    Deployed   1    Sample Application   1 hour

 (Commands: Help,Quit, ▼ ▲ ◄ ►)
```

此示例显示了一个最近从一个实例扩展到五个实例的环境。扩展操作成功完成，现在，所有实例正在通过运行状况检查并已准备好接收请求。在交互式模式中，运行状况的状态每 10 秒更新一次。在右上角，计时器为下一次更新进行倒计时。

在左下角，报告显示了一个选项列表。要退出交互模式，请按 **Q**。要滚动，请按箭头键。要查看其他命令的列表，请按 **H**。

## 交互运行状况视图选项
<a name="health-enhanced-ebcli-options"></a>

在以交互方式查看环境运行状况时，您可以使用键盘键调整视图并告知 Elastic Beanstalk 替换或重新启动各个实例。要在以交互模式查看运行状况报告时查看可用命令的列表，请按 **H**。

```
  up,down,home,end   Scroll vertically
  left,right         Scroll horizontally
  F                  Freeze/unfreeze data
  X                  Replace instance
  B                  Reboot instance
  <,>                Move sort column left/right
  -,+                Sort order descending/ascending
  P                  Save health snapshot data file
  Z                  Toggle color/mono mode
  Q                  Quit this program

  Views
  1                  All tables/split view
  2                  Status Table
  3                  Request Summary Table
  4                  CPU%/Load Table
  H                  This help menu


(press Q or ESC to return)
```

# 基本运行状况报告
<a name="using-features.healthstatus"></a>

本主题介绍 Elastic Beanstalk 基本运行状况提供的功能。

AWS Elastic Beanstalk 使用来自多个来源的信息来确定您的环境是否可用并处理来自 Internet 的请求。环境的运行状况由四种颜色之一表示，并显示在 Elastic Beanstalk 控制台的[环境概述](environments-console.md)页面上。它也可以[DescribeEnvironments](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html)通过 API 获得，也可以通过 [EB CLI](eb-cli3.md) 调用**eb status**。

 基本运行状况报告系统根据 Elastic Load Balancing 为负载均衡的环境或 Amazon Elastic Compute Cloud 为单实例环境执行的运行状况检查，提供有关 Elastic Beanstalk 环境中的实例运行状况的信息。

除了检查 EC2 实例的运行状况外，Elastic Beanstalk 还会监控您环境中的其他资源，并报告可能导致用户无法使用您的环境的资源缺失或配置不正确。

您的环境中的资源收集的指标每隔五分钟就会发布到 Amazon CloudWatch 。这包括来自 Elastic Load Balancing 的操作系统指标 EC2、请求指标。您可以在环境控制台的 “[监控” 页面](environment-health-console.md)上查看基于这些 CloudWatch 指标的图表。对于基本运行状况，这些指标将不会用于确定环境的运行状况。

**Topics**
+ [运行状况颜色](#using-features.healthstatus.colors)
+ [Elastic Load Balancing 运行状况检查](#using-features.healthstatus.understanding)
+ [单实例和工作线程层环境运行状况检查](#monitoring-basic-healthcheck-singleinstance)
+ [额外检查](#monitoring-basic-additionalchecks)
+ [亚马逊 CloudWatch 指标](#monitoring-basic-cloudwatch)

## 运行状况颜色
<a name="using-features.healthstatus.colors"></a>

Elastic Beanstalk 根据 Web 服务器环境中运行的应用程序对运行状况检查的响应方式来报告该环境的运行状况。Elastic Beanstalk 使用四种颜色之一来描述状态，如下表所示：


****  

| 颜色 | 描述 | 
| --- | --- | 
|  灰色  | 正在更新您的环境。 | 
|  Green  |  您的环境已通过最近的运行状况检查。您的环境中至少有一个实例可用并且正在接收请求。  | 
|  黄色  |  您的环境未能通过一项或更多项运行状况检查。对您的环境的某些请求将会失败。  | 
|  Red  |  您的环境未能通过三项或更多项的运行状况检查，或环境资源已不可用。请求持续失败。  | 

这些描述仅适用于使用基本运行状况报告的环境。请参阅[运行状况颜色和状态](health-enhanced-status.md)以了解与增强型运行状况相关的详细信息。

## Elastic Load Balancing 运行状况检查
<a name="using-features.healthstatus.understanding"></a>

在负载均衡的环境中，Elastic Load Balancing 将每 10 秒向环境中的每个实例发送一个请求，以确认实例正常运行。默认情况下，负载均衡器配置为打开端口 80 上的 TCP 连接。如果实例确认连接，则被视为运行状况良好。

您可以选择通过在应用程序中指定现有资源来覆盖此设置。如果您指定路径 (如 `/health`)，则运行状况检查 URL 会设置为 `HTTP:80/health`。运行状况检查 URL 应设置为始终由您的应用程序提供服务的路径。如果将它设置由位于您的应用程序前面的 Web 服务器提供服务或缓存的静态页面，运行状况检查将不会显示应用程序服务器或 Web 容器的问题。有关修改运行状况检查 URL 的说明，请参阅 [健康检查](environments-cfg-clb.md#using-features.managing.elb.healthchecks)。

如果已配置运行状况检查 URL，则 Elastic Load Balancing 将预期其发送的 GET 请求返回一个 `200 OK` 响应。如果应用程序未能在 5 秒内响应或以任何其他 HTTP 状态代码响应，它将不会通过运行状况检查。连续 5 次运行状况检查失败后，Elastic Load Balancing 将禁用该实例。

有关 Elastic Load Balancing 运行状况检查的更多信息，请参阅 *Elastic Load Balancing 用户指南* 中的[运行状况检查](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/TerminologyandKeyConcepts.html#healthcheck)。

**注意**  
配置运行状况检查 URL 不会更改环境的 Auto Scaling 组的运行状况检查行为。运行状况不佳的实例会从负载均衡器中移除，但不会自动被 Amazon A EC2 uto Scaling 替换，除非您将 Amazon A EC2 uto Scaling 配置为使用 Elastic Load Balancing 运行状况检查作为替换实例的基础。要将 Amazon A EC2 uto Scaling 配置为替换未通过 Elastic Load Balancing 运行状况检查的实例，请参阅[Elastic Beanstalk 环境的 Auto Scaling 运行状况检查设置](environmentconfig-autoscaling-healthchecktype.md)。

## 单实例和工作线程层环境运行状况检查
<a name="monitoring-basic-healthcheck-singleinstance"></a>

在单实例或工作线程层环境中，Elastic Beanstalk 通过监控其亚马逊实例状态来确定实例的运行状况。 EC2 Elastic Load Balancing 运行状况设置 URLs，包括 HTTP 运行状况检查，不能用于这些环境类型。

有关亚马逊 EC2 实例状态检查的更多信息，请参阅*亚马逊 EC2 用户指南*中的[通过状态检查监控实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html)。

## 额外检查
<a name="monitoring-basic-additionalchecks"></a>

除 Elastic Load Balancing 运行状况检查之外，Elastic Beanstalk 还监控您环境中的资源并在它们部署失败、未正确配置或变得不可用时将运行状况状态更改为红色。这些检查确认：
+ 环境的 Auto Scaling 组可用且至少有一个实例。
+ 环境的安全组可用且配置为允许端口 80 上的传入流量。
+ 环境别名记录存在，且指向正确的负载均衡器。
+ 在工作线程环境中，至少每三分钟轮询一次 Amazon Simple Queue Service (Amazon SQS) 队列。

## 亚马逊 CloudWatch 指标
<a name="monitoring-basic-cloudwatch"></a>

对于基本运行状况报告，Elastic Beanstalk 服务不会向亚马逊发布任何指标。 CloudWatch用于在环境控制台的 “[监控” 页面](environment-health-console.md)上生成图表的 CloudWatch 指标由您的环境中的资源发布。

例如， EC2 发布您环境的 Auto Scaling 组中实例的以下指标：

 

`CPUUtilization`  
目前正在使用的计算单位的百分比。

`DiskReadBytes``DiskReadOps``DiskWriteBytes``DiskWriteOps`  
读取和写入的字节数，以及读取和写入操作数。

`NetworkIn``NetworkOut`  
发送和接收的字节数。

Elastic Load Balancing 将为您环境的负载均衡器发布以下指标：

`BackendConnectionErrors`  
负载均衡器和环境实例之间失败的连接数。

`HTTPCode_Backend_2XX``HTTPCode_Backend_4XX`  
您的环境中的实例生成的成功 (2XX) 和客户端错误 (4XX) 响应代码数。

`Latency`  
负载均衡器将请求中继到实例和响应被接收之间的秒数。

`RequestCount`  
完成的请求数。

这些列表并不全面。有关这些资源可以报告的指标的完整列表，请参阅《Amazon CloudWatch 开发者指南》中的以下主题：

 


**指标**  

| 命名空间 | Topic | 
| --- | --- | 
| AWS::ElasticLoadBalancing::LoadBalancer | [Elastic Load Balancing 指标和资源](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/elb-metricscollected.html) | 
| AWS::AutoScaling::AutoScaling群组 | [Amazon Elastic Compute Cloud 指标和资源](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/ec2-metricscollected.html) | 
| AWS::SQS::Queue | [Amazon SQS 指标和资源](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/sqs-metricscollected.html) | 
| AWS:: RDS:: DBInstance | [Amazon RDS 维度和指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/rds-metricscollected.html) | 

### 工作线程环境运行状况指标
<a name="w2aac43c11c23c18"></a>

仅适用于工作线程环境，SQS 守护程序会将环境运行状况的自定义指标发布到其中 CloudWatch，值为 1 表示绿色。您可以使用`ElasticBeanstalk/SQSD`命名空间查看账户中的 CloudWatch 健康指标数据。指标维度为 `EnvironmentName`，并且指标名称为 `Health`。所有实例都会将其指标发布到同一命名空间。

要启用守护程序来发布指标，环境的实例配置文件必须有权调用 `cloudwatch:PutMetricData`。此权限包括在默认实例配置文件中。有关更多信息，请参阅[管理 Elastic Beanstalk 实例配置文件](iam-instanceprofile.md)。

# Elastic Beanstalk 中的增强型运行状况报告和监控
<a name="health-enhanced"></a>

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

增强型运行状况报告是一项可以在环境中启用的功能， AWS 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://aws.amazon.com/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 运行状况代理
<a name="health-enhanced-agent"></a>

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)。

## 实例和环境运行状况的确定因素
<a name="health-enhanced-factors"></a>

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



### 操作和命令
<a name="health-enhanced-factors-operations"></a>

当您对环境执行某项操作（如部署新版本的应用程序）时，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 包括有关成功的操作以及在多个运行状况检查中的其他运行状况状态的信息性消息，但它们不会无限期保持。运行状况不佳的环境状态的原因将持续，直到环境恢复运行状况良好状态。

### 命令超时
<a name="health-enhanced-factors-timeout"></a>

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 请求
<a name="health-enhanced-factors-requests"></a>

当没有对环境正在进行的操作时，有关实例和环境运行状况的主要信息源为每个实例的 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)。

### 操作系统指标
<a name="health-enhanced-factors-healthcheck"></a>

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

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

## 运行状况检查规则自定义
<a name="health-enhanced.rules"></a>

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

## 增强型运行状况角色
<a name="health-enhanced-roles"></a>

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

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

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

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

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

## 增强型运行状况授权
<a name="health-enhanced-authz"></a>

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)来配置此选项。

## 增强型运行状况事件
<a name="health-enhanced-events"></a>

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

![\[Elastic Beanstalk 控制台的 Elastic Beanstalk 环境概述页面，此页面显示了增强型运行状况最新事件\]](http://docs.aws.amazon.com/zh_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) 命令，您还可以查看来自环境中每个实例的实时状态。

## 更新、部署和扩展期间的增强型运行状况报告行为
<a name="health-enhanced-effects"></a>

启用增强型运行状况报告可影响您的环境在配置更新和部署期间的行为。在所有实例一致通过运行状况检查之前，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 增强型运行状况报告
<a name="health-enhanced-enable"></a>

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

使用最新[平台版本](concepts.platforms.md)创建的新环境包括支持增强型 AWS 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 控制台启用增强型运行状况报告
<a name="health-enhanced-enable-console"></a>

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

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

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

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

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

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

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

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

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

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

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

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

1. 选择**保存**。

## 使用 EB CLI 启用增强型运行状况报告
<a name="health-enhanced-enable-ebcli"></a>

在使用 **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.
   ```

## 使用配置文件启用增强型运行状况报告
<a name="health-enhanced-enable-config"></a>

您可以通过在源包中包含[配置文件](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
```

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

# 采用环境管理控制台的增强型运行状况监控
<a name="health-enhanced-console"></a>

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

**Topics**
+ [环境概述](#health-enhanced-console-overview)
+ [环境运行状况页面](#health-enhanced-console-healthpage)
+ [监控页面](#health-enhanced-console-monitoringpage)

## 环境概述
<a name="health-enhanced-console-overview"></a>

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

**查看环境概述**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

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

## 环境运行状况页面
<a name="health-enhanced-console-healthpage"></a>

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

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

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

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


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

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


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

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


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

![\[“环境运行状况”页面，显示“实例操作”菜单，用于重启或终止运行状况不佳的实例。\]](http://docs.aws.amazon.com/zh_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.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/cog.png)（**Preferences (首选项)**）。选择或清除列名称，然后选择 **Confirm (确认)**。

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


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

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


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

![\[环境运行状况页面上的服务器指标以及部署信息\]](http://docs.aws.amazon.com/zh_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)并使用 AWS X-Ray SDK 对应用程序进行检测，则 He **alth** 页面会在概述行中添加指向 AWS X-Ray 控制台的链接。

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


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

## 监控页面
<a name="health-enhanced-console-monitoringpage"></a>

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

# 运行状况颜色和状态
<a name="health-enhanced-status"></a>

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

## 实例状态和环境状态
<a name="health-enhanced-status-type"></a>

每次 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 (严重)**）。

## 正常 (绿色)
<a name="health-enhanced-status-ok"></a>

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

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

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

## 警告 (黄色)
<a name="health-enhanced-status-warning"></a>

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

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

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

## 降级 (红色)
<a name="health-enhanced-status-degraded"></a>

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

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

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

## 严重 (红色)
<a name="health-enhanced-status-severe"></a>

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

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

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

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

## 信息 (绿色)
<a name="health-enhanced-status-info"></a>

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

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

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

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

## 等待 (灰色)
<a name="health-enhanced-status-pending"></a>

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

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

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

## 未知 (灰色)
<a name="health-enhanced-status-unknown"></a>

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

*示例：*未接收数据。

## 已暂停（灰色）
<a name="health-enhanced-status-suspended"></a>

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

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

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

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

# 实例指标
<a name="health-enhanced-metrics"></a>

实例指标提供有关环境中实例运行状况的信息。每个实例上都有 [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 服务器指标
<a name="health-enhanced-metrics-server"></a>

在基于 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 秒。

## 操作系统指标
<a name="health-enhanced-metrics-os"></a>

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 服务器指标捕获
<a name="health-enhanced-metrics-server-iis"></a>

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

## 实施详情
<a name="health-enhanced-metrics-server-iis.impl"></a>

为了从 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) 来提供针对计算机上通信优化的安全且可靠的绑定。

# 为环境配置增强型运行状况规则
<a name="health-enhanced-rules"></a>

AWS Elastic Beanstalk 增强型运行状况报告依赖于一组规则来确定环境的运行状况。其中一些规则可能不适合您的特定应用程序。以下是一些常见的示例：
+ 您使用客户端测试工具。在这种情况下，预计会频繁出现 HTTP 客户端 (4xx) 错误。
+ 您将 [AWS WAF](https://docs.aws.amazon.com/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 控制台配置增强型运行状况规则
<a name="health-enhanced-rules.console"></a>

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

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

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

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

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

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

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

## 使用 EB CLI 配置增强型运行状况规则
<a name="health-enhanced-rules.ebcli"></a>

您可以通过以下方法使用 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 将使用本地文件。

## 使用配置文档配置增强型运行状况规则
<a name="health-enhanced-rules.configdocument"></a>

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

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

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

对于 AWS 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 自定义指标
<a name="health-enhanced-cloudwatch"></a>

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

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

## 增强型运行状况报告指标
<a name="health-enhanced-cloudwatch-metrics"></a>

当您在环境中启用增强型运行状况报告时，增强型运行状况报告系统会自动发布一个[CloudWatch 自定义指标*EnvironmentHealth*](https://docs.aws.amazon.com/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 指标
<a name="health-enhanced-cloudwatch-console"></a>

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

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

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

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

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

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

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

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

## 使用 EB CLI 配置 CloudWatch 自定义指标
<a name="health-enhanced-cloudwatch-ebcli"></a>

您可以通过以下方法使用 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 将使用本地文件。

## 提供自定义指标配置文件
<a name="health-enhanced-cloudwatch-configdocument"></a>

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
}
```

对于 AWS 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 结合使用
<a name="health-enhanced-api"></a>

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

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

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

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

## 增强型运行状况配置选项
<a name="health-enhanced-api-options"></a>

**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)。

# 增强型运行状况日志格式
<a name="health-enhanced-serverlogs"></a>

AWS 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 服务器日志配置
<a name="health-enhanced-serverlogs.configure"></a>

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.aws.amazon.com/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
```

## 为增强型运行状况报告生成日志
<a name="health-enhanced-serverlogs.generate"></a>

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

# 通知和问题排查
<a name="environments-health-enhanced-notifications"></a>

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

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

## 部署
<a name="environments-health-enhanced-notifications-deployments"></a>

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)来确定运行错误应用程序版本的实例。

## 应用程序服务器
<a name="environments-health-enhanced-notifications-webapp"></a>

*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 使用率并将实例运行状况设置为**警告**或**降级**。

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

## 工作线程实例
<a name="environments-health-enhanced-notifications-worker"></a>

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

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

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

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

## 其他资源
<a name="environments-health-enhanced-notifications-other"></a>

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

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

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

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

# 人工智能驱动的环境分析
<a name="health-ai-analysis"></a>

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

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

## 工作原理
<a name="health-ai-analysis-how-it-works"></a>

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

## 先决条件
<a name="health-ai-analysis-prereqs"></a>

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

## 所需的权限
<a name="health-ai-analysis-permissions"></a>

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

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

## 在控制台中使用 AI 分析
<a name="health-ai-analysis-console"></a>

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

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

## 将 AI 分析与 AWS CLI
<a name="health-ai-analysis-api"></a>

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

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

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

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

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

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

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

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

## 在 EB CLI 中使用人工智能分析
<a name="health-ai-analysis-ebcli"></a>

如果您使用 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 或更高版本。

## 重要注意事项
<a name="health-ai-analysis-considerations"></a>
+ **定价** — 人工智能分析使用 Amazon Bedrock 来处理您的环境数据，标准的 Amazon Bedrock 定价适用于模型调用。有关定价详细信息，请参阅 [Amazon Bedrock 定价](https://aws.amazon.com/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://aws.amazon.com/bedrock/security-compliance/)合规性。
+ **服务配额** — 人工智能分析使用 Amazon Bedrock 中的 Anthropic Claude 模型，该模型具有每分钟请求的默认配额和每分钟令牌的默认配额。如果您遇到限制错误，可以申请增加配额。有关更多信息，请参阅[请求提高限额](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

## 支持的平台版本
<a name="health-ai-analysis-supported-platforms"></a>

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

# 管理警报
<a name="using-features.alarms"></a>

本主题将引导您完成为您正在监控的指标创建警报的步骤。它还提供查看现有警报和检查其状态的说明。

您可以使用 Elastic Beanstalk 控制台为监控的指标创建警报。警报可帮助您监控 AWS Elastic Beanstalk 环境的变化，以便在问题发生之前轻松识别和缓解问题。例如，您可以设置一个警报以在环境中的 CPU 使用率超过特定阈值时通知您，从而确保在潜在问题出现之前您就得到通知。有关更多信息，请参阅 [在亚马逊上使用 Elastic Beanstalk CloudWatch](AWSHowTo.cloudwatch.md)。

**注意**  
Elastic CloudWatch Beanstalk 用于监控和警报 CloudWatch ，这意味着您使用的任何警报都会 AWS 从您的账户中扣除费用。

有关特定于监控的指标的更多信息，请参阅[基本运行状况报告](using-features.healthstatus.md)。

**检查警报的状态**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

1. 在导航窗格中，选择**告警**。

   该页面显示现有警报的列表。如果任何警报处于警报状态，则它们会标记有警告图标（![\[Image of the warning icon.\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/warning.png)）。

1. 要筛选警报，请选择下拉菜单，然后选择筛选器。

1. 要编辑或删除警报，请分别选择编辑图标（![\[Image of a cog, which serves as the edit icon.\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/cog.png)）或删除图标（![\[Image of an x, which servers as the delete icon.\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/x.png)）。

**创建警报**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

1. 在导航窗格中，选择 **Monitoring (监控)**。

1. 找到要为其创建警报的指标，然后选择警报图标（![\[Image of a bell, which serves as the alarm icon.\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/bell.png)）。将显示 **Add alarm (添加警报)** 页面。

1. 输入有关警报的详细信息：
   + **Name (名称)**：此警报的名称。
   + **Description (描述)**（可选）：有关此警报含义的简短描述。
   + **Period (周期)**：两次读取之间的时间间隔。
   + **Threshold (阈值)**：描述为触发警报而必须使该指标超过的值和逾越的行为。
   + **Change state after (更改状态的时间)**：超过阈值之后触发警报状态更改所需的时长。
   + **Notify (通知)**：警报更改状态时通知的 Amazon SNS 主题。
   + **更改为如下状态时通知**：
     + **OK (正常)**：指标在规定的阙值范围内。
     + **Alarm (警报)**：指标超过规定的阈值。
     + **Insufficient data (数据不足)**：警报刚刚开始、指标不可用或没有足够数据可用于指标来确定警报状态。

1. 选择**添加**。环境更新时，环境状态会更改为灰色。您可以通过在导航窗格中选择 **Alarms (警报)** 来查看您创建的警报。

# 查看 Elastic Beanstalk 环境的更改历史记录
<a name="using-features.changehistory"></a>

本主题介绍如何使用 Elastic Beanstalk 控制台查看对 Elastic Beanstalk 环境所做的配置更改的历史记录。

Elastic Beanstalk 从 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 中记录的事件中获取您的更改历史记录，并将其显示在一个列表中，以便您可以轻松浏览和筛选。

“更改历史记录”面板显示对环境所做更改的以下信息：
+ 进行更改的日期和时间
+ 负责所做更改的 IAM 用户
+ 用于进行更改的源工具（Elastic Beanstalk 命令行界面 (EB CLI) 或控制台）
+ 配置参数和设置的新值

属于更改一部分的任何敏感数据（例如受更改影响的数据库用户的姓名）都不会显示在面板中。

**要查看更改历史记录**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Change history**（更改历史记录）。

   Change History（更改历史记录）页面显示了对 Elastic Beanstalk 环境所做配置更改的列表。

浏览此页面信息时，请注意以下几点：
+ 您可以通过选择 **<**（上一步）或 **>**（下一步）或者选择特定的页码来浏览列表。
+ 在 **Configuration changes**（配置更改）列下，选择箭头图标以在 **Changes made**（所做更改）标题下的展开和折叠更改列表之间切换。
+ 使用搜索栏从更改历史记录列表中筛选结果。您可以输入任何字符串来缩小显示的更改列表的范围。

请注意有关筛选显示的结果的以下事项：
+  搜索筛选条件不区分大小写。
+  您可以根据 **Configuration changes**（配置更改）列下的信息筛选显示的更改，即使它因为折叠在 **Changes made**（所做更改）内而不可见。
+  您只能筛选显示的结果。但是，即使您选择转到另一个页面以显示更多结果，筛选条件仍然保持不变。您筛选的结果还将附加到下一页的结果集中。

 以下示例演示了如何筛选之前的屏幕上显示的数据：
+  **GettingStartedApp-env**在搜索框中输入以缩小结果范围，使其仅包括对名为 *GettingStartedApp-en* v 的环境所做的更改。
+  在搜索框中输入 **example3** 以缩小结果的范围，使其仅包含用户名中包含字符串 *example3* 的 IAM 用户所做的更改。
+  在搜索框中输入 **2020-10** 以缩小结果范围，使其仅包含在 2020 年 10 月当月所做的更改。将搜索值更改为 **2020-10-16** 以进一步筛选显示的结果，使其仅包含 2020 年 10 月 16 日当天所做的更改。
+  在搜索框中输入 **proxy:staticfiles** 以缩小结果的范围，使其仅包含对名为 *aws:elasticbeanstalk:environment:proxy:staticfiles* 的命名空间所做的更改。显示的行是筛选器的结果。即使对于折叠在 **Changes made**（所做更改）下的结果也是如此。

# 查看 Elastic Beanstalk 环境的事件流
<a name="using-features.events"></a>

本主题介绍如何访问与您的应用程序相关的事件和通知。

## 使用 Elastic Beanstalk 控制台查看事件
<a name="using-features.events.console"></a>

**使用 Elastic Beanstalk 控制台查看事件**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

1. 在导航窗格中，选择 **Events（事件）**。

   “Events (事件)”页面显示已为环境记录的所有事件的列表。可以通过选择 **<**（上一页）、**>**（下一页）或页码来分页查看列表。您可以使用**严重性**下拉列表按显示的事件类型进行筛选。

## 使用命令行工具查看事件
<a name="using-features.events.command-line"></a>

[EB CLI](eb-cli3.md) 和 [AWS CLI](https://aws.amazon.com/cli/) 均提供检索事件的命令。如果您正在使用 EB CLI 管理您的环境，请使用 [**eb events**](eb3-events.md) 打印事件的列表。此命令还拥有一个 `--follow` 选项，此选项可让系统继续显示新事件，直到您按 **Ctrl\$1C** 停止输出。

要使用提取事件 AWS CLI，请使用`describe-events`命令并按名称或 ID 指定环境：

 

```
$ aws elasticbeanstalk describe-events --environment-id e-gbjzqccra3
{
    "Events": [
        {
            "ApplicationName": "elastic-beanstalk-example",
            "EnvironmentName": "elasticBeanstalkExa-env",
            "Severity": "INFO",
            "RequestId": "a4c7bfd6-2043-11e5-91e2-9114455c358a",
            "Message": "Environment update completed successfully.",
            "EventDate": "2015-07-01T22:52:12.639Z"
        },
...
```

有关命令行工具的更多信息，请参阅 [设置 EB 命令行界面（EB CLI）来管理 Elastic Beanstalk](eb-cli3.md)。

# 列出和连接到服务器实例
<a name="using-features.ec2connect"></a>

本主题介绍如何查看运行您的 Elastic Beanstalk 应用程序环境的亚马逊 EC2 实例列表以及如何连接到这些实例。

您可以通过 Elastic Beanstalk 控制台查看运行您的 AWS Elastic Beanstalk 应用程序环境的亚马逊 EC2 实例列表。您可以使用任何 SSH 客户端连接到这些实例。您可使用远程桌面连接运行 Windows 的实例。

**重要**  
在访问您的 Elastic BeanStalk（预配置的亚马逊实例）之前，您必须创建 EC2 亚马逊密钥 EC2 对，并将已配置的 Elastic BeanStalk 的亚马逊配置为使用亚马逊密钥对。 EC2instances EC2 您可以使用[AWS 管理控制台](https://console.aws.amazon.com/)设置您的 Amazon EC2 密钥对。有关为亚马逊创建密钥对的说明 EC2，请参阅《*亚马逊 EC2 入门指南》*。有关如何将您的亚马逊 EC2 实例配置为使用 Amazon EC2 密钥对的更多信息，请参阅[EC2 key pair](using-features.managing.security.md#using-features.managing.security.keypair)。  
默认情况下，Elastic Beanstalk 不启用与 Windows 容器中实例的远程 EC2 连接，但旧版 Windows 容器中的实例除外。（Elastic B EC2 eanstalk 将传统 Windows 容器中的实例配置为使用端口 3389 进行 RDP 连接。） 您可以向安全组添加一条规则，授权 EC2 实例的入站流量，从而启用与运行 Windows 的实例的远程连接。我们强烈建议您在结束远程连接时删除该规则。您可以在下次需要远程登录时再次添加该规则。有关更多信息，请参阅《*适用于 Microsoft Windows 的 Amazon Elastic Compute Cloud 用户指南*》中的[向 Windows 实例添加入站 RDP 流量规则](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/authorizing-access-to-an-instance.html#authorizing-access-to-an-instance-rdp)和[连接到您的 Windows 实例](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2Win_GetStarted.html#connecting_to_windows_instance)。

**查看和连接环境的 Amazon EC2 实例**

1. 打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在控制台的导航窗格中，选择 **Load Balancers (负载均衡器)**。

1.  由 Elastic Beanstalk 创建的负载均衡器的名称中有 **awseb**。查找适合您环境的负载均衡器，然后单击该均衡器。

1.  选择控制台底部窗格中的 **Instances (实例)** 选项卡。

    显示 Elastic Beanstalk 环境的负载均衡器所使用的实例列表。请记下您想连接的实例 ID。

1. 在 Amazon EC2 控制台的导航窗格中，选择**实例**，然后在列表中找到您的实例 ID。

1. 右键单击在您的环境负载均衡器中运行的 Amazon EC2 实例的实例 ID，然后从快捷菜单中选择 **Connect**。

1.  请记下该实例在 **Description (描述)** 选项卡上的公共 DNS 地址。

1.  使用你选择的 SSH 客户端连接到运行 Linux 的实例，然后键入 ssh **-i .ec2/mykeypair.pem ec2-user@<public-** DNS->。of-the-instance

有关连接亚马逊 EC2 Linux 实例的更多信息，请参阅亚马逊* EC2 用户指南*中的[亚马逊 EC2 Linux 实例入门](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)。

*如果您的 Elastic Beanstalk 环境[在 Windows 服务器平台上使用.NET](create_deploy_NET.container.console.md)，[请参阅亚马逊用户指南中的 EC2 亚马逊 Windows 实例入门](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html)。 EC2 *

# 查看您的 Elastic Beanstalk 环境中的 Amazon EC2 实例的日志
<a name="using-features.logging"></a>

本主题介绍 Elastic Beanstalk 提供的实例日志类型。它还提供了检索和管理它们的详细说明。

Elastic Beanstalk 环境中的 Amazon EC2 实例会生成日志，您可以查看这些日志来对应用程序或配置文件进行故障排除。日志由 Web 服务器、应用服务器、Elastic Beanstalk 平台脚本创建 CloudFormation ，存储在本地的各个实例上。您可使用[环境管理控制台](environments-console.md)或 EB CLI 轻松检索这些日志。您还可以将您的环境配置为将日志实时流式传输到 Amazon CloudWatch Logs。

结尾日志是最常用日志文件的后 100 行，最常用日志文件有 Elastic Beanstalk 操作日志和来自 Web 服务器或应用程序服务器的日志。当您使用环境管理控制台或 **eb logs** 请求结尾日志时，环境中的一个实例会将最新的日志条目连接为一个文本文件，并将其上传到 Amazon S3。

捆绑日志是包含更多日志文件的完整日志，包括来自 yum 和 cron 的日志以及一些来自 CloudFormation的日志。当您请求捆绑日志时，环境中的一个实例会将完整日志文件打包为一个 ZIP 存档并上传到 Amazon S3。

要将已轮换的日志上传到 Amazon S3，环境中的实例必须有一个[实例配置文件](concepts-roles-instance.md)，并且具有向您的 Elastic Beanstalk Amazon S3 存储桶写入的权限。这些权限包含在默认实例配置文件中，在 Elastic Beanstalk 控制台中首次启动环境时，Elastic Beanstalk 将提示您创建该配置文件。

**检索实例日志**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

1. 在导航窗格中，选择**日志**。

1. 选择 **Request Logs (请求日志)**，然后选择要检索的日志类型。要检索结尾日志，请选择 **Last 100 Lines (最后 100 行)**。要检索捆绑日志，请选择 **Full Logs (完整日志)**。

1. Elastic Beanstalk 完成检索日志后，选择 **Download (下载)**。

Elastic Beanstalk 将结尾和捆绑日志存储在 Amazon S3 存储桶中，并生成可用于访问日志的预签名 Amazon S3 URL。Elastic Beanstalk 会在 15 分钟的持续时间之后，从 Amazon S3 中删除文件。

**警告**  
拥有该预签名 Amazon S3 URL 的任何人都可以在这些文件被删除之前访问这些文件。只能将该 URL 提供给可信方。

**注意**  
您的用户策略必须具有 `s3:DeleteObject` 权限。Elastic Beanstalk 使用您的用户权限从 Amazon S3 中删除日志。

要保留日志，您可以将环境配置为在日志轮换后自动将它们发布到 Amazon S3。要启用到 Amazon S3 的日志轮换，请按照[配置实例日志查看](environments-cfg-logging.md#environments-cfg-logging-console)中的过程操作。环境中的实例会尝试每小时上传一次已轮换的日志。

如果应用程序不是在环境平台默认配置的位置生成日志，可以使用配置文件 (`[.ebextensions](ebextensions.md)`) 扩展默认配置。您可以将应用程序的日志文件添加到结尾日志、捆绑日志或日志轮换中。

要实现实时日志流和长期存储，请将您的环境配置为将[日志流式传输到 Amazon CloudWatch Logs](#health-logs-cloudwatchlogs)。

要获取 AI 支持的环境日志、事件和实例运行状况分析，以确定运行状况问题的根本原因和解决方案，请参阅[人工智能驱动的环境分析](health-ai-analysis.md)。

**Topics**
+ [Amazon EC2 实例上的日志位置](#health-logs-instancelocation)
+ [Amazon S3 中的日志位置](#health-logs-s3location)
+ [Linux 上的日志轮换设置](#health-logs-logrotate)
+ [扩展默认日志任务配置](#health-logs-extend)
+ [将日志文件流式传输到 Amazon CloudWatch 日志](#health-logs-cloudwatchlogs)

## Amazon EC2 实例上的日志位置
<a name="health-logs-instancelocation"></a>

日志存储在您环境中 Amazon EC2 实例上的标准位置。Elastic Beanstalk 生成以下日志。

**Amazon Linux 2**
+ `/var/log/eb-engine.log`

**亚马逊 Linux AMI (AL1)**

**注意**  
 [2022 年 7 月 18 日，](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)**Elastic Beanstalk 将所有基于亚马逊 Linux AMI AL1 () 的平台分支的状态设置为停用。**有关迁移到当前且完全受支持的 Amazon Linux 2023 平台分支的更多信息，请参阅 [将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2023 或 Amazon Linux 2](using-features.migration-al.md)。
+ `/var/log/eb-activity.log`
+ `/var/log/eb-commandprocessor.log`

**Windows Server**
+ `C:\Program Files\Amazon\ElasticBeanstalk\logs\`
+ `C:\cfn\log\cfn-init.log`

这些日志中包含有关部署活动的消息，包括与配置文件（[`.ebextensions`](ebextensions.md)）有关的消息。

各应用程序和 Web 服务器都在其自己的文件夹中存储日志：
+ **Apache** – `/var/log/httpd/`
+ **IIS** – `C:\inetpub\wwwroot\`
+ **Node.js** – `/var/log/nodejs/`
+ **nginx** – `/var/log/nginx/`
+ **Passenger** – `/var/app/support/logs/`
+ **Puma** – `/var/log/puma/`
+ **Python** – `/opt/python/log/`
+ **Tomcat** – `/var/log/tomcat/`

## Amazon S3 中的日志位置
<a name="health-logs-s3location"></a>

当您从环境请求结尾日志或捆绑日志时，或在实例上传轮换日志时，它们存储在 Amazon S3 中您的 Elastic Beanstalk 存储桶中。Elastic Beanstalk 会为你在其中创建环境的每个区域创建一个命 AWS 名的`elasticbeanstalk-region-account-id`存储桶。在此存储桶内，日志存储在路径 `resources/environments/logs/logtype/environment-id/instance-id` 下。

例如，来自账户区域的 Elastic `e-mpcwnwheky` Beanstalk AWS 环境`us-west-2`中的日志存储`123456789012`在以下位置：`i-0a1fd158`
+ **结尾日志** –

  `s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/tail/e-mpcwnwheky/i-0a1fd158`
+ **捆绑日志** –

  `s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/bundle/e-mpcwnwheky/i-0a1fd158`
+ **轮换日志** –

  `s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/publish/e-mpcwnwheky/i-0a1fd158`

**注意**  
您可以在环境管理控制台中查找您的环境 ID。

Elastic Beanstalk 在结尾日志和捆绑日志创建 15 分钟后自动将它们从 Amazon S3 中删除。轮换日志会一直保留，直到您将它们删除或移至 Amazon Glacier。

## Linux 上的日志轮换设置
<a name="health-logs-logrotate"></a>

在 Linux 平台上，Elastic Beanstalk 使用 `logrotate` 来定期轮换日志。如果已配置，则日志在本地轮换后，将由日志轮换任务选取并上传至 Amazon S3。默认情况下，已本地轮换的日志不会显示在结尾日志或捆绑日志中。

您可在 `/etc/logrotate.elasticbeanstalk.hourly/` 中找到 `logrotate` 的 Elastic Beanstalk 配置文件。这些轮换设置是平台特定的，以后的平台版本中可能会有变化。如需有关可用的设置和示例配置的更多信息，请运行 `man logrotate`。

配置文件在 `/etc/cron.hourly/` 中由 cron 任务调用。有关 `cron` 的更多信息，请运行 `man cron`。

## 扩展默认日志任务配置
<a name="health-logs-extend"></a>

Elastic Beanstalk 使用 Amazon EC2 实例上的子文件夹 `/opt/elasticbeanstalk/tasks` (Linux) 或 `C:\Program Files\Amazon\ElasticBeanstalk\config` (Windows Server) 中的文件配置结尾日志、捆绑日志和日志轮换任务。

**在 Amazon Linux 上：**
+ **结尾日志** –

  `/opt/elasticbeanstalk/tasks/taillogs.d/`
+ **捆绑日志** –

  `/opt/elasticbeanstalk/tasks/bundlelogs.d/`
+ **轮换日志** –

  `/opt/elasticbeanstalk/tasks/publishlogs.d/`

**在 Windows Server 上：**
+ **结尾日志** –

  `c:\Program Files\Amazon\ElasticBeanstalk\config\taillogs.d\`
+ **捆绑日志** –

  `c:\Program Files\Amazon\ElasticBeanstalk\config\bundlelogs.d\`
+ **轮换日志** –

  `c:\Program Files\Amazon\ElasticBeanstalk\config\publogs.d\`

例如，Linux 上的 `eb-activity.conf` 文件将两个日志文件添加到结尾日志任务。

**`/opt/elasticbeanstalk/tasks/taillogs.d/eb-activity.conf `**

```
/var/log/eb-commandprocessor.log
/var/log/eb-activity.log
```

您可以使用环境配置文件 (`[.ebextensions](ebextensions.md)`) 将自己的 `.conf` 文件添加到这些文件夹。`.conf` 文件列出应用程序特定的日志文件，Elastic Beanstalk 将这些日志文件添加到日志文件任务。

使用 `files` 部分可将配置文件添加到要修改的任务。例如，以下配置文本向您的环境中的每个实例添加一个日志配置文件。此日志配置文件 (即 `cloud-init.conf`) 向结尾日志添加 `/var/log/cloud-init.log`。

```
files:
  "/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/log/cloud-init.log
```

将此文本添加到扩展名为 `.config` 的文件中，并将该文件添加到您的源包中名为 `.ebextensions` 的文件夹下。

```
~/workspace/my-app
|-- .ebextensions
|   `-- tail-logs.config
|-- index.php
`-- styles.css
```

在 Linux 平台上，您也可以在日志任务配置中使用通配符。此配置文件将应用程序根目录下 `.log` 文件夹中扩展名为 `log` 的所有文件添加到捆绑日志中。

```
files: 
  "/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/app/current/log/*.log
```

在 Windows 平台上，日志任务配置不支持通配符。

**注意**  
为了帮助您自行熟悉日志自定义过程，您可以使用 [EB CLI](eb-cli3.md) 部署示例应用程序。为此，EB CLI 创建一个本地应用程序目录，其中包含 `.ebextentions` 子目录以及示例配置。还可以使用示例应用程序的日志文件来探索本主题中描述的日志检索功能。

有关使用配置文件的更多信息，请参阅[使用配置文件 (`.ebextensions`) 进行高级环境自定义](ebextensions.md)。

与扩展结尾日志和捆绑日志非常相似，可以使用配置文件来扩展日志轮换。只要 Elastic Beanstalk 轮换自己的日志并将其上传到 Amazon S3，它也轮换和上传您的附加日志。日志轮换扩展的行为因平台的操作系统而异。以下部分介绍两种情况。

### 在 Linux 上扩展日志轮换
<a name="health-logs-extend-rotation-linux"></a>

如[Linux 上的日志轮换设置](#health-logs-logrotate)中所述，Elastic Beanstalk 使用 `logrotate` 在 Linux 平台上轮换日志。如果配置应用程序的日志文件进行日志轮换，应用程序无需创建日志文件的副本。Elastic Beanstalk 将 `logrotate` 配置为对每个轮换创建应用程序日志文件的副本。因此，应用程序在未主动向日志文件写入内容时，必须使这些日志文件保持解锁状态。

### 在 Windows Server 上扩展日志轮换
<a name="health-logs-extend-rotation-windows"></a>

在 Windows Server 中，如果配置应用程序的日志文件进行日志轮换，该应用程序必须定期轮这些日志文件。Elastic Beanstalk 查找其名称以配置的模式开头的文件，选取这些文件以便上传到 Amazon S3。此外，Amazon S3 忽略文件名中的句点，将句点之前的名称视为基本日志文件名。

Amazon S3 上传基本日志文件的所有版本（最新版本除外），因为它认为最新版本是活动的应用程序日志文件，可能处于锁定状态。因此，应用程序可使活动日志文件在轮换之间保持锁定状态。

例如，应用程序写入名为 `my_log.log` 的日志文件，您在 `.conf` 文件中指定该名称。应用程序定期轮换该文件。在 Elastic Beanstalk 轮换周期中，它在日志文件的文件夹中找到以下文件：`my_log.log`、`my_log.0800.log`、`my_log.0830.log`。Elastic Beanstalk 将所有这些文件都视为基本名称 `my_log` 的版本。文件 `my_log.log` 的修改时间最晚，因此，Elastic Beanstalk 仅上传其他两个文件：`my_log.0800.log` 和 `my_log.0830.log`。

## 将日志文件流式传输到 Amazon CloudWatch 日志
<a name="health-logs-cloudwatchlogs"></a>

[您可以在 Elastic Beanstalk 控制台中或使用配置选项将环境配置为将 CloudWatch 日志流式传输到 Amazon Logs。](command-options.md)借助 Lo CloudWatch gs，环境中的每个实例都会将日志流式传输到日志组，您可以将这些日志组配置为即使在环境终止后也能保留数周或数年。

流式传输的日志集根据环境而有所不同，但始终包含 `eb-engine.log` 和来自在应用程序前运行的 nginx 或 Apache 代理服务器的访问日志。

您可以使用 Elastic Beanstalk 控制台，在[创建环境期间](environments-create-wizard.md#environments-create-wizard-software)或者[为现有环境配置日志流](environments-cfg-logging.md#environments-cfg-logging-console)。您可以从控制台设置以下选项：启用/禁用日志流式传输到 CloudWatch 日志、设置保留天数，以及从 “生命周期” 选项中进行选择。在以下示例中，日志最多保存七天，甚至在环境已终止时也是如此。

![\[Elastic Beanstalk 控制台中 CloudWatch 日志设置的屏幕图像。\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/log-streaming-screen.png)


下面的[配置文件](ebextensions.md)启用了保留期为 180 天（即使环境已终止）的日志流。

**Example .ebextensions/log-streaming.config**  

```
option_settings:
  aws:elasticbeanstalk:cloudwatch:logs:
    StreamLogs: true
    DeleteOnTerminate: false
    RetentionInDays: 180
```

# 查看 Elastic Beanstalk 环境的部署日志
<a name="environments-deployment-logs"></a>

Elastic Beanstalk 会为每次部署到您的环境生成部署日志。部署日志按时间顺序提供了部署期间发生的情况的统一视图，包括依赖项安装、构建输出、应用程序启动以及遇到的任何错误。您可以使用部署日志快速诊断失败的部署，而无需通过 SSH 连接到实例或关联多个日志文件。

部署日志在本地写入每个实例。对于通过控制台、CLI、API 或托管更新触发的部署，一个实例在部署期间会持续将其日志上传到 Amazon S3。Elastic Beanstalk 控制台从 Amazon S3 读取日志，因此您无需连接到实例即可监控进度。

部署日志经过精心设计，简洁明了。成功后，日志仅显示摘要消息（例如，哪些命令已运行并已完成）。失败时，日志最多包含失败步骤的 50 行输出，因此您无需筛选详细输出即可看到错误。

**注意**  
部署日志在 2026 年 3 月 11 日当天或之后发布的[亚马逊 Linu [x 2](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2026-03-11-al2.html) 和亚马逊 Linux 2023](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2026-03-11-al2023.html) 平台版本上可用。目前不支持 Windows 平台。

## 支持的操作
<a name="environments-deployment-logs.supported-operations"></a>

将为以下操作生成部署日志：
+ **应用程序部署**-将新的应用程序版本部署到您的环境。
+ **配置更新**-更改需要实例更新的环境配置设置。
+ **环境创建**-创建新环境时的初始部署。
+ **重新启动应用程序服务器**-在您的实例上重新启动应用程序服务器。

不修改实例上的应用程序或配置状态的操作（例如请求日志 CNAMEs、交换或更新标签）不会生成部署日志。

## 部署日志内容
<a name="environments-deployment-logs.contents"></a>

部署日志在部署期间会捕获以下信息：
+ **部署生命周期**-每个部署阶段的开始和完成消息，例如`Starting Application deployment`和`Completed Application deployment`。
+ **.ebextensions 输出** — 成功后，显示运行的命令的名称。失败时，最后50行`cfn-init`输出可帮助诊断问题。
+ **平台挂钩输出**-成功后，运行的挂钩脚本的名称。失败时，最后50行挂钩输出。
+ **依赖项安装**-软件包管理器的输出**npm install**，例如**pip install**、**composer install**、和**bundle install**。成功后，仅记录完成消息。失败时，将包括最后 50 行输出。
+ **生成输出**-生成命令（例如**docker build****go build**、和 Java 构建）的输出。失败时，将包括最后 50 行输出。
+ **应用程序启动输出**-应用程序启动后的初始输出。来源取决于您的平台：
  + *Docker* — 来自**docker logs**或的容器日志 **docker compose logs**
  + *Java SE、Go、Node.js、Python、Ruby、.NET* — 处理标准输出日志
  + *Tomcat — C* atalina 日志输出
  + *PHP — PH* P-FPM 主服务器和池错误日志
  + *ECS* — 来自每个任务容器的容器日志
**注意**  
在应用程序启动 2 秒后开始捕获应用程序输出。仅包含初始启动消息，如果您的应用程序需要更长时间才能生成输出，则不会出现在部署日志中。要查看完整的应用程序日志，请请求捆绑包日志或直接连接到实例。有关更多信息，请参阅 [查看实例日志](using-features.logging.md)。

当部署步骤失败时，日志会将其标记为`[ERROR]`并包含失败步骤的最多 50 行输出。如果部署日志不包含足够的详细信息，则可以从 “日志” 选项卡检索完整的实例日志（包括`eb-engine.log``eb-hooks.log`、和应用程序**日志**）。有关更多信息，请参阅 [查看您的 Elastic Beanstalk 环境中的 Amazon EC2 实例的日志](using-features.logging.md)。

## 在控制台中查看部署日志
<a name="environments-deployment-logs.console"></a>

Elastic Beanstalk 控制台在环境控制面板上**提供**了 “部署” 选项卡，您可以在其中查看部署历史记录和日志。

### 查看部署历史记录
<a name="environments-deployment-logs.console.history"></a>

**查看部署历史记录**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

1. 在环境仪表板中，选择 “部**署**” 选项卡。

   “部署” 选项卡显示了环境的部署表。每行包含以下信息：
   + **请求 ID**-部署的唯一标识符。
   + **状态**-*成功*、*失败*或*进行中*。
   + **类型**-部署类型，例如*环境创建*、*应用程序部署*、*配置更新*、*托管平台更新*、*重启应用程序服务器*、*重建环境*、*恢复环境*、*交换环境域*或*终止环境*。
   + **开始时间**-部署开始的时间。
   + **持续时间**-完成部署所需的时间。

部署进行时，该选项卡会自动轮询更新。您也可以选择刷新按钮来手动重新加载列表。

### 查看部署详细信息和日志
<a name="environments-deployment-logs.console.detail"></a>

**查看部署详细信息**

1. 在 “部**署**” 选项卡上，选择要检查的部署的 “**请求 ID**” 链接。

1. 部署详细信息页面显示一个摘要部分，其中包含请求 ID、状态、部署类型、开始时间、持续时间和部署策略。*当可以从部署事件中确定部署策略时，就会显示部署策略（例如 “*全部一次*”、“*滚动”、“滚动”、“附加批*次”、“*不可变*” 或 “*流量分割*”）。*

1. 在摘要下方，选择以下选项卡之一：
   + **事件**-与此部署相关的事件的时间表，经过筛选后仅显示所选部署的事件。
   + **部署日志**-来自实例的合并部署日志。您可以搜索、按日志级别筛选和下载日志文件。

对于正在进行的部署，日志选项卡会自动刷新以在写入时显示新的日志条目。部署完成后，控制台会获取最终的日志状态，以确保您看到完整的输出。

**重要**  
在控制台中查看部署日志需要`s3:GetObject`获得环境的 Amazon S3 存储桶 (`elasticbeanstalk-region-account-id`) 的权限。如果您的 IAM 策略不包含此权限，则部署历史记录和事件仍可用，但日志选项卡将显示错误。

## 实例上的部署日志文件
<a name="environments-deployment-logs.instance"></a>

部署日志会写入每个实例的`/var/log/deployments/`目录中。日志文件名取决于部署的触发方式：
+ **工作流控制的部署**（通过控制台、CLI 或 API 触发）—`eb-deployment-request-id.log`，其中*request-id*是唯一的部署请求 ID。
+ **自启动部署**（实例启动或重启应用服务器）—`eb-deployment-unix-timestamp.log`.

Elastic Beanstalk 会自动轮换这些文件，在每个实例上保留 50 个最新的部署日志。

对于受工作流程控制的部署，日志将通过以下路径上传到 Amazon S3：

```
s3://elasticbeanstalk-region-account-id/resources/environments/logs/deployments/environment-id/log-filename
```

在多实例环境中，第一个开始上传的实例会占用整个部署的角色。在部署期间，该实例会将其日志上传到 Amazon S3。所有实例仍会在本地写入部署日志。

**重要**  
将部署日志上传到 Amazon S3 需要在实例配置文件中获得环境的 Amazon S3 存储桶的`s3:PutObject`许可，并且 VPC 配置必须允许连接到 Amazon S3。

每个文件上传的部署日志上限为 1 MB。如果部署日志超过此大小，则上传的版本将被截断，并显示一条消息，表明实例上有完整的日志。

### 禁用 S3 日志上传
<a name="environments-deployment-logs.disable"></a>

要防止部署日志上传到 Amazon S3，请在您的环境中设置以下环境属性：

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application:environment
    option_name:  EB_DEPLOYMENT_LOG_S3_DISABLED
    value:  true
```

设置此环境属性后，部署日志仍会在每个实例`/var/log/deployments/`上本地写入，但不会上传到 Amazon S3，也不会出现在控制台的 “**部署**” 选项卡中。您也可以在 “**配置**” 页面的 “**软件**” 下设置此属性，或者使用 EB CLI 或 AWS CLI。