Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

创建 CloudWatch 警报以监控 Amazon DynamoDB

您可以创建 CloudWatch 警报,以在警报改变状态时发送 Amazon SNS 消息。警报会每隔一段时间 (由您指定) 监控一个指标,并根据相对于给定阈值的指标值每隔若干个时间段执行一项或多项操作。操作是向 Amazon SNS 主题或 Auto Scaling 策略发送的通知。警报只会调用操作进行持续的状态变更。CloudWatch 警报将不会调用操作,因为这些操作处于特定状态;该状态必须改变并在指定数量的时间段内一直保持。

我如何知道我即将占用全部读取容量?

  1. 创建一个 Amazon SNS 主题:arn:aws:sns:us-east-1:123456789012:capacity-alarm

    有关更多信息,请参阅设置 Amazon Simple Notification Service

  2. 创建警报。在此示例中,我们假设预置容量为五个读取容量单位。

    Prompt>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. 测试警报。

    Prompt>aws cloudwatch set-alarm-state --alarm-name ReadCapacityUnitsLimitAlarm --state-reason "initializing" --state-value OK
    Prompt>aws cloudwatch set-alarm-state --alarm-name ReadCapacityUnitsLimitAlarm --state-reason "initializing" --state-value ALARM

注意

当每秒至少占用 4 个读取容量单位时 (占 5 个预置读取容量单位的 80%),将会激活警报。因此 threshold 是 240 个读取容量单位 (4 个单位/秒 * 60 秒)。每当读取容量更新时,您都应相应地更新警报计算。为了避免这一过程,您可以通过 DynamoDB 控制台创建警报。这样一来,警报将会自动更新。

我如何知道是否有任何请求超过表的预置吞吐量上限?

  1. 创建一个 Amazon SNS 主题:arn:aws:sns:us-east-1:123456789012:requests-exceeding-throughput

    有关更多信息,请参阅设置 Amazon Simple Notification Service

  2. 创建警报。

    Prompt>aws cloudwatch put-metric-alarm \ --alarm-name RequestsExceedingThroughputAlarm\ --alarm-description "Alarm when my requests are exceeding provisioned throughput limits of a table" \ --namespace AWS/DynamoDB \ --metric-name ThrottledRequests \ --dimensions Name=TableName,Value=myTable \ --statistic Sum \ --threshold 0 \ --comparison-operator GreaterThanThreshold \ --period 300 \ --unit Count \ --evaluation-periods 1 \ --alarm-actions arn:aws:sns:us-east-1:123456789012:requests-exceeding-throughput
  3. 测试警报。

    Prompt>aws cloudwatch set-alarm-state --alarm-name RequestsExceedingThroughputAlarm --state-reason "initializing" --state-value OK
    Prompt>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. 创建警报。

    Prompt>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 \ --statistic Sum \ --threshold 0 \ --comparison-operator GreaterThanThreshold \ --period 60 \ --unit Count \ --evaluation-periods 1 \ --alarm-actions arn:aws:sns:us-east-1:123456789012:notify-on-system-errors
  3. 测试警报。

    Prompt>aws cloudwatch set-alarm-state --alarm-name SystemErrorsAlarm --state-reason "initializing" --state-value OK
    Prompt>aws cloudwatch set-alarm-state --alarm-name SystemErrorsAlarm --state-reason "initializing" --state-value ALARM