我应该将哪些指标用于警报 HTTPCode_Target_5XX_Count 或 HTTPCode_ELB_5XX_Count?

pbn*_*pbn 8 amazon-web-services aws-application-load-balancer

我有一个带有单个目标组的 ALB(这是一个 istio-ingress 网关),我想捕获路由到该目标组的任何请求都返回 5XX 代码的场景。

根据文档:

HTTPCode_ELB_5XX_Count:

源自负载均衡器的 HTTP 5XX 服务器错误代码的数量。此计数不包括目标生成的任何响应代码。

HTTPCode_Target_5XX_Count:

目标生成的 HTTP 响应代码的数量。这不包括负载均衡器生成的任何响应代码。

我认为,由于这是一个单一目标组,因此它们应该是相同的,但显然它们不是,因为在特定时间范围内,我看到了一些 HTTP 4XX 的数据,但没有看到 ELB 4XX 的数据。有什么不同?我应该使用哪一个?

jel*_*csc 8

我认为图表有助于解释差异。用户向您的后端发送请求后,您的后端将执行以下操作将响应发送回用户:

Targets (e.g. EC2) -(1)-> ALB -(2)-> user
Run Code Online (Sandbox Code Playgroud)
  1. HTTPCode_Target_5XX_Count仅测量目标生成的5XX 响应的数量

  2. HTTPCode_ELB_5XX_Count仅测量源自负载均衡器的5XX 响应数量

注意:HTTPCode_ELB_5XX_Count不包括目标生成的任何响应代码,也不HTTPCode_Target_5XX_Count包括源自负载均衡器的响应代码。[来源]

注意:Target_5XX始终包含在 中,ELB_5XX因为 ALB 将错误转发给客户端。您可以在此处找到有关 an ELB_5XXwhich is not a 的更多详细信息。Target_5XX

感谢奥马尔·卡西米的更正


小智 5

@jellycsc 的图表在概念上是正确的。但是,根据:https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html。这些指标是相互排斥的。即 HTTPCode_ELB_4XX_Count 是来自负载均衡器的仅 4xx 响应代码的计数,而不是目标的计数,例如在负载均衡器也不知道将请求转发到哪里的情况下。同样,HTTPCode_Target_4XX_Count 仅表示来自目标组而不是负载均衡器的 4xx 响应的计数。