AWS Cloudwatch 警报状态更改延迟

Tom*_*vey 7 monitoring amazon-web-services amazon-cloudwatch

我有一个警报跟踪单个 ALB 的 LoadBalancer 5xx 错误指标。如果过去 1 中的 1 个数据点高于阈值 2,则应处于“警报”状态。周期设置为 1 分钟。查看报警详情:

在此输入图像描述

世界标准时间 2020 年 9 月 23 日 17:18,负载均衡器开始返回 502 错误。这显示在下面的 Cloudwatch 指标图表中,并且我已确认时间是正确的(这是强制 502 响应,因此我知道何时触发它,并且可以在 ALB 日志中看到 17:18 时间戳)

在此输入图像描述

但在警报日志中,“警报中”状态仅在 17:22 UTC 触发,即 17:18 期间出现超过 2 个错误的 4 分钟后。这不是接收通知的延迟 - 这是与我的预期相比状态更改的延迟。状态更改后几秒钟内即可正确接收通知。

这是带有状态更改时间戳的警报日志: 在此输入图像描述

我们认为缺失数据是好的,因此根据指标图,我认为它应该在 17:22 恢复正常(在 17:21 期间出现 0 个错误之后),但仅在 17:27 延迟 5 分钟时恢复正常。

然后我预计它会在 17:24 恢复为“警报”,但直到 17:28 才恢复。

最后,我预计它会在 17:31 恢复正常,但直到 17:40 才恢复正常,整整过了 9 分钟。

为什么我预期状态转换与实际发生之间有 4-9 分钟的延迟?

Mar*_*cin 7

我认为以下AWS论坛给出了解释:

警报数据泄露和警报状态更改之间存在无法解释的延迟

基本上,警报的评估时间比您设置的时间更长,而不仅仅是 1 分钟。该期限是评估范围,作为用户,您无法直接控制它。

来自论坛:

HTTPCode_Target_4XX_Count 指标的报告标准是是否存在非零值。这意味着只有在生成非零值时才会报告数据点,否则不会将任何内容推送到指标中。

CloudWatch 标准警报每分钟评估其状态,无论您为如何处理丢失数据设置什么值,当警报评估是否更改状态时,CloudWatch 会尝试检索比评估期指定数量更多的数据点(在此为 1)。案件)。它尝试检索的数据点的确切数量取决于警报周期的长度以及它是基于标准分辨率还是高分辨率的指标。它尝试检索的数据点的时间范围是评估范围如果评估范围内的所有数据都缺失,而不仅仅是评估期间的数据缺失,则将缺失数据视为应用设置。

因此,CloudWatch 警报将查看一些先前的数据点来评估其状态,如果评估范围内的所有数据都丢失,则将使用处理丢失数据作为设置。在这种情况下,当警报未转换为 OK 状态时,它会使用评估范围内的先前数据点来评估其状态,正如预期的那样。

此处详细解释了丢失数据时的警报评估,这将有助于进一步理解这一点: https: //docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-evaluating-missing-数据

  • 谢谢 - 这可以解释为什么 OK 需要额外 5 分钟才能切换。但我仍然不清楚为什么警报状态没有立即发生。特别是给定 1 个数据点、1 个周期设置(文档中的示例涵盖 3/3)给定评估周期中的 - - - - X,有一个真正的违规数据点,因此应该将状态设置为“警报”,不是吗? (4认同)
  • CloudWatch 是一种基于推送的服务,数据是从源服务 ELB 推送的。指标会出现一些延迟,这是任何监控系统所固有的,因为它们取决于多个变量,例如发布指标的服务的延迟、CloudWatch 中的传播延迟和摄取延迟等。我确实知道 ALB 指标持续 3 或 4 分钟的延迟是偏高的。经过进一步调查,我发现 ALB 指标延迟是由于 3 分钟的摄取延迟时间造成的,并且现阶段无法减少此延迟。 (4认同)
  • 此外,请注意,CloudWatch OPS 和内部服务团队仍在解决此问题,但 ETA(预计可用时间)仍未知。对于由此给您带来的任何不便,我深表歉意。 (2认同)
  • FWIW,我发现 CloudFront 发行版的指标超出范围和触发警报之间存在相当一致的 12 分钟延迟。好像有点疯狂... (2认同)