

# 创建 CPU 使用率告警
<a name="US_AlarmAtThresholdEC2"></a>

您可以创建在告警状态从 `OK`（正常）变为 `ALARM`（告警）时使用 Amazon SNS 发送通知的 CloudWatch 告警。

在 EC2 实例的平均 CPU 使用率在指定的连续评估期内超出指定的阈值时，告警将变为 `ALARM`（告警）状态。

## 使用 AWS 管理控制台 设置 CPU 使用率告警
<a name="cpu-usage-alarm-console"></a>

可以执行以下步骤以使用 AWS 管理控制台创建 CPU 使用率警报。

**根据 CPU 利用率创建警报**

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

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

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

1. 选择**选择指标**。

1. 在 **All metrics（所有指标）**选项卡中，选择 **EC2 metrics（EC2 指标）**。

1. 选择一个指标类别（例如，**Per-Instance Metrics（每个实例的指标）**）。

1. 找到您希望在 **InstanceId（实例 ID）**列和 **Metric Name（指标名称）**中的 **CPUUtilization（CPU 使用率）**中列出的实例所在的行。选中此行旁边的复选框，然后选择 **Select metric（选择指标）**。

1. 在 **Specify metric and conditions（指定指标和条件）**下，对于 **Statistic（统计数据）**，选择 **Average（平均值）**，然后选择一个预定义百分位数，或指定自定义百分位数（例如 **p95.45**）。

1. 选择时间段（例如 **5 minutes**）。

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

   1. 对于 **Threshold type（阈值类型）**，选择 **Static（静态）**。

   1. 对于 **Whenever CPUUtilization is（每当 CPU 利用率）**，指定 **Greater（大）**。在 **than...（于...）**下，指定在 CPU 使用率超过此百分比时触发告警进入“ALARM（告警）”状态的阈值。例如，70。

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

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

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

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

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

1. 在 **Notification（通知）**下，选择 **In alarm（处于告警中）**，并选择当告警处于 `ALARM` 状态时要通知的 SNS 主题

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

   要让警报不发送通知，请选择**删除**。

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

1. 输入警报的名称和说明。然后选择**下一步**。

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

1. 在 **Preview and create** 下面，确认具有所需的信息和条件，然后选择 **Create alarm**。

## 使用 AWS CLI 设置 CPU 使用率告警
<a name="cpu-usage-alarm-cli"></a>

可以执行以下步骤以使用 AWS CLI创建 CPU 使用率警报。

**根据 CPU 利用率创建警报**

1. 设置 SNS 主题。有关更多信息，请参阅 [设置 Amazon SNS 通知](Notify_Users_Alarm_Changes.md#US_SetupSNS)。

1. 使用 [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html) 命令创建告警，如下所示。

   ```
   aws cloudwatch put-metric-alarm --alarm-name {{cpu-mon}} --alarm-description "Alarm when CPU exceeds 70%" --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average --period {{300}} --threshold {{70}} --comparison-operator GreaterThanThreshold --dimensions  Name=InstanceId,Value={{i-12345678}} --evaluation-periods {{2}} --alarm-actions arn:aws:sns:{{us-east-1}}:{{111122223333}}:{{my-topic}} --unit Percent
   ```

1. 通过使用 [set-alarm-state](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/set-alarm-state.html) 命令强制更改警报状态来测试警报。

   1. 将告警状态从 `INSUFFICIENT_DATA`（数据不足）更改为 `OK`（正常）。

      ```
      aws cloudwatch set-alarm-state --alarm-name {{cpu-mon}} --state-reason "initializing" --state-value OK
      ```

   1. 将告警状态从 `OK`（正常）更改为 `ALARM`（告警）。

      ```
      aws cloudwatch set-alarm-state --alarm-name {{cpu-mon}} --state-reason "initializing" --state-value ALARM
      ```

   1. 检查您是否收到有关告警的电子邮件通知。