组合警报
借助 CloudWatch,您可以将多个警报组合成一个复合警报,从而针对整个应用程序或一组资源创建汇总的运行状况聚合指标。复合警报可通过监控其他警报的状态来确定其状态。您可以定义规则,以使用布尔逻辑来组合这些受监控警报的状态。
您可以仅在聚合级别执行操作,使用复合警报来减少警报噪音。例如,您可以创建一个复合警报,在触发任何与 Web 服务器相关的警报时向 Web 服务器团队发送通知。当其中任何一个警报进入“ALARM”状态时,复合警报会自行进入“ALARM”状态,并向您的团队发送通知。如果与您的 Web 服务器相关的其他警报也进入“ALARM”状态,则您的团队不会收到过多的新通知,因为复合警报已经将当前情况告知团队成员。
您还可以使用复合警报来创建复杂的警报条件,并仅在满足许多不同条件时才执行操作。例如,您可以创建一个复合警报,将 CPU 警报和内存警报结合在一起,并且只有在 CPU 和内存警报都触发时才通知您的团队。
使用复合警报
使用复合警报时,您有两个选项:
配置您只想在复合警报级别执行的操作,并在不执行任何操作的情况下创建底层受监控警报
在复合警报级别配置一组不同的操作。例如,如果问题普遍存在,复合警报操作可能会让其他团队参与进来。
复合警报仅可执行以下操作:
通知 Amazon SNS 主题
调用 Lambda 函数
在 Systems Manager Ops Center 中创建 OpsItems
在 Systems Manager Incident Manager 中创建事件
注意
复合警报中的所有基础警报都必须与复合警报位于相同的账户和区域中。但是,如果您在 CloudWatch 跨账户可观测性监控账户中设置复合告警,则基础告警可以监视不同源账户和该监控账户本身的指标。有关更多信息,请参阅 CloudWatch 跨账户可观测性。
单个复合告警可以监控 100 个基础告警,150 个复合告警可以监控单个基础告警。
规则表达式
所有复合告警都包含规则表达式。规则表达式告诉复合告警要监控哪些其他告警并确定其状态。规则表达式可以同时引用指标告警和复合告警。当您在规则表达式中引用告警时,您可以为告警指定一个函数,用于确定告警将处于以下三种状态中的哪一种:
告警
如果告警处于 ALARM 状态,则 ALARM ("alarm-name or alarm-ARN") 为 TRUE。
OK
如果告警处于 OK 状态,则 OK ("alarm-name or alarm-ARN") 为 TRUE。
INSUFFICIENT_DATA
如果指定的告警处于 INSUFFICIENT_DATA 状态,则 INSUFFICIENT_DATA ("alarm-name or alarm-ARN") 为 TRUE。
注意
TRUE 始终计算为 TRUE,FALSE 始终计算为 FALSE。
表达式示例
请求参数 AlarmRule
支持使用逻辑运算符 AND
、OR
和 NOT
,这样您就可以将多个函数组合成一个表达式。以下示例表达式显示了如何在复合告警中配置基础告警:
ALARM(CPUUtilizationTooHigh) AND ALARM(DiskReadOpsTooHigh)
该表达式指定复合告警仅在
CPUUtilizationTooHigh
和DiskReadOpsTooHigh
处于ALARM
状态时进入ALARM
状态。ALARM(CPUUtilizationTooHigh) AND NOT ALARM(DeploymentInProgress)
该表达式指定复合告警在
CPUUtilizationTooHigh
处于ALARM
且DeploymentInProgress
处于ALARM
状态时进入ALARM
状态。这是一个复合告警的示例,它降低了部署时段内的告警噪音。(ALARM(CPUUtilizationTooHigh) OR ALARM(DiskReadOpsTooHigh)) AND OK(NetworkOutTooHigh)
该表达式指定复合告警在
(ALARM(CPUUtilizationTooHigh)
或(DiskReadOpsTooHigh)
处于ALARM
且(NetworkOutTooHigh)
处于OK
状态时进入ALARM
状态。这是一个复合告警的示例,如果任何一个基础告警在发生网络问题时不处于ALARM
状态,则它不会向您发送通知,从而降低告警噪音。