DynamoDB에 CloudWatch 경보 생성 - Amazon DynamoDB

DynamoDB에 CloudWatch 경보 생성

CloudWatch 경보는 지정한 기간에 단일 지표를 감시하고 시간에 따른 임계값에 대한 지표 값을 기준으로 지정된 작업을 하나 이상 수행합니다. 이 작업은 Amazon SNS 주제 또는 Auto Scaling 정책으로 전송되는 알림입니다. 또한 대시보드에 경보를 추가할 수 있으므로 여러 리전에 걸쳐 AWS 리소스 및 애플리케이션에 대한 경보를 모니터링하고 수신할 수 있습니다. 생성할 수 있는 경보 수에는 제한이 없습니다. CloudWatch 경보는 특정 상태에 있다는 이유만으로는 작업을 호출하지 않습니다. 상태가 변경되고 지정한 기간 동안 유지되어야 합니다. 권장 DynamoDB 경보 목록은 권장 경보를 참조하세요.

참고

CloudWatch는 누락된 차원의 지표를 집계하지 않으므로 CloudWatch 경보를 생성할 때 필요한 차원을 모두 지정해야 합니다. 차원이 누락된 CloudWatch 경보를 생성해도 경보를 생성할 때 오류가 발생하지 않습니다.

예를 들어, 읽기 용량 단위 5개로 구성된 프로비저닝된 테이블이 있습니다. 프로비저닝된 전체 읽기 용량을 사용하기 전에 알림을 받고 싶기 때문에 소비된 용량이 테이블에 프로비저닝한 용량의 80%에 도달하면 알림을 받도록 CloudWatch 경보를 생성하기로 결정했습니다. CloudWatch 콘솔 또는 AWS CLI를 사용하여 경보를 생성할 수 있습니다.

CloudWatch 콘솔에서 경보 생성

CloudWatch 콘솔에서 경보를 생성하려면
  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 Alarms, All alarms를 선택합니다.

  3. Create alarm(경보 생성)을 선택하세요.

  4. 지표 이름 열에서 모니터링하려는 테이블과 ConsumeReadCapacityUnits이 있는 행을 찾습니다. 이 행 옆의 확인란을 선택하고 지표 선택을 선택합니다.

  5. 지표 및 조건 지정통계에서 합계를 선택합니다. 기간에서 1분을 선택합니다.

  6. 조건에서 다음을 지정합니다.

    1. 임곗값 유형에서 정적을 선택합니다.

    2. ConsumedReadCapacityUnits이(가) 다음과 같은 경우에 항상에서 크거나 같음을 선택하고 임계값으로 240을 지정합니다.

  7. Next(다음)를 선택합니다.

  8. 알림에서 In alarm을 선택하고 경보가 ALARM 상태일 때 알릴 SNS 주제를 선택합니다.

  9. 마친 후에는 다음을 선택합니다.

  10. 경보의 이름과 설명을 입력하고 다음을 선택합니다.

  11. 미리 보기 및 생성에서 정보 및 조건이 원하는 내용인지 확인한 다음 경보 생성을 선택합니다.

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