Elastic Load Balancing
传统负载均衡器
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

传统负载均衡器的 CloudWatch 指标

Elastic Load Balancing 为负载均衡器和后端实例向 Amazon CloudWatch 发布数据点。利用 CloudWatch,您可以按一组有序的时间序列数据 (称为指标) 来检索关于这些数据点的统计数据。可将指标视为要监控的变量,而将数据点视为该变量随时间变化的值。例如,您可以在指定时间段内监控负载均衡器正常状态 EC2 实例的总数。每个数据点都有相关联的时间戳和可选测量单位。

您可使用指标来验证系统是否正常运行。例如,您可以创建 CloudWatch 警报来监控指定的指标,并在指标超出您的可接受范围时启动某个操作 (如向电子邮件地址发送通知)。

只有当请求流经负载均衡器时,Elastic Load Balancing 才会向 CloudWatch 报告指标。如果有请求流经负载均衡器,则 Elastic Load Balancing 进行测量并以 60 秒的间隔发送其指标。如果没有请求流经负载均衡器或指标无数据,则不报告指标。

有关 Amazon CloudWatch 的更多信息,请参阅 Amazon CloudWatch 用户指南

传统负载均衡器 指标

AWS/ELB 命名空间包括以下指标。

指标 描述
BackendConnectionErrors

负载均衡器和注册实例之间连接建立不成功的次数。因为负载均衡器在发生错误时会重试连接,所以此计数会超过请求速率。请注意,此计数还包含与运行状况检查有关的所有连接错误。

报告标准:有非零值。

Statistics:最有用的统计工具是 Sum。请注意,AverageMinimumMaximum 针对每个负载均衡器节点报告,一般并无用处。然而,最小值与最大值(或者峰值到平均值、平均值到谷底)之间的差异可用于确定负载均衡器节点是否存在异常。

示例:假设您的负载均衡器在 us-west-2a 和 us-west-2b 各有 2 个实例,并且向 us-west-2a 中 1 个实例的连接尝试导致出现后端连接错误。us-west-2a 的 sum 值包含这些连接错误,而 us-west-2b 的 sum 值不包含。因此,负载均衡器的 sum 值等于 us-west-2a 的 sum 值。

HealthyHostCount

向负载均衡器注册的运行状况良好的实例的数量。新注册的实例在通过第一次运行状况检查后被视为运行状况良好。如果启用跨可用区负载均衡,则会跨所有可用区为 LoadBalancerName 维度计算运行状况良好的实例的数量。否则,将为每个可用区域计算该数量。

报告标准:有注册的实例

Statistics:最有用的统计工具为 AverageMaximum。这些统计数据由负载均衡器节点决定。请注意,某些负载均衡器节点可能在短时间内认为某实例运行状况不佳,而其他节点将该实例视为运行状况良好。

示例:假设您的负载均衡器在 us-west-2a 和 us-west-2b 各有 2 个实例,并且 us-west-2a 的 1 个实例运行状况不佳,而 us-west-2b 没有运行状况不佳的实例。对于 AvailabilityZone 维度,us-west-2a 平均有 1 个运行状况良好和 1 个运行状况不佳的实例,us-west-2b 平均有 2 个运行状况良好和 0 个运行状况不佳的实例。

HTTPCode_Backend_2XXHTTPCode_Backend_3XXHTTPCode_Backend_4XXHTTPCode_Backend_5XX

[HTTP 侦听器] 注册实例生成的 HTTP 响应代码的数量。该计数不包含负载均衡器生成的任何响应代码。

报告标准:有非零值

Statistics:最有用的统计工具是 Sum。请注意,MinimumMaximumAverage 均为 1。

示例:假设您的负载均衡器在 us-west-2a 和 us-west-2b 各有 2 个实例,并且发送到 us-west-2a 中的 1 个实例的请求导致了 HTTP 500 响应。us-west-2a 的 sum 值包含这些错误响应,而 us-west-2b 的 sum 值不包含。因此,负载均衡器的 sum 值等于 us-west-2a 的 sum 值。

HTTPCode_ELB_4XX

[HTTP 侦听器] 负载均衡器生成的 HTTP 4XX 客户端错误代码的数量。如果请求格式错误或不完整,则会生成客户端错误。

报告标准:有非零值

Statistics:最有用的统计工具是 Sum。请注意,MinimumMaximumAverage 均为 1。

