

# DynamoDB에 CloudWatch 경보 생성
<a name="Monitoring-metrics-creating-cloudwatch-alarms"></a>

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

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

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

## CloudWatch 콘솔에서 경보 생성
<a name="monitoring-metrics-creating-an-alarm-cw-console"></a>

**CloudWatch 콘솔에서 경보를 생성하려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

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

1. **경보 생성**을 선택하세요.

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

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

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

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

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

1. **다음**을 선택합니다.

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

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

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

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

## 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
   ```