

# 在 DynamoDB 中创建 CloudWatch 警报
<a name="Monitoring-metrics-creating-cloudwatch-alarms"></a>

[CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)在指定的时间段内监控单个指标，并根据指标值随时间推移相对于阈值的变化情况，来执行一项或多项指定的操作。操作是一个发送到 Amazon SNS 主题或自动扩缩策略的通知。您可以为控制面板添加警报，以便监控和接收有关跨多个区域的 AWS 资源和应用程序的提醒。您可以创建的警报数量没有限制。CloudWatch 告警不调用操作，因为这些操作处于特定状态；状态必须改变并保持指定时间。有关建议的 DynamoDB 警报列表，请参阅[建议的警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#DynamoDB)。

**注意**  
创建 CloudWatch 告警时必须指定所有需要的维度，因为 CloudWatch 不会为缺少的维度聚合指标。创建告警时，对缺少的维度创建 CloudWatch 告警不会导致错误。

假设您有一个包含五个读取容量单位的预置表。您希望在消耗掉全部预置读取容量之前收到通知，因此，您决定创建一个 CloudWatch 警报，以便在已消耗的容量达到表预置容量的 80% 时收到通知。您可以使用 CloudWatch 控制台或使用 AWS CLI 创建警报。

## 在 CloudWatch 控制台中创建警报
<a name="monitoring-metrics-creating-an-alarm-cw-console"></a>

**在 CloudWatch 控制台中创建警报**

1. 登录 AWS 管理控制台并打开 CloudWatch 控制台（[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)）。

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

1. 选择**Create alarm（创建警报）**。

1. 在**指标名称**列中找到表中您要监控的行以及 **`ConsumeReadCapacityUnits`**。选中此行旁边的复选框，然后选择**选择指标**。

1. 在**指定指标和条件**下，对于**统计数据**，选择**总和**。选择 **1 分钟**作为**周期**。

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

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

   1. 对于**每当 `ConsumedReadCapacityUnits` 为**，选择**大于/等于**并将阈值指定为 240。

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

1. 在**通知**下，选择 **`In alarm`**，并选择当警报处于 `ALARM` 状态时要通知的 SNS 主题。

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

1. 输入警报的名称和描述，然后选择 **Next**（下一步）。

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

## 在 AWS CLI 中创建警报
<a name="Monitoring-metrics-creating-an-alarm-cli"></a>

```
aws cloudwatch put-metric-alarm \
    -\-alarm-name ReadCapacityUnitsLimitAlarm \
    -\-alarm-description "Alarm when read capacity reaches 80% of my provisioned read capacity" \
    -\-namespace AWS/DynamoDB \
    -\-metric-name ConsumedReadCapacityUnits \
    -\-dimensions Name=TableName,Value=myTable \
    -\-statistic Sum \
    -\-threshold 240 \
    -\-comparison-operator GreaterThanOrEqualToThreshold \
    -\-period 60 \                           
    -\-evaluation-periods 1 \
    -\-alarm-actions arn:aws:sns:us-east-1:123456789012:capacity-alarm
```

测试告警。

```
aws cloudwatch set-alarm-state -\-alarm-name ReadCapacityUnitsLimitAlarm -\-state-reason "initializing" -\-state-value OK
```

```
aws cloudwatch set-alarm-state -\-alarm-name ReadCapacityUnitsLimitAlarm -\-state-reason "initializing" -\-state-value ALARM
```

## 更多 AWS CLI 示例
<a name="Monitoring-metrics-more-cli-examples"></a>

以下过程描述了当您的请求超过表的预置吞吐量配额时，系统将如何通知您。

1. 创建 Amazon SNS 主题 `arn:aws:sns:us-east-1:123456789012:requests-exceeding-throughput`。有关更多信息，请参阅[设置 Amazon Simple Notification Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)。

1. 创建告警。

   ```
   aws cloudwatch put-metric-alarm \
           -\-alarm-name ReadCapacityUnitsLimitAlarm \
           -\-alarm-description "Alarm when read capacity reaches 80% of my provisioned read capacity" \
           -\-namespace AWS/DynamoDB \
           -\-metric-name ConsumedReadCapacityUnits \
           -\-dimensions Name=TableName,Value=myTable \
           -\-statistic Sum \
           -\-threshold 240 \
           -\-comparison-operator GreaterThanOrEqualToThreshold \
           -\-period 60 \                           
           -\-evaluation-periods 1 \
           -\-alarm-actions arn:aws:sns:us-east-1:123456789012:capacity-alarm
   ```

1. 测试告警。

   ```
   aws cloudwatch set-alarm-state --alarm-name RequestsExceedingThroughputAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name RequestsExceedingThroughputAlarm --state-reason "initializing" --state-value ALARM
   ```

以下过程描述了在出现系统错误时如何通知您。

1. 创建 Amazon SNS 主题 `arn:aws:sns:us-east-1:123456789012:notify-on-system-errors`。有关更多信息，请参阅[设置 Amazon Simple Notification Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)。

1. 创建告警。

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name SystemErrorsAlarm \
       --alarm-description "Alarm when system errors occur" \
       --namespace AWS/DynamoDB \
       --metric-name SystemErrors \
       --dimensions Name=TableName,Value=myTable Name=Operation,Value=aDynamoDBOperation \
       --statistic Sum \
       --threshold 0 \
       --comparison-operator GreaterThanThreshold \
       --period 60 \
       --unit Count \
       --evaluation-periods 1 \
       --treat-missing-data breaching \
       --alarm-actions arn:aws:sns:us-east-1:123456789012:notify-on-system-errors
   ```

1. 测试告警。

   ```
   aws cloudwatch set-alarm-state --alarm-name SystemErrorsAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name SystemErrorsAlarm --state-reason "initializing" --state-value ALARM
   ```