创建复合告警
复合告警通过监控其他告警的状态来确定其状态。您可以使用复合告警来降低告警噪音。例如,您可以创建一个复合告警,在该告警中,基础指标告警在满足特定条件时会进入 ALARM 状态。然后,您可以将复合告警设置为进入 ALARM 状态,并在基础指标告警进入 ALARM 状态时向您发送通知,方法是将基础指标告警配置为永不采取行动。目前,复合告警可执行以下操作:
通知 SNS 主题
在 Amazon Systems Manager Ops Center 中创建 OpsItems
在 Amazon Systems Manager Incident Manager 中创建事件
如果您未使用 CloudWatch 跨账户可观测性,则复合告警可以监控当前账户中的告警。
注意
复合告警中的所有基础告警都必须与复合告警位于相同的账户和相同的区域中。但是,如果您在 CloudWatch 跨账户可观测性监控账户中设置复合告警,则基础告警可以监视不同源账户和该监控账户本身的指标。有关更多信息,请参阅CloudWatch 跨账户可观测性。
单个复合告警可以监控 100 个基础告警,150 个复合告警可以监控单个基础告警。
规则表达式
所有复合告警都包含规则表达式。规则表达式告诉复合告警要监控哪些其他告警并确定其状态。规则表达式可以同时引用指标告警和复合告警。当您在规则表达式中引用告警时,您可以为告警指定一个函数,用于确定告警将处于以下三种状态中的哪一种:
告警
如果告警处于 ALARM 状态,则 ALARM ("alarm-name or alarm-ARN") 为 TRUE。
确定
如果告警处于 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
状态,则它不会向您发送通知,从而降低告警噪音。
创建复合告警
创建复合告警
通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/
。 在导航窗格中,选择 Alarms(告警),然后选择 In alarm(告警中)。
在告警列表中,选中要在规则表达式中引用的每个现有告警旁边的复选框,然后选择 Create composite alarm(创建复合告警)。
在 Specify composite alarm conditions(指定复合告警条件)中,指定新复合告警的规则表达式。
注意
您从告警列表中选择的告警将自动列在 Conditions(条件)框中。默认情况下,
ALARM
函数已指定给您的每个告警,并且每个告警都由逻辑运算符OR
连接。您可以使用以下子步骤修改规则表达式:
-
您可以将每个告警的所需状态从
ALARM
更改为OK
或INSUFFICENT_DATA
。 -
您可以将规则表达式中的逻辑运算符从
OR
更改为AND
或NOT
,并且您可以添加括号来对函数进行分组。 您可以在规则表达式中包含其他告警,也可以从规则表达式中删除告警。
Example: Rule expression with conditions(示例:带条件的规则表达式)
(ALARM("CPUUtilizationTooHigh") OR ALARM("DiskReadOpsTooHigh")) AND OK("NetworkOutTooHigh")
复合告警在 ALARM(“CPUUtilizationTooHigh”)或 ALARM(“DiskReadOpsTooHigh”)处于
ALARM
状态且同时 OK(“NetworkOutTooHigh”)处于OK
状态时进入ALARM
的情况下的示例规则表达式。-
在完成后,选择下一步。
在 Configure actions(配置操作)下,您可以从以下选项中进行选择:
对于Notification(通知)
Select an exisiting SNS topic(选择一个现有的 SNS 主题)、Create a new SNS topic(创建新 SNS 主题),或者 Use a topic ARN(使用主题 ARN)定义将接收通知的 SNS 主题。
Add notification(添加通知),以便为相同告警状态或不同告警状态发送多个通知。
Remove(删除)以阻止您的告警发送通知或采取措施。
对于 Systems Manager action(Systems Manager 操作)
Add Systems Manager action(添加 Systems Manager 操作),以便您的告警可以在进入 ALARM 状态时执行 SSM 操作。
要了解有关 Systems Manager 操作的更多信息,请参阅《Amazon Systems Manager 用户指南》中的 配置 CloudWatch 以从告警中创建 OpsItems 和《Incident Manager 用户指南》中的 事件创建。要创建执行 SSM Incident Manager 操作的告警,您必须具有正确的权限。有关更多信息,请参阅《Incident Manager 用户指南》中的 Amazon Systems Manager Incident Manager 的基于身份的策略示例。
在完成后,选择下一步。
在 Add name and description(添加名称和描述)下,为您的新复合告警输入告警名称和可选描述。名称必须仅包含 UTF-8 字符,并且不能包含 ASCII 控制字符。描述可以包含 Markdown 格式,该格式仅在 CloudWatch 控制台的警报详细信息选项卡中显示。Markdown 非常适合用于向运行手册或其他内部资源添加链接。
在完成后,选择下一步。
在 Preview and create(预览和创建)下,确认您的信息,然后选择 Create composite alarm(创建复合告警)。
注意
您可以创建一个复合告警循环,其中一个复合告警和另一个复合告警相互依赖。如果处于这种情况,则复合告警将停止被评估,并且您无法删除复合告警,因为它们相互依赖。要打破复合告警之间的依赖循环,最简单的方法是将您的其中一个复合告警中的函数
AlarmRule
更改为False
。
复合告警操作抑制
通过复合告警操作抑制,您可以将告警定义为抑制器告警。抑制器告警可防止复合告警采取行动。例如,您可以指定表示支持资源状态的抑制器告警。如果支持资源关闭,则抑制器告警会阻止复合告警发送通知。复合告警操作抑制功能可帮助您降低警报噪音,从而减少管理告警的时间,将更多的时间集中在操作上。
您可以在配置复合告警时指定抑制器告警。任何告警都可以用作抑制器告警。当抑制器告警的状态从 OK
变为 ALARM
时,其复合告警停止执行操作。当抑制器告警的状态从 ALARM
变为 OK
时,其复合告警恢复执行操作。
WaitPeriod
和 ExtensionPeriod
指定抑制器告警时,需要设置参数 WaitPeriod
和 ExtensionPeriod
。这些参数可防止复合告警在抑制器告警改变状态时意外执行操作。使用 WaitPeriod
补偿当抑制器告警从 OK
变为 ALARM
时发生的任何延迟。例如,如果抑制器告警在 60 秒内从 OK
变为 ALARM
,则将 WaitPeriod
设置为 60 秒。

