创建 CloudWatch 告警 - Amazon DynamoDB

创建 CloudWatch 告警

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

注意

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

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

在 CloudWatch 控制台中创建警报

在 CloudWatch 控制台中创建警报
  1. 登录 AWS Management Console 并打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/

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

  3. 选择Create alarm(创建警报)

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

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

  6. 条件下面,指定以下内容:

    1. 对于 Threshold type(阈值类型),选择 Static(静态)

    2. 对于每当 ConsumedReadCapacityUnits,选择大于/等于并将阈值指定为 240。

  7. 选择下一步

  8. 通知下,选择 In alarm,并选择当警报处于 ALARM 状态时要通知的 SNS 主题。

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

  10. 输入警报的名称和描述,然后选择 Next(下一步)。

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

在 AWS CLI 中创建警报

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 示例

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

  1. 创建 Amazon SNS 主题 arn:aws:sns:us-east-1:123456789012:requests-exceeding-throughput。有关更多信息,请参阅设置 Amazon Simple Notification Service

  2. 创建告警。

    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
  3. 测试告警。

    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

  2. 创建告警。

    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
  3. 测试告警。

    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