

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 모니터링할 CloudWatch 경보 생성 AWS IoT
<a name="creating_alarms"></a>

경보로 인해 상태가 변경되면 Amazon SNS 메시지를 전송하는 CloudWatch 경보를 생성할 수 있습니다. 경보는 지정한 기간 동안 단일 지표를 감시합니다. 지표 값이 장기간 동안 지정된 임계값을 초과하면 하나 이상의 작업이 수행됩니다. 이 작업은 Amazon SNS 주제 또는 Auto Scaling 정책에 전송되는 알림일 수 있습니다. 경보는 지속적인 상태 변경에 대해서만 작업을 트리거합니다. CloudWatch 경보는 특정 상태에 있다는 이유만으로는 작업을 트리거하지 않습니다. 상태가 변경되고 지정한 기간 동안 유지되어야 합니다.

**Topics**
+ [내 사물이 매일 성공적으로 연결되지 않을 경우 어떻게 통보를 받을 수 있습니까?](#how_to_detect_connection_failures)
+ [내 사물이 매일 데이터를 게시하지 않을 경우 어떻게 통보를 받을 수 있습니까?](#how_to_detect_publish_failures)
+ [내 사물 섀도우 업데이트가 매일 거부될 경우 어떻게 통보를 받을 수 있습니까?](#detect_rejected_updates)
+ [작업에 대한 CloudWatch 경보를 생성하려면 어떻게 해야 합니까?](#cw-jobs-alarms)

 CloudWatch 경보가 모니터링할 수 있는 모든 지표는 [AWS IoT 지표 및 차원](metrics_dimensions.md)에서 확인할 수 있습니다.

## 내 사물이 매일 성공적으로 연결되지 않을 경우 어떻게 통보를 받을 수 있습니까?
<a name="how_to_detect_connection_failures"></a>

1. `things-not-connecting-successfully`라는 Amazon SNS 주제를 생성하고 해당 Amazon 리소스 이름(ARN)을 기록합니다. 이 절차에서는 주제의 ARN을 ` sns-topic-arn `이라고 지칭하겠습니다.

   Amazon SNS 알림 생성 방법에 대한 자세한 내용은 [Amazon SNS 시작하기](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)를 참조하세요.

1. 경보를 만듭니다.

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name ConnectSuccessAlarm \
       --alarm-description "Alarm when my Things don't connect successfully" \
       --namespace AWS/IoT \
       --metric-name Connect.Success \
       --dimensions Name=Protocol,Value=MQTT \
       --statistic Sum \
       --threshold 10 \
       --comparison-operator LessThanThreshold \
       --period 86400 \
       --evaluation-periods 1 \
       --alarm-actions sns-topic-arn
   ```

1. 경보를 테스트합니다.

   ```
   aws cloudwatch set-alarm-state --alarm-name ConnectSuccessAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name ConnectSuccessAlarm --state-reason "initializing" --state-value ALARM
   ```

1. [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)에 경보가 나타나는지 확인합니다.

## 내 사물이 매일 데이터를 게시하지 않을 경우 어떻게 통보를 받을 수 있습니까?
<a name="how_to_detect_publish_failures"></a>

1. `things-not-publishing-data`라는 Amazon SNS 주제를 생성하고 해당 Amazon 리소스 이름(ARN)을 기록합니다. 이 절차에서는 주제의 ARN을 ` sns-topic-arn `이라고 지칭하겠습니다.

   Amazon SNS 알림 생성 방법에 대한 자세한 내용은 [Amazon SNS 시작하기](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)를 참조하세요.

1. 경보를 만듭니다.

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name PublishInSuccessAlarm\
       --alarm-description "Alarm when my Things don't publish their data \
       --namespace AWS/IoT \
       --metric-name PublishIn.Success \
       --dimensions Name=Protocol,Value=MQTT \
       --statistic Sum \
       --threshold 10 \
       --comparison-operator LessThanThreshold \
       --period 86400 \
       --evaluation-periods 1 \
       --alarm-actions sns-topic-arn
   ```

1. 경보를 테스트합니다.

   ```
   aws cloudwatch set-alarm-state --alarm-name PublishInSuccessAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name PublishInSuccessAlarm --state-reason "initializing" --state-value ALARM
   ```

1. [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)에 경보가 나타나는지 확인합니다.

## 내 사물 섀도우 업데이트가 매일 거부될 경우 어떻게 통보를 받을 수 있습니까?
<a name="detect_rejected_updates"></a>

1. `things-shadow-updates-rejected`라는 Amazon SNS 주제를 생성하고 해당 Amazon 리소스 이름(ARN)을 기록합니다. 이 절차에서는 주제의 ARN을 ` sns-topic-arn `이라고 지칭하겠습니다.

   Amazon SNS 알림 생성 방법에 대한 자세한 내용은 [Amazon SNS 시작하기](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)를 참조하세요.

1. 경보를 만듭니다.

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name UpdateThingShadowSuccessAlarm \
       --alarm-description "Alarm when my Things Shadow updates are getting rejected" \
       --namespace AWS/IoT \
       --metric-name UpdateThingShadow.Success \
       --dimensions Name=Protocol,Value=MQTT \
       --statistic Sum \
       --threshold 10 \
       --comparison-operator LessThanThreshold \
       --period 86400 \
       --unit Count \
       --evaluation-periods 1 \
       --alarm-actions sns-topic-arn
   ```

1. 경보를 테스트합니다.

   ```
   aws cloudwatch set-alarm-state --alarm-name UpdateThingShadowSuccessAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name UpdateThingShadowSuccessAlarm --state-reason "initializing" --state-value ALARM
   ```

1. [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)에 경보가 나타나는지 확인합니다.

## 작업에 대한 CloudWatch 경보를 생성하려면 어떻게 해야 합니까?
<a name="cw-jobs-alarms"></a>

작업 서비스는 작업을 모니터링할 수 있는 CloudWatch 지표를 제공합니다. CloudWatch 경보를 생성하여 [Jobs 지표](metrics_dimensions.md#jobs-metrics)를 모니터링할 수 있습니다.

다음 명령은 CloudWatch 경보를 생성하여 *SampleOTAJob* 작업에 대해 실패한 총 작업 실행 수를 모니터링하고 20회 이상 작업 실행이 실패한 경우 이를 알립니다. 경보는 보고된 값을 300초마다 확인하여 작업 지표 `FailedJobExecutionTotalCount`을 모니터링합니다. 보고된 단일 값이 20보다 클 때, 즉 작업이 시작된 이후 20개 이상의 작업 실행이 실패했을 때 활성화합니다. 경보가 울리면 제공된 Amazon SNS 주제로 알림이 전송됩니다.

```
aws cloudwatch put-metric-alarm \
    --alarm-name TotalFailedJobExecution-SampleOTAJob \
    --alarm-description "Alarm when total number of failed job execution exceeds the threshold for SampleOTAJob" \
    --namespace AWS/IoT \
    --metric-name FailedJobExecutionTotalCount \
    --dimensions Name=JobId,Value=SampleOTAJob \
    --statistic Sum \
    --threshold 20 \
    --comparison-operator GreaterThanThreshold \
    --period 300 \
    --unit Count \
    --evaluation-periods 1 \
    --alarm-actions arn:aws:sns:<AWS_REGION>:<AWS_ACCOUNT_ID>:SampleOTAJob-has-too-many-failed-job-ececutions
```

다음 명령은 CloudWatch 경보를 생성하여 주어진 기간 동안 *SampleOTAJob* 작업에 대해 실패한 작업 실행 수를 모니터링합니다. 그런 다음 해당 기간 동안 5회 이상 작업 실행이 실패한 경우 이를 알립니다. 경보는 3600초마다 보고된 값을 확인하여 작업 지표 `FailedJobExecutionCount`을 모니터링합니다. 보고된 단일 값이 5보다 클 때, 즉 작업이 시작된 이후 5개 이상의 작업 실행이 실패했을 때 활성화합니다. 경보가 울리면 제공된 Amazon SNS 주제로 알림이 전송됩니다.

```
aws cloudwatch put-metric-alarm \
    --alarm-name FailedJobExecution-SampleOTAJob \
    --alarm-description "Alarm when number of failed job execution per hour exceeds the threshold for SampleOTAJob" \
    --namespace AWS/IoT \
    --metric-name FailedJobExecutionCount \
    --dimensions Name=JobId,Value=SampleOTAJob \
    --statistic Sum \
    --threshold 5 \
    --comparison-operator GreaterThanThreshold \
    --period 3600 \
    --unit Count \
    --evaluation-periods 1 \
    --alarm-actions arn:aws:sns:<AWS_REGION>:<AWS_ACCOUNT_ID>:SampleOTAJob-has-too-many-failed-job-ececutions-per-hour
```