在图像中,复合告警在 t2 时从 OK
变为 ALARM
。WaitPeriod
在 t2 时开始并在 t8 时结束。这使抑制器告警有时间在 t4 时从状态 OK
变为 ALARM
,然后在 WaitPeriod
在 t8 时到期时抑制复合告警的操作。
使用 ExtensionPeriod
补偿当抑制器告警变为 OK
后复合告警变为 OK
时发生的任何延迟。例如,如果复合告警在抑制器告警变为 OK
的 60 秒内变为 OK
,则将 ExtensionPeriod
设置为 60 秒。

在图像中,抑制器告警在 t2 时从 ALARM
变为 OK
。ExtensionPeriod
在 t2 时开始并在 t8 时结束。这使得复合告警有时间从 ALARM
变为 OK
,然后 ExtensionPeriod
在 t8 时到期。
复合告警在 WaitPeriod
和 ExtensionPeriod
变为活动状态时不执行操作。当 ExtensionPeriod
和 WaitPeriod
变为非活动状态时,复合告警基于其当前状态执行操作。我们建议您将每个参数的值设置为 60 秒,因为 CloudWatch 每分钟评估一次指标告警。您可以将参数设置为任意整数(以秒为单位)。
以下示例更详细地描述了 WaitPeriod
和 ExtensionPeriod
如何防止复合告警意外执行操作。
注意
在以下示例中,WaitPeriod
配置为 2 个时间单位,ExtensionPeriod
配置为 3 个时间单位。
示例
示例 1:操作在 WaitPeriod
后未被抑制

在图像中,复合告警在 t2 时状态从 OK
变为 ALARM
。WaitPeriod
在 t2 时开始并在 t4 时结束,因此它可以阻止复合告警执行操作。WaitPeriod
在 t4 时到期后,复合告警会执行操作,因为抑制器告警仍处于 OK
状态。
示例 2:操作在 WaitPeriod
到期前被告警抑制

在图像中,复合告警在 t2 时状态从 OK
变为 ALARM
。WaitPeriod
在 t2 时开始并在 t4 时结束。这使抑制器告警有时间在 t3 时从状态 OK
变为 ALARM
。因为抑制器告警的状态在 t3 时从 OK
变为 ALARM
,从 t2 开始的 WaitPeriod
将被丢弃,抑制器告警现在会阻止复合告警执行操作。
示例 3:操作被 WaitPeriod
抑制时的状态转换

在图像中,复合告警在 t2 时状态从 OK
变为 ALARM
。WaitPeriod
在 t2 时开始并在 t4 时结束。这使抑制器告警有时间改变状态。复合告警在 t3 时变回 OK
,所以在 t2 时开始的 WaitPeriod
被丢弃。新的 WaitPeriod
在 t3 时开始并在 t5 时结束。新的 WaitPeriod
在 t5 时到期后,复合告警将执行操作。
Example 4: State transition when actions are suppressed by alarm(示例 4:操作被告警抑制时的状态转换)

在图像中,复合告警在 t2 时状态从 OK
变为 ALARM
。抑制器告警已经处于 ALARM
状态。抑制器告警可防止复合告警执行操作。
示例 5:操作在 ExtensionPeriod
后未被抑制

在图像中,复合告警在 t2 时状态从 OK
变为 ALARM
。WaitPeriod
在 t2 时开始并在 t4 时结束。这使抑制器告警有时间在 t3 时从状态 OK
变为 ALARM
,然后在 t6 前抑制复合告警的操作。因为抑制器告警的状态在 t3 时从 OK
变为 ALARM
,从 t2 开始的 WaitPeriod
将被丢弃。在 t6 时,抑制器告警变为 OK
。ExtensionPeriod
在 t6 时开始并在 t9 时结束。ExtensionPeriod
到期后,复合告警将执行操作。
示例 6:操作被 ExtensionPeriod
抑制时的状态转换

在图像中,复合告警在 t2 时状态从 OK
变为 ALARM
。WaitPeriod
在 t2 时开始并在 t4 时结束。这使抑制器告警有时间在 t3 时从状态 OK
变为 ALARM
,然后在 t6 前抑制复合告警的操作。因为抑制器告警的状态在 t3 时从 OK
变为 ALARM
,从 t2 开始的 WaitPeriod
将被丢弃。在 t6 时,抑制器告警变回 OK
。ExtensionPeriod
在 t6 时开始并在 t8 时结束。当复合告警在 t7 时变回 OK
时,ExtensionPeriod
被丢弃,并且新的 WaitPeriod
在 t7 时开始并在 t9 时结束。新的 WaitPeriod
到期后,复合告警可以执行其操作。
提示
如果您更换操作抑制器告警,则任何活动的 WaitPeriod
或 ExtensionPeriod
将被丢弃。