

# 创建复合告警
<a name="Create_Composite_Alarm"></a>

本部分中的步骤说明了如何使用 CloudWatch 控制台创建复合告警。您还可以使用 API 或 AWS CLI 创建复合告警。有关更多信息，请参阅 [PutCompositeAlarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutCompositeAlarm.html) 或 [put-composite-alarm](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-composite-alarm.html) 

**创建复合告警**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中，选择 **Alarms**（告警），然后选择 **All alarms**（所有告警）。

1. 在告警列表中，选中要在规则表达式中引用的每个现有告警旁边的复选框，然后选择 **Create composite alarm**（创建复合告警）。

1. 在 **Specify composite alarm conditions**（指定复合告警条件）中，指定新复合告警的规则表达式。
**注意**  
您从告警列表中选择的告警将自动列在 **Conditions**（条件）框中。默认情况下，`ALARM` 函数已指定给您的每个告警，并且每个告警都由逻辑运算符 `OR` 连接。

   您可以使用以下子步骤修改规则表达式：

   1. 您可以将每个告警的所需状态从 `ALARM` 更改为 `OK` 或 `INSUFFICIENT_DATA`。

   1. 您可以将规则表达式中的逻辑运算符从 `OR` 更改为 `AND` 或 `NOT`，并且您可以添加括号来对函数进行分组。

   1. 您可以在规则表达式中包含其他告警，也可以从规则表达式中删除告警。

   **Example: Rule expression with conditions**（示例：带条件的规则表达式）

   ```
   (ALARM("CPUUtilizationTooHigh") OR 
   ALARM("DiskReadOpsTooHigh")) AND 
   OK("NetworkOutTooHigh")
   ```

   复合告警在 ALARM（“CPUUtilizationTooHigh”）或 ALARM（“DiskReadOpsTooHigh”）处于 `ALARM` 状态且同时 OK（“NetworkOutTooHigh”）处于 `OK` 状态时进入 `ALARM` 的情况下的示例规则表达式。

1. 在完成后，选择**下一步**。

1. 在 **Configure actions**（配置操作）下，您可以从以下选项中进行选择：

   对于***Notification***（通知）
   + **Select an exisiting SNS topic**（选择一个现有的 SNS 主题）、**Create a new SNS topic**（创建新 SNS 主题），或者 **Use a topic ARN**（使用主题 ARN）定义将接收通知的 SNS 主题。
   + **Add notification**（添加通知），以便为相同告警状态或不同告警状态发送多个通知。
   + **Remove**（删除）以阻止您的告警发送通知或采取措施。

   （可选）要让警报在状态更改时调用 Lambda 函数，请选择**添加 Lambda 操作**。然后指定函数名称或 ARN，也可以选择该函数的特定版本。

   对于 ***Systems Manager action***（Systems Manager 操作）
   + **Add Systems Manager action**（添加 Systems Manager 操作），以便您的告警可以在进入 ALARM 状态时执行 SSM 操作。

   要了解有关 Systems Manager 操作的更多信息，请参阅《AWS Systems Manager 用户指南》中的 [配置 CloudWatch 以从告警中创建 OpsItems](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-create-OpsItems-from-CloudWatch-Alarms.html)** 和《Incident Manager 用户指南》中的 [事件创建](https://docs.aws.amazon.com/incident-manager/latest/userguide/incident-creation.html)**。要创建执行 SSM Incident Manager 操作的告警，您必须具有正确的权限。有关更多信息，请参阅《Incident Manager 用户指南》中的 [AWS Systems Manager Incident Manager 的基于身份的策略示例](https://docs.aws.amazon.com/incident-manager/latest/userguide/security_iam_id-based-policy-examples.html)**。

   要让警报启动调查，请选择**添加调查操作**，然后选择调查组。有关 的更多信息，请参阅 [CloudWatch 调查](Investigations.md)。

1. 在完成后，选择**下一步**。

1. 在 **Add name and description**（添加名称和描述）下，为您的新复合告警输入告警名称和*可选*描述。名称必须仅包含 UTF-8 字符，并且不能包含 ASCII 控制字符。描述可以包含 Markdown 格式，该格式仅在 CloudWatch 控制台的警报**详细信息**选项卡中显示。Markdown 非常适合用于向运行手册或其他内部资源添加链接。

1. 在完成后，选择**下一步**。

1. 在 **Preview and create**（预览和创建）下，确认您的信息，然后选择 **Create composite alarm**（创建复合告警）。
**注意**  
您可以创建一个复合告警循环，其中一个复合告警和另一个复合告警相互依赖。如果处于这种情况，则复合告警将停止被评估，并且您无法删除复合告警，因为它们相互依赖。要打破复合告警之间的依赖循环，最简单的方法是将您的其中一个复合告警中的函数 `AlarmRule` 更改为 `False`。