示例:假设您的负载均衡器启用了 us-west-2a 和 us-west-2b,并且客户端请求包含格式错误的请求 URL。结果可能导致所有可用区中客户端错误增加。负载均衡器的 sum 值为各可用区的值的总和。

HTTPCode_ELB_5XX

[HTTP 侦听器] 负载均衡器生成的 HTTP 5XX 服务器错误代码的数量。此计数不包括注册实例生成的任何响应代码。如果没有运行状况良好的实例注册到负载均衡器,或者请求速率超过实例或负载均衡器的容量(溢出),则会报告该指标。

报告标准:有非零值

Statistics:最有用的统计工具是 Sum。请注意,MinimumMaximumAverage 均为 1。

示例:假设您的负载均衡器启用了 us-west-2a 和 us-west-2b,并且 us-west-2a 中的实例具有较高的延迟,对请求的响应较慢。结果,us-west-2a 中的负载均衡器节点波动队列填满,客户端收到 503 错误。如果 us-west-2b 继续正常响应,则负载均衡器的 sum 值将等于 us-west-2a 的 sum 值。

Latency

[HTTP 侦听器] 从负载均衡器将请求发送到已注册实例到该实例开始发送响应标头所用的总时间 (以秒为单位)。

[TCP 侦听器] 负载均衡器成功与注册实例建立连接所用的总时间 (以秒为单位)。

报告标准:有非零值

Statistics:最有用的统计工具是 AverageMaximum 可用于确定某些请求的耗时是否大大超过平均时间。请注意,Minimum 一般没什么用处。

示例:假设您的负载均衡器在 us-west-2a 和 us-west-2b 各有 2 个实例,并且发送到 us-west-2a 中的 1 个实例的请求具有较高的延迟。us-west-2a 的 average 值将高于 us-west-2b 的 average 值。

RequestCount

在指定的时间段(1 或 5 分钟)完成的请求或者发出的连接的数量。

[HTTP 侦听器] 收到和路由的请求数,包括来自注册实例的 HTTP 错误响应。

[TCP 侦听器] 向注册实例发出的连接的数量。

报告标准:有非零值

Statistics:最有用的统计工具是 Sum。请注意,MinimumMaximumAverage 均返回 1。

示例:假设您的负载均衡器在 us-west-2a 和 us-west-2b 各有 2 个实例,并有 100 个请求发送至该负载均衡器。有 60 个请求发送至 us-west-2a,每个实例接收 30 个请求,有 40 个请求发送至 us-west-2b,每个实例接收 20 个请求。对于 AvailabilityZone 维度,us-west-2a 总计有 60 个请求,us-west-2b 总计有 40 个请求。对于 LoadBalancerName 维度,总计有 100 个请求。

SpilloverCount

因波动队列填满而拒绝的请求的总数。

[HTTP 侦听器] 负载均衡器返回 HTTP 503 错误代码。

[TCP 侦听器] 负载均衡器关闭连接。

报告标准:有非零值

Statistics:最有用的统计工具是 Sum。请注意,AverageMinimumMaximum 针对每个负载均衡器节点报告,一般并无用处。

示例:假设您的负载均衡器启用了 us-west-2a 和 us-west-2b,并且 us-west-2a 中的实例具有较高的延迟,对请求的响应较慢。结果是 us-west-2a 中的负载均衡器节点波动队列填满,导致溢出。如果 us-west-2b 继续正常响应,则负载均衡器的 sum 值将与 us-west-2a 的 sum 值相同。

SurgeQueueLength

等待路由的请求的总数。如果负载均衡器无法连接运行状况良好的实例以路由某个请求,则会将该请求排队。队列的最大大小为 1024。队列填满后,额外的请求将被拒绝。有关更多信息,请参阅 SpilloverCount

报告标准:有非零值。

统计数据:最有价值的统计数据是 Maximum,因为它代表排队请求的峰值。结合使用 Average 统计数据与 MinimumMaximum 可以确定排队请求的范围。请注意,Sum 并无用处。

示例:假设您的负载均衡器启用了 us-west-2a 和 us-west-2b,并且 us-west-2a 中的实例具有较高的延迟,对请求的响应较慢。结果是 us-west-2a 中的负载均衡器节点波动队列填满,很可能导致客户端的响应时间增加。如果这种情况继续存在,负载均衡器可能溢出(参阅 SpilloverCount 指标)。如果 us-west-2b 继续正常响应,则负载均衡器的 max 将与 us-west-2a 的 max 相同。

