创建复合告警 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

创建复合告警

复合告警是通过监视其他告警的告警状态来确定其告警状态的告警。

使用复合告警可以帮助您降低告警噪音。如果您设置复合告警来通知您状态变化,但将底层指标告警设置为不自行发送通知,则只有当复合告警的告警状态发生变化时,您才会收到通知。例如,您可以基于 CPU 使用率和磁盘读取操作创建指标告警,并指定对于这些告警从不执行操作。然后,您可以创建一个复合告警,仅当这两个指标告警处于“ALARM(告警)”状态时,此复合告警才进入“ALARM(告警)”状态并通知您。

在复合告警中,所有底层告警必须位于同一 Amazon 区域和同一账户中。每个复合告警可以监控多达 100 个底层告警。一个告警最多可以由 150 个复合告警来监视。

目前,复合告警可以执行的告警操作是通知 SNS 主题,或者在 Systems Manager Ops Center 中创建 OpsItems 或 Amazon Systems Manager Incident Manager 中的事件。

规则表达式

各复合告警包括规则表达式,用于指定要评估哪些其他告警,以确定复合告警的状态。对于您在规则表达式中引用的每个告警,您需要指定一个函数来指定告警是否需要处于“ALARM(告警)”状态、“OK(正常)”状态或“INSUFFICIENT_DATA(数据不足)”状态。您可以使用运算符(AND、OR 和 NOT)在单个表达式中组合使用多个函数。您可以使用括号对表达式中的函数进行逻辑分组。

规则表达式可以同时引用指标告警和其他复合告警。

函数可包含以下内容:

  • ALARM("alarm-name or alarm-ARN")如果指定的告警处于“ALARM(告警)”状态,则 为 TRUE。

  • OK("alarm-name or alarm-ARN")如果指定的告警处于“OK(正常)”状态,则 为 TRUE。

  • INSUFFICIENT_DATA("alarm-name or alarm-ARN")如果指定的告警处于“INSUFFICIENT_DATA(数据不足)”状态,则 为 TRUE。

  • TRUE 始终计算为 TRUE。

  • FALSE 始终计算为 FALSE。

TRUE 和 FALSE 对于测试复杂的 AlarmRule 结构和测试告警操作很有用。

下面是 AlarmRule 的一些示例:

  • 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)如果 CPUUtilizationTooHigh 或 DiskReadOpsTooHigh 处于“ALARM(告警)”状态,并且 NetworkOutTooHigh 处于“OK(正常)”状态,则 进入“ALARM(告警)”状态。这提供了使用复合告警来防止噪音的另一个示例。此规则可确保如果同时发生已知的网络问题,不会通过针对高 CPU 或磁盘使用率的告警操作来通知您。

AlarmRule 表达式可以指定多达 100 个“子”告警。AlarmRule 表达式可以有多达 500 个元素。元素是子告警、TRUE 或 FALSE 语句和括号。一对括号算作一个元素。

规则表达式必须包含至少一个子告警或至少一个 TRUE 语句或 FALSE 语句。

创建复合告警

  1. 访问 https://console.aws.amazon.com/cloudwatch/,打开 CloudWatch 控制台。

  2. 在导航窗格中,依次选择 Alarms(告警)和 All alarms(所有告警)。

  3. 在告警列表中,选中要在新复合告警中引用的每个现有告警旁边的复选框。然后选择 Create composite alarm(创建复合告警)

  4. Conditions(条件)框中,指定复合告警将使用的规则表达式。最初,将列出您选择的告警,并由 OR 逻辑运算符进行联接。每个告警都指定了“ALARM(告警)”状态。

    您可以修改正在创建的复合告警的告警条件:

    1. 对于列出的每个底层告警,您可以将所需的状态从“ALARM(告警)”更改为“OK(正常)”或“INSUFFICENT_DATA(数据不足)”。

    2. 您可以将每个 OR 运算符更改为 AND 或 NOT。您还可以添加括号来对逻辑运算符进行分组。

    3. 您可以向复合告警条件添加更多告警。您还可以删除 Conditions(条件)框中当前列出的告警。

    例如,您可以指定以下条件来创建一个复合告警,如果 CPUUtilizationTooHighDiskReadOpsTooHigh 处于“ALARM(告警)”状态,同时 NetworkOutTooHigh 处于“OK(正常)”状态,则该复合警报进入“ALARM(告警)”状态。

    (ALARM("CPUUtilizationTooHigh") OR ALARM("DiskReadOpsTooHigh")) AND OK("NetworkOutTooHigh")
  5. 当您对告警条件感到满意时,请选择 Next(下一步)

  6. Notification(通知)下,选择要在复合告警更改状态时通知的 SNS 主题。

    要让警报不发送通知,请选择删除

    要使告警为相同告警状态或不同告警状态发送多个通知,请选择 Add notification(添加通知)

    要使告警在进入“ALARM(告警)”状态时执行 SSM 操作,请选择 Add Systems Manager action(添加 Systems Manager 操作)

    有关 Systems Manager 操作的更多信息,请参阅将 CloudWatch 配置为通过告警创建 OpsItems 事件创建

    注意

    要创建执行 SSM Incident Manager 操作的告警,您必须具有特定的权限。有关更多信息,请参阅 Amazon Systems Manager Incident Manager 的基于身份的策略示例

  7. 在完成后,选择下一步

  8. 输入警报的名称和说明。名称只能包含 ASCII 字符。然后选择下一步

  9. Preview and create 下面,确认具有所需的信息和条件,然后选择 Create alarm

注意

可以创建复合警报的循环,其中复合告警 A 依赖于复合告警 B,复合告警 B 也依赖于复合告警 A。在这种情况下,您无法删除作为循环一部分的任何复合告警,因为始终有一个复合告警依赖于您要删除的告警。

要摆脱这种情况,您必须通过更改其中一个复合告警的规则来删除创建循环的依赖关系,从而打破循环。用于打破循环的最简单的更改是将其中一个告警的 AlarmRule 更改为 False

此外,如果 CloudWatch 检测到评估路径中有一个循环,复合告警的评估将停止。