在警报中使用 PromQL
您可以使用 PromQL 查询来创建 CloudWatch 警报,以监控指标。PromQL 警报会评估 PromQL 表达式,并根据查询结果触发警报状态更改。
有关警报概念的信息,请参阅概念。
有关警报数据查询的信息,请参阅告警数据查询。
有关警报操作的信息,请参阅告警操作。
有关警报限制的信息,请参阅限制。
创建 PromQL 警报
您可以通过 CloudWatch 控制台、Amazon CLI 或 CloudWatch API 创建 PromQL 警报。
通过控制台创建 PromQL 警报
-
打开 CloudWatch 控制台
。 -
在导航窗格中,依次选择 Alarms(警报)和 All alarms(所有警报)。
-
选择Create alarm(创建警报)。
-
选择选择指标,然后选择 PromQL 选项卡。
-
输入 PromQL 查询。查询必须返回警报的单个时间序列以进行评估。
-
配置警报条件,包括阈值、评估期和要发出警报的数据点。
-
配置警报操作,例如 Amazon SNS 通知。
-
输入警报的名称和描述,然后选择创建警报。
您也可以在运行返回单个时间序列的查询后,直接通过 在 Query Studio 中运行 PromQL 查询(预览版) 创建 PromQL 警报。
使用 PromQL 创建 CloudWatch 警报以进行异常检测
您可以创建一个 PromQL 警报,当指标违反统计界限定义的预期范围时会触发该警报。警报查询将上限和下限组合成一个表达式,该表达式仅返回异常数据点。查询返回的任何时间序列均被视为违规。
以下示例表达式会检测检测广告请求指标在 60 分钟窗口内偏离中位数超过 3 个标准差的情况:
1 * {"app.ads.ad_requests"} > quantile_over_time(0.5, {"app.ads.ad_requests"}[60m] offset 1m) + 3 * stddev_over_time({"app.ads.ad_requests"}[60m] offset 1m) or 1 * {"app.ads.ad_requests"} < clamp_min( quantile_over_time(0.5, {"app.ads.ad_requests"}[60m] offset 1m) - 3 * stddev_over_time({"app.ads.ad_requests"}[60m] offset 1m), 0)
此表达式适用于多个标签值,因此警报可以跟踪整个实例集中的异常情况。每个违规的时间序列都作为单独的贡献者进行跟踪。有关 PromQL 警报如何评估贡献者的更多信息,请参阅 PromQL 警报。
您可以调整乘数和时间窗口,以匹配指标的行为。乘数越高,界限越宽,误报越少。较长的时间窗口会平滑掉短期峰值波动。对于不能为负值的指标,clamp_min 函数可防止下限变为负值。
有关使用 PromQL 构建异常检测范围的更多信息,请参阅使用 PromQL 检测异常。