

# 根据异常检测创建 CloudWatch 告警
<a name="Create_Anomaly_Detection_Alarm"></a>

您可以根据 CloudWatch 异常检测来创建告警，该异常检测可以分析过去的指标数据并创建预期值模型。预期值会考虑指标中的典型每小时、每日和每周模式。

您需要为异常检测阈值设置一个值，然后 CloudWatch 在模型中使用该阈值来确定指标值的“正常”范围。阈值越高，所产生的“正常”值的范围越大。

您可以选择当指标值高于预期值范围、低于预期值范围，或出现二者情况之一时是否触发告警。

您还可以针对单个指标和指标数学表达式的输出创建异常检测告警。您可以使用这些表达式来创建能可视化异常检测范围的图表。

在设置为 CloudWatch 跨账户可观测性的账户中，除了监控账户中的指标外，您还可以在源账户的指标中创建异常检测器。

有关更多信息，请参阅 [使用 CloudWatch 异常检测](CloudWatch_Anomaly_Detection.md)。

**注意**  
如果您出于可视化目的已在 Metrics（指标）控制台中对某个指标使用了异常检测，并针对该指标创建了异常检测告警，则您为该告警设置的阈值不会更改您为可视化设置的阈值。有关更多信息，请参阅 [创建图表](graph_a_metric.md#create-metric-graph)。

**创建基于异常检测的告警**

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

1.  在导航窗格中，依次选择 **Alarms（警报）**和 **All alarms（所有警报）**。

1.  选择**创建警报**。

1.  选择 **Select Metric（选择指标）**。

1. 请执行以下操作之一：
   +  选择包含您的指标的服务命名空间，然后继续选择相应选项，因为这些选项看起来会缩小您的选项范围。在显示指标列表时，选中您的指标旁边的复选框。
   +  在搜索框中，输入指标名称、维度或资源 ID。选择其中的一个结果，然后继续在选项显示时选择它们，直到显示指标列表为止。选中您的指标旁边的复选框。

1.  选择**绘制的指标**。

   1.  （可选）对于*统计数据*，选择下拉列表，然后选择一个预定义的统计数据或百分位数。您可以使用下拉列表中的搜索框指定自定义百分位数，如 **p95.45**。

   1.  （可选）对于*周期*，选择下拉列表，然后选择一个预定义的评估周期。
**注意**  
 当 CloudWatch 评估您的告警时，它会将该周期汇总为单个数据点。对于异常检测告警，评估周期必须是一分钟或更长时间。

1.  选择**下一步**。

1.  在***条件***下面，指定以下内容：

   1. 选择 **Anomaly detection（异常检测）**。

       如果针对此指标和统计数据的模型已存在，则 CloudWatch 在屏幕顶部的图中显示异常检测范围的预览。创建警报后，实际异常检测范围出现在图中可能需要 15 分钟。在此之前，您看到的范围是异常检测范围的近似值。
**提示**  
 要在更长的时间范围内查看屏幕顶部的图表，请选择屏幕右上方的 **Edit**（编辑）。

       如果此指标和统计的模型不存在，CloudWatch 在您完成创建警报后生成异常检测范围。对于新模型，实际异常检测范围出现在图表中可能需要 3 个小时。新模型的训练可能需要两周时间，因此异常检测范围可以显示更准确的预期值。

   1. 对于 **Whenever *metric* is**（每当指标为），指定何时触发告警。例如，每当指标大于、小于或超出范围（在任一方向）。

   1. 对于 **Anomaly detection threshold（异常检测阈值）**，选择用于异常检测阈值的数字。数字越大，创建的“正常”值的范围就越大，也更能容忍指标变化。数字越小，创建的范围就越小，它将以较小的指标偏差进入 `ALARM` 状态。数字不一定是整数。

   1. 选择**其他配置**。对于**触发警报的数据点数**，指定必须有多少个评估期（数据点）处于 `ALARM` 状态才能触发警报。如果此处的两个值匹配，则会创建一个告警；如果多个连续评估期违例，该告警将变为 `ALARM`（告警）状态。

      要创建“M（最大为 N）”告警，为第一个值指定的数字应小于为第二个值指定的数字。有关更多信息，请参阅 [告警评估](alarm-evaluation.md)。

   1. 对于 **Missing data treatment**（缺失数据处理），选择在缺失某些数据点时的告警行为。有关更多信息，请参阅 [配置 CloudWatch 告警处理缺失数据的方式](alarms-and-missing-data.md)。

   1. 如果警报将百分比值作为监控的统计数据，将显示**样本数少的百分比**框。使用它来选择是评估还是忽略采样率低的案例。如果选择 **Ignore（maintain alarm state）**（忽略（保持警报状态）），在样本大小太小时，将始终保持当前警报状态。有关更多信息，请参阅 [基于百分位数的告警和小数据样本](percentiles-with-low-samples.md)。

1.  选择**下一步**。

1. 在**通知**下面，选择一个在警报处于 `ALARM`、`OK` 或 `INSUFFICIENT_DATA` 状态时通知的 SNS 主题。

   要为相同告警状态或不同告警状态发送多个通知，请选择 **Add notification**（添加通知）。

   如果不想告警发送通知，请选择 **Remove**（移除）。

1. 您可以将警报设置为在发生状态更改时执行 EC2 操作或调用 Lambda 函数，或在进入 ALARM 状态时创建 Systems Manager OpsItem 或事件。为此，请选择相应的按钮，然后选择警报状态和要执行的操作。

   如果您选择 Lambda 函数作为警报操作，则需要指定函数名称或 ARN，并且可以选择该函数的特定版本。

   有关 Systems Manager 操作的更多信息，请参阅[将 CloudWatch 配置为通过告警创建 OpsItems ](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-create-OpsItems-from-CloudWatch-Alarms.html)和[事件创建](https://docs.aws.amazon.com/incident-manager/latest/userguide/incident-creation.html)。
**注意**  
要创建执行 AWS Systems Manager Incident Manager 操作的警报，您必须具有特定的权限。有关更多信息，请参阅 [AWS Systems Manager Incident Manager 的基于身份的策略示例](https://docs.aws.amazon.com/incident-manager/latest/userguide/security_iam_id-based-policy-examples.html)。

1.  选择**下一步**。

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

1.  在***预览和创建***下，确认警报的信息和条件正确，然后选择**创建警报**。

## 编辑异常检测模型
<a name="Modify_Anomaly_Detection_Model"></a>

创建告警后，可以调整异常检测模型。您可以排除某些时间段，不在创建模型时使用。从训练数据中排除系统中断、部署和假日等异常事件至关重要。您还可以指定是否针对夏令时更改调整模型。

**针对警报编辑异常检测模型**

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

1. 在导航窗格中，依次选择 **Alarms（警报）**和 **All alarms（所有警报）**。

1. 选择警报的名称。如有必要，请使用搜索框来查找警报。

1. 选择**查看**，然后选择**在指标中**。

1. 在**详细信息**列中，选择 **ANOMALY\$1DETECTION\$1BAND** 关键字，然后在弹出窗口中选择**编辑异常检测模型**。  
![\[随即会显示带 ANOMALY_DETECTION_BAND 弹出窗口的“图表化指标”选项卡。\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/images/Anomaly_Detection_Edit.PNG)

1. 要排除用于生成模型的时间段，请按**结束日期**选择日历图标。然后，选择或输入要从训练中排除的天数和时间，并选择 **Apply**（应用）。

1. 如果指标需要区分夏令时更改，请在 **Metric timezone**（指标时区）框中选择相应的时区。

1. 选择 **Update（更新）**。

## 删除异常检测模型
<a name="Delete_Anomaly_Detection_Model"></a>

对警报使用异常检测会产生费用。作为最佳实践，如果警报不再需要异常检测模型，请先删除警报，然后删除模型。评估异常检测警报时，系统将代表您创建任何缺失的异常检测器。如果您删除模型而不删除告警，则告警会自动重新创建模型。

**删除警报**

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

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

1. 选择警报的名称。

1. 依次选择 **Actions（操作）**和 **Delete（删除）**。

1. 在确认框中，选择**删除**。

**要删除曾用于告警的异常检测模型**

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

1.  在导航窗格中，选择 **Metrics**（指标），然后选择 **All metrics**（所有指标）。

1.  选择 **Browse**（浏览），然后选择包含异常检测模型的指标。您可以在搜索框中搜索您的指标，也可以通过选择选项来选择您的指标。
   +  （可选）如果要使用原始界面，请选择 **All metrics**（所有指标），然后选择包含异常检测模型的指标。您可以在搜索框中搜索您的指标，也可以通过选择选项来选择您的指标。

1.  选择 **Graphed metrics**（绘制的指标）。

1. 在**图表化指标**选项卡中，选择**详细信息**列中的 **ANOMALY\$1DETECTION\$1BAND** 关键字，然后在弹出窗口中选择**删除异常检测模型**。  
![\[随即会显示带 ANOMALY_DETECTION_BAND 弹出窗口的“图表化指标”选项卡。\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/images/Anomaly_Detection_Edit.PNG)
   +  （可选）如果要使用原始界面，请选择 **Edit model**（编辑模型）。系统会将您定向到新屏幕。在新屏幕上，选择 **Delete model**（删除模型），然后选择 **Delete**（删除）。