基于 Metrics Insights 查询创建 CloudWatch 告警
CloudWatch Metrics Insights 查询支持使用类 SQL 语法进行大规模指标查询。您可以针对任何 Metrics Insights 查询创建告警,包括返回多个时间序列的查询。此功能极大地扩展了监控选择。在基于 Metrics Insights 查询创建告警时,该告警会随着受监控资源组中资源的增减而自动调整。只需创建一次告警,任何符合查询定义和筛选条件的资源都会在其相应指标可用时加入告警监控范围。对于多时间序列查询,每个返回的时间序列都会成为告警的影响因素,从而实现更精细且更具动态的监控。
以下是 CloudWatch Metrics Insights 告警的两个主要使用案例:
-
异常值检测和聚合监控
基于返回单个聚合时间序列的 Metrics Insights 查询创建告警。此方法适用于监控基础设施或应用程序聚合指标的动态告警场景。例如,您可以监控所有实例的最大 CPU 使用率,且告警阈值会随着实例集的扩展自动调整。
要创建聚合监控告警,请使用以下查询结构:
SELECT FUNCTION(metricName) FROM SCHEMA(...) WHERE condition;
-
按资源的实例集监控
创建一个可监控多个时间序列的告警,其中每个时间序列都作为一个影响因素独立运行,并拥有各自的状态。当任何影响因素进入“ALARM”状态,告警就会激活,从而触发资源特定的操作。例如,监控多个 RDS 实例之间的数据库连接,防止连接被拒绝。
要监控多个时间序列,请使用以下查询结构:
SELECT AVG(DatabaseConnections) FROM AWS/RDS WHERE condition GROUP BY DBInstanceIdentifier ORDER BY AVG() DESC;
创建多时间序列告警时,查询中必须包含两个关键子句:
-
一个
GROUP BY
子句,用于定义如何构造时间序列及确定查询将生成的时间序列数量 -
一个
ORDER BY
子句,用于对指标进行确定性排序,使告警能够首先评估最重要的信号
这些子句对于准确评估告警至关重要。
GROUP BY
子句会将数据拆分为独立的时间序列(例如按实例 ID 拆分),而ORDER BY
子句可确保这些时间序列在告警评估期间按优先顺序得到一致处理。 -
基于 Metrics Insights 查询的告警适用的限制
使用 CloudWatch Metrics Insights 告警时,请注意以下功能限制:
-
每个区域每个账户使用此语法的告警数量为 200 个
-
只能使用最近 3 小时的数据来评估告警的情况。但告警详情页图表支持可视化展示最长两周的数据
-
对多个时间序列进行评估的告警会将并发转换速率限制为 100
-
Metrics Insights 对分析或返回的最大时间序列数量的限制适用
有关 CloudWatch 服务配额与限制的更多信息,请参阅 CloudWatch 服务配额。
先决条件
在创建 CloudWatch Metrics Insights 告警之前,确保已满足如下前提条件:
-
具备创建和管理 CloudWatch 告警的适当 IAM 权限
-
Amazon 账户中已存在待监控资源的可用指标
-
掌握 SQL 查询语法的基础知识