我的 Amazon CloudWatch 警报变更为 ALARM 状态。当我查看监控的指标时,CloudWatch 图表未显示任何超出阀值的数据点。但是,警报历史记录中包含一个带有超出阀值的数据点的条目。我想知道是什么触发了 CloudWatch 警报。
简短描述
CloudWatch 警报会根据立即可用的数据点对指标进行评估。警报的历史记录显示的是警报在该时间戳评估的数据点的记录。但是,警报评估完成后,CloudWatch 可能发布新的样本。新样本可能会影响 CloudWatch 汇总指标数据时计算出的值。
解决方法
找出超出阀值的数据点
如果 CloudWatch 图表未显示任何超出阀值的数据点,则数据点发生在警报评估时间之外。
例如,警报评估发生时,有 X 个样本可用。X 个示例生成的汇总值为 A。随后,发布了新的样本。因此,在相同时间戳检索到了 Y 个样本。Y 个样本生成的汇总值为 B。
在以下示例中,使用了上述参数配置警报:
- 命名空间: Web_App
- 指标: ResponseTime
- 维度:host,h_04254448d4e964956
- 统计数据: 平均值
- 阈值: 0.005
- 比较运算符: GreaterThanThreshold
- 周期: 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。因此,该值与先前计算的值不同,低于阈值。如果在警报评估后发布了更多样本,则看不到该时间范围内超出阀值的数据点。
延长警报评估间隔
将数据点配置为警报时,评估间隔可能会更长。当由于指标延迟而生成虚假警报时,评估间隔会延长,延迟的数据点会包含在警报评估中。加入延迟数据点可以减少虚假警报的数量。
要延长评估间隔,请使用以下一种选项。
延长周期。在以下示例中,周期延长至 5 分钟:
命名空间: Web_App
指标: ResponseTime
维度:host,h_04254448d4e964956
统计数据: 平均值
阈值: 0.005
比较运算符: GreaterThanThreshold
周期: 300 秒(5 分钟)
评估期: 1
或者,将 N 个数据点中的 M 个配置为警报。N 个数据点中的 M 个数据点在以下示例中被配置为三个数据点中的两个:
命名空间: Web_App
指标: ResponseTime
维度:host,h_04254448d4e964956
统计数据: 平均值
阈值: 0.005
比较运算符: GreaterThanThreshold
周期: 60 秒(1 分钟)
评估期 (N): 3
要报警的数据点 (M): 2
如果将评估期和要报警的数据点配置为不同的值,就可以设置 “N 个中的 M 个”警报。要报警的数据点设置为 M,评估期设置为 N。例如,如果将五个数据点中的四个的周期配置为 1 分钟,则评估间隔为 5 分钟。如果将三个数据点全部配置为 10 分钟,则评估间隔为 30 分钟。
如果将要报警的数据点配置为不同的值,则 CloudWatch 警报会评估更多数据点。当最小数据点数超出一组数据点时,CloudWatch 警报也会更改警报状态。该参数可以调整警报,使其在单个数据点上激活,或者使其需要多个数据点才能转换到 ALARM 状态。
有关更多信息,请参阅根据静态阈值创建 CloudWatch 警报和配置 CloudWatch 警报处理丢失数据的方式。
相关信息
为什么我没有收到 CloudWatch 警报触发器的 SNS 通知?
我如何处理 INSUFFICIENT_DATA 状态的 CloudWatch 警报?
为何我的 CloudWatch 警报会在单一数据点超出阈值后给我发送通知?