Amazon DynamoDB をモニタリングする CloudWatch アラームの作成
CloudWatch アラームを作成できます。これは、アラームの状態が変わったときに Amazon SNS メッセージを送信します。アラームは、指定期間にわたって単一のメトリクスを監視し、その値と複数期間に対するしきい値との比較結果に基づいて 1 つ以上のアクションを実行します。アクションは、Amazon SNS トピックまたは Auto Scaling ポリシーに送信される通知です。アラームは、持続している状態変化に対してのみアクションを呼び出します。CloudWatch アラームは、単に特定の状態にあるというだけでアクションを呼び出すわけではありません。状態が変わり、それが指定した数の期間にわたって持続している必要があります。
読み取り容量全体を使い切る前にどのように通知を受け取ることができますか。
-
Amazon SNS トピック
arn:aws:sns:us-east-1:123456789012:capacity-alarm
を作成します。詳細については、「Amazon Simple Notification Service をセットアップする」を参照してください。
-
アラームを作成します。この例では、5 つの読み込みキャパシティーユニットがプロビジョニングされた容量を前提としています。
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
-
アラームのテストを行います。
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
注記
アラームは、消費された読み取り容量が 1 分間 (60 秒) で少なくとも毎秒 4 ユニット (プロビジョニングされた 5 つの読み取り容量の 80%) になるとアクティブ化されます。ですから、threshold
は 240 読み取りキャパシティーユニット (4ユニット/秒 * 60 秒) です。読み取り容量が更新されるたびに、アラーム計算を適切に更新する必要があります。DynamoDB
コンソールを使用してアラームを作成すると、このプロセスを回避することができます。そうすることで、アラームが自動的に更新されます。
テーブルにプロビジョニングされたスループット制限をリクエストが超えた場合にどのように通知を受け取ることができますか。
-
Amazon SNS トピック
arn:aws:sns:us-east-1:123456789012:requests-exceeding-throughput
を作成します。詳細については、「Amazon Simple Notification Service をセットアップする」を参照してください。
-
アラームを作成します。
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
-
アラームのテストを行います。
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
システムエラーが発生した場合にどのように通知を受け取ることができますか。
-
Amazon SNS トピック
arn:aws:sns:us-east-1:123456789012:notify-on-system-errors
を作成します。詳細については、「Amazon Simple Notification Service をセットアップする」を参照してください。
-
アラームを作成します。
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
-
アラームのテストを行います。
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