UnHealthyHostCount

向负载均衡器注册的运行状况不良的实例的数量。如果实例超过运行状况检查所配置的不佳阈值,则认为实例运行状况不佳。不佳实例在符合运行状况检查所配置的良好阈值之后,被重新视为运行状况良好。

报告标准:有注册的实例

Statistics:最有用的统计工具为 AverageMinimum。这些统计数据由负载均衡器节点决定。请注意,某些负载均衡器节点可能在短时间内认为某实例运行状况不佳,而其他节点将该实例视为运行状况良好。

示例:请参阅HealthyHostCount

以下指标可供您估算将 传统负载均衡器 迁移到 应用程序负载均衡器 的成本。这些指标仅供参考,不适用于 CloudWatch 警报。注意,如果您的 传统负载均衡器 有多个侦听器,则这些指标在所有侦听器上进行聚合。

估算值基于包含一条默认规则和一个大小为 2K 的证书的负载均衡器。如果您使用的是大小为 4K 或以上的证书,我们建议您按如下方式估算成本:使用迁移工具基于您的 传统负载均衡器 创建一个 应用程序负载均衡器,然后监控该 应用程序负载均衡器 的 ConsumedLCUs 指标。有关更多信息,请参阅 Elastic Load Balancing 用户指南 中的从 传统负载均衡器 迁移到 应用程序负载均衡器

指标 描述
EstimatedALBActiveConnectionCount

从客户端到负载均衡器以及从负载均衡器到目标的并发活动 TCP 连接的估计数。

EstimatedALBConsumedLCUs

应用程序负载均衡器 使用的负载均衡器容量单位 (LCU) 的估计数。您需要为每小时使用的 LCU 数量付费。有关更多信息,请参阅 Elastic Load Balancing 定价

EstimatedALBNewConnectionCount

从客户端到负载均衡器以及从负载均衡器到目标建立的新 TCP 连接的估计数。

EstimatedProcessedBytes

应用程序负载均衡器处理的估计字节数。

传统负载均衡器 的指标维度

要筛选您的 传统负载均衡器 的指标,可以使用以下维度。

维度 描述
AvailabilityZone

按指定的可用区筛选指标数据。

LoadBalancerName

按指定的负载均衡器筛选指标数据。

传统负载均衡器指标的统计数据

CloudWatch 提供基于 Elastic Load Balancing 发布的指标数据点的统计数据。统计数据是在指定的时间段内汇总的指标数据。当请求统计数据时,返回的数据流按指标名称和维度进行识别。维度是用于唯一标识指标的名称/值对。例如,您可以请求在特定可用区内启动的负载均衡器背后所有正常状态 EC2 实例的统计数据。

MinimumMaximum 统计数据反映各个负载均衡器节点报告的最小值和最大值。例如,假定有两个负载均衡器节点。一个节点的 HealthyHostCountMinimum 为 2,Maximum 为 10,Average 为 6,另一个节点的 HealthyHostCountMinimum 为 1,Maximum 为 5,Average 为 3。因此,负载均衡器的 Minimum 为 1,Maximum 为 10,Average 大约为 4。

Sum 统计数据是所有负载均衡器节点的汇总值。由于这些指标在每个周期均包含多个报告,因此 Sum 仅适用于对所有负载均衡器节点进行汇总的指标,如 RequestCountHTTPCode_ELB_XXXHTTPCode_Backend_XXXBackendConnectionErrorsSpilloverCount

SampleCount 统计数据是测量的样本数。由于这些指标是基于采样间隔和事件进行收集的,因此此统计信息一般没有用。例如,对于 HealthyHostCountSampleCount 基于每个负载均衡器节点报告的样本数,而不是运行状况正常的主机数。

百分位数指示某个值在数据集中的相对位置。您可以指定任何百分位数,最多使用两位小数 (例如 p95.45)。例如,第 95 个百分位数表示 95% 的数据低于此值,5% 的数据高于此值。百分位数通常用于隔离异常值。例如,假设某个应用程序从缓存服务大多数请求的时间是 1-2 毫秒,但如果缓存是空的,则时间需要 100-200 毫秒。最大值反映了最慢的情况,也就是大约 200 毫秒。平均值不表示数据的分布。百分位提供了一个更有意义的应用程序性能视图。通过使用第 99 个百分位数作为 Auto Scaling 触发器或 CloudWatch 警报,您可以将目标设定为不超过 1% 的请求的处理时间会超过 2 毫秒。

