

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

# 实例指标
<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) 来提供针对计算机上通信优化的安全且可靠的绑定。