创建 Metrics Insights CloudWatch 警报
使用控制台为 Metrics Insights 查询创建告警
-
通过 https://console.aws.amazon.com/cloudwatch/
打开 CloudWatch 控制台。 -
在导航窗格中,依次选择 Metrics(指标)、All metrics(所有指标)。
(可选)要运行预构建的示例查询,请选择 Add query(添加查询),然后选择要运行的查询。或者,您可以选择 Editor(编辑器)来编辑示例查询,然后选择 Run(运行)以运行修改后的查询。
要创建您自己的查询,请选择多来源查询。您可以使用构建器视图、编辑器视图,也可以将二者结合起来使用。您可以随时在两个视图之间切换,并在两个视图中查看正在进行的工作。
在 Builder(构建器)视图中,您可以浏览并选择指标命名空间、指标名称、筛选条件、分组和排序选项。对于其中每个选项,查询构建器都会为您提供您环境中的可选项列表,供您选择。
在 Editor(编辑器)视图中,您可以开始编写查询。输入时,编辑器会根据您当前已输入的字符提供建议。
例如,在为警报配置 Metrics Insights 查询语句时,您可通过标签对指标进行筛选和分组,实现更具针对性的监控。
按标签筛选:通过
WHERE tag.keyName = 'value'监控带有特定标签的资源SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE tag.Environment = 'Prod'标签与维度结合:将标签筛选条件与现有指标维度结合使用
SELECT AVG(Duration) FROM "AWS/Lambda" WHERE tag.Application = 'OrderService' AND FunctionName = 'process%'
注意
使用标签时,仅当关联资源在警报评估时段内存在指定标签,该警报才会匹配对应指标。
如果对查询感到满意,请选择 Run(运行)。
选择创建警报。
在条件下面,指定以下内容:
-
对于 Whenever
metricis(每当指标),指定指标是必须大于、小于还是等于阈值。在于... 下面,指定阈值。 -
选择其他配置。对于触发警报的数据点数,指定必须有多少个评估期(数据点)处于
ALARM状态才能触发警报。如果此处的两个值匹配,则会创建一个告警;如果多个连续评估期违例,该告警将变为ALARM(告警)状态。要创建“M(最大为 N)”告警,为第一个值指定的数字应小于为第二个值指定的数字。有关更多信息,请参阅 评估告警。
对于缺失数据处理,选择在缺失某些数据点时的警报行为。有关更多信息,请参阅 配置 CloudWatch 告警处理缺失数据的方式。
-
选择下一步。
-
在通知下面,选择一个在警报处于
ALARM、OK或INSUFFICIENT_DATA状态时通知的 SNS 主题。要使告警为相同告警状态或不同告警状态发送多个通知,请选择添加通知。
要让警报不发送通知,请选择删除。
要让告警执行 Auto Scaling、EC2 或 Systems Manager 操作,请选择相应的按钮,然后选择告警状态和要执行的操作。告警只有在进入“ALARM(告警)”状态时才能执行 Systems Manager 操作。有关 Systems Manager 操作的更多信息,请参阅将 CloudWatch 配置为通过告警创建 OpsItems 和事件创建。
注意
要创建执行 SSM Incident Manager 操作的告警,您必须具有特定的权限。有关更多信息,请参阅 Amazon Systems Manager Incident Manager 的基于身份的策略示例。
-
在完成后,选择下一步。
-
输入警报的名称和说明。名称只能包含 ASCII 字符。然后选择下一步。
在 Preview and create 下面,确认具有所需的信息和条件,然后选择 Create alarm。
通过 Amazon CLI 基于 Metrics Insights 查询创建警报
使用 put-metric-alarm 命令并在 metrics 参数中指定 Metrics Insights 查询。例如,以下命令将设置一个告警,如果任何实例的 CPU 利用率超过 50%,该告警将进入 ALARM 状态。
aws cloudwatch put-metric-alarm —alarm-name Prod-App-CPU-Alarm —evaluation-periods 1 —comparison-operator GreaterThanThreshold —metrics '[{"Id":"m1","Expression":"SELECT MAX(CPUUtilization) FROM \"AWS/EC2\" WHERE tag.Environment = '\''Prod'\'' AND tag.Application = '\''OrderService'\''", "Period":60}]' —threshold 80