查看负载均衡器的 CloudWatch 指标

您可以使用 Amazon EC2 控制台查看负载均衡器的 CloudWatch 指标。这些指标显示为监控图表。如果负载均衡器处于活动状态并且正在接收请求,则监控图表会显示数据点。

或者,您可以使用 CloudWatch 控制台查看负载均衡器的指标。

使用 Amazon EC2 控制台查看指标

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格上的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择您的负载均衡器。

  4. 选择 Monitoring 选项卡。

  5. (可选) 要按时间筛选结果,请从 Showing data for 中选择时间范围。

  6. 要获得单个指标的一个较大视图,请选择其图形。可供使用的指标如下:

    • 正常主机 - HealthyHostCount

    • 不正常的主机 - UnHealthyHostCount

    • 平均延迟 - Latency

    • 请求总数 - RequestCount

    • 后端连接错误 - BackendConnectionErrors

    • 波动队列长度 - SurgeQueueLength

    • 溢出计数 - SpilloverCount

    • HTTP 2XX 总数 - HTTPCode_Backend_2XX

    • HTTP 4XX 总数 - HTTPCode_Backend_4XX

    • HTTP 5XX 总数 - HTTPCode_Backend_5XX

    • ELB HTTP 4XX 总数 - HTTPCode_ELB_4XX

    • ELB HTTP 5XX 总数 - HTTPCode_ELB_5XX

使用 CloudWatch 控制台查看指标

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格中,选择 Metrics

  3. 选择 ELB 命名空间。

  4. 执行以下任一操作:

    • 选择一种指标维度,按负载均衡器、可用区或跨所有负载均衡器查看指标。

    • 要跨所有维度查看某个指标,请在搜索字段中键入其名称。

    • 要查看单个负载均衡器的指标,请在搜索字段中键入其名称。

    • 要查看单个可用区的指标,请在搜索字段中键入其名称。

为负载均衡器创建 CloudWatch 警报

警报会在您指定的时间范围内监控某个指标。根据指标值 (相对于您定义的阈值),警报可以使用 Amazon SNS (一项可让应用程序、最终用户和设备立即发送和接收通知的服务) 发送一次或多次通知。有关更多信息,请参阅 Get Started with Amazon SNS

当指定指标达到定义的范围并在该范围中保持指定时间段时,警报会向 Amazon SNS 发送通知。警报中包含三个状态:

  • OK - 指标值在指定范围内。

  • ALARM - 指标值在指定时间段内超出指定范围。

  • INSUFFICIENT_DATA – 指标尚不可用或数据不足以确定警报状态。

每当警报状态改变,CloudWatch 便使用 Amazon SNS 向指定的电子邮件地址发送通知。

使用 Amazon EC2 控制台,通过以下过程为负载均衡器创建警报。每当负载均衡器的延迟在连续 5 分钟内超过 120 秒,警报就会向 SNS 主题发送通知。请注意,周期越短,创建的警报越敏感,而较长的周期可减少指标的短暂峰值。

注意

或者,您可以使用 CloudWatch 控制台为负载均衡器创建警报。有关更多信息,请参阅Amazon CloudWatch 用户指南中的根据负载均衡器警报发送电子邮件

若要为负载均衡器创建警报,请执行以下操作

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格上的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择您的负载均衡器。

  4. Monitoring 选项卡上,选择 Create Alarm

  5. 如果您要使用某个 SNS 主题,可从 Send a notification to 选择该主题。否则,请创建 SNS 主题,如下所示:

    1. 选择 create topic

    2. 对于 Send a notification to,键入主题的名称。

    3. 对于 With these recipients,键入要通知的收件人的电子邮件地址 (用逗号分隔)。您最多可输入 10 个电子邮件地址。每个收件人将收到一封来自 Amazon SNS 的电子邮件,其中包含一个用来订阅 SNS 主题以接收通知的链接。

  6. 为您的警报定义阈值,如下所示。对于 Whenever,选择 AverageAverage Latency。对于 Is,选择 > 并输入 120。对于 For at least,键入 1 并选择 5 minutes 的连续时间段。

  7. 对于 Name of alarm,会为您自动生成名称。如果您愿意,可以键入其他名称。

  8. 选择 Create Alarm