为什么我的 CloudWatch 警报会在没有任何数据点超出阈值时触发?

上次更新日期:2022 年 11 月 3 日

我的 Amazon CloudWatch 警报变为了 ALARM(警报)状态。当我检查正在监控的指标时,CloudWatch 图表没有显示任何超出阈值的数据点。但是,警报历史记录中包含一个带有超出阈值的数据点的条目。为什么我的 CloudWatch 警报会触发?

简短描述

CloudWatch 警报根据给定时刻可用的数据点评估指标。警报历史记录捕获警报在该时间戳评估的数据点的记录。但是,在警报评估发生后,有可能发布新的样本。这些新样本可能会影响 CloudWatch 聚合指标数据时计算的值。

解决方法

查找超出阈值的数据点

如果您的 CloudWatch 图表未显示任何超出阈值的数据点,则这些数据点发生在警报评估时间之外。要了解这是如何发生的,请参阅以下示例。

在此示例中,发生警报评估时有 X 个样本可用,因此聚合值为 A。随后,发布了新的样本,从而在相同的时间戳检索到了 Y 个样本。这会导致不同的聚合值 B

在这种情况下,使用以下参数配置警报:

  • 命名空间:Web_App
  • 指标:响应时间
  • 维度:host,h_04254448d4e964956
  • 统计数据:平均值
  • 阈值:0.005
  • 比较运算符:大于阈值
  • 周期:60 秒(1 分钟)
  • 评估期:1

当警报评估 12:00:00 至 12:01:00 UTC 的时段时,指标将检索以下值:

Sample-1: 12:00:00 UTC, numeric value: 0.00675
Sample-2: 12:00:00 UTC, numeric value: 0.00789
Sample-3: 12:00:00 UTC, numeric value: 0.00421

这些数据点的平均值为 0.006283333,超出了 0.005 秒的阈值。因此,警报更改为 ALARM(警报)状态。警报的历史记录会捕获超过阈值的聚合值。

主机可能会暂时遇到性能问题,这会影响负责发布指标的客户端应用程序。因此,主机可能不会以相等的间隔发布数据点。在这种情况下,12:00 的样本是在警报评估发生后发布的。以下是 12:00 时间戳的所有样本:

Sample-1: 12:00:00 UTC, numeric value: 0.00675
Sample-2: 12:00:00 UTC, numeric value: 0.00789
Sample-3: 12:00:00 UTC, numeric value: 0.00421
Sample-4: 12:00:00 UTC, numeric value: 0.00002
Sample-5: 12:00:00 UTC, numeric value: 0.00007

收到来自此警报的提醒后,用户呈现一个 CloudWatch 图表以查看指标行为。CloudWatch 在 12:00:00 至 12:01:00 UTC 的时段内检索五个样本,并将它们聚合为平均值 0.003788。这与之前计算的值不同,低于阈值。因此,在时间范围内看不到超出阈值的数据点,因为在警报评估发生后发布了更多样本。

延长警报评估间隔

警报的评估间隔是数据点数乘以周期。配置触发警报的数据点数可以延长评估间隔。当警报由于指标延迟而生成虚假提醒时,延长评估间隔允许在警报评估中考虑延迟的数据点。这减少了虚假提醒的数量。

可以通过以下两种方式之一来延长评估间隔:

1.    延长周期。

在以下示例中,周期延长到五分钟:

  • 命名空间:Web_App
  • 指标:响应时间
  • 维度:host,h_04254448d4e964956
  • 统计数据:平均值
  • 阈值:0.005
  • 比较运算符:大于阈值
  • 周期:300 秒(5 分钟)
  • 评估期:1

–或者–

2.    配置“N 个中的 M 个”触发警报的数据点数

在以下示例中,N 个数据点中的 M 个配置为三个中的两个。

  • 命名空间:Web_App
  • 指标:响应时间
  • 维度:host,h_04254448d4e964956
  • 统计数据:平均值
  • 阈值:0.005
  • 比较运算符:大于阈值
  • 周期:60 秒(1 分钟)
  • 评估期(N)3
  • 触发警报的数据点数(M)2

当您将评估期触发警报的数据点数配置为不同的值时,您可以设置“N 个中的 M 个”警报。触发警报的数据点数M评估期N。例如,如果您将五个数据点中的四个的周期配置为一分钟,则评估间隔为五分钟。同样,如果您将三个数据点中的三个的周期配置为十分钟,则评估间隔为三十分钟。

通过这种方式配置触发警报的数据点数后,CloudWatch 警报会评估更多数据点。而且,它们仅在最小数据点数(M)超出数据点数的给定设置(N)时才更改警报状态。此参数可以将警报调整为在单个数据点上触发,或者需要多个数据点转换为 ALARM(警报)状态。

有关更多信息,请参阅根据静态阈值创建 CloudWatch 警报配置 CloudWatch 警报处理缺失数据的方式