我应该为警报 HTTPCode_Target_5XX_Count 或 HTTPCode_ELB_5XX_Count 使用哪些指标?

Which metrics should I use for an alarm HTTPCode_Target_5XX_Count or HTTPCode_ELB_5XX_Count?

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

根据文档:

HTTPCode_ELB_5XX_Count:

The number of HTTP 5XX server error codes that originate from the load balancer. This count does not include any response codes generated by the targets.

HTTPCode_Target_5XX_Count:

The number of HTTP response codes generated by the targets. This does not include any response codes generated by the load balancer.

我想因为这是一个单一的目标群体,所以他们应该是相同的,但显然他们不是,因为在特定的时间范围内,我看到一些 HTTP 4XX 的数据,但 none ELB 4XX 的数据。有什么不同?我应该使用哪一个?

我想这取决于你想要得到的结果。因为这些错误适用于不同的细分市场。

第一个选项(HTTPCode_ELB_5XX_Count) returns 触摸elb本身时产生的错误。当由于某种原因它无法将您的流量重定向到目标组时。我相信这意味着 AWS 问题或配置问题。

在第二种情况下,它 returns 来自目标组中的服务的错误。

我觉得这两部都值得一看。但我认为您会更关心第二种类型的 5xx 错误。

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

Targets (e.g. EC2) -(1)-> ALB -(2)-> user

HTTPCode_Target_5XX_Count 测量 (1)

中 5XX 响应的数量

HTTPCode_ELB_5XX_Count 测量 (2)

中 5XX 响应的数量

注意:Target_5XX 始终包含在 ELB_5XX 中,因为 ALB 将错误转发给客户端。您可以找到有关 ELB_5XX 而非 Target_5XX here.

的更多详细信息

注意:Target_5XXELB_5XX是互斥的。 ELB_5XX 计数不包括目标生成的任何响应代码。 [source]

感谢 Omar Kacimi 的更正!

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