

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

# 모니터링 AWS IoT
<a name="monitoring_overview"></a>

모니터링은 AWS IoT 및 AWS 솔루션의 안정성, 가용성 및 성능을 유지하는 데 중요한 부분입니다.

다중 지점 장애가 발생할 경우 더 쉽게 디버깅할 수 있도록 AWS 솔루션의 모든 부분에서 모니터링 데이터를 수집하는 것이 좋습니다. 먼저 다음 질문에 답하는 모니터링 계획을 수립합니다. 어떻게 답해야 할지 잘 모르는 경우에도 계속해서 [로깅을 활성화](configure-logging.md)하고 기준 성능을 설정할 수 있습니다.
+ 모니터링의 목표
+ 모니터링할 리소스
+ 이러한 리소스를 모니터링하는 빈도
+ 사용할 모니터링 도구
+ 모니터링 작업을 수행할 사람
+ 문제 발생 시 알려야 할 대상

다음 단계는 [로깅을 활성화](configure-logging.md)하고 다양한 시간과 다양한 로드 조건에서 AWS IoT 성능을 측정하여 환경에서 정상 성능의 기준을 설정하는 것입니다. 모니터링할 때 현재 성능 데이터와 비교할 수 있도록 모니터링 데이터를 기록 AWS IoT해 둡니다. 이를 통해 정상적인 성능 패턴과 성능 이상을 식별하고 문제 해결 방법을 고안할 수 있습니다.

에 대한 기준 성능을 설정하려면 이러한 지표를 모니터링하여 시작해야 AWS IoT합니다. 나중에 언제든 더 많은 지표를 모니터링할 수 있습니다.
+  [`PublishIn.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`PublishOut.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`Subscribe.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`Ping.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`Connect.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`GetThingShadow.Accepted`](metrics_dimensions.md#shadow-metrics) 
+  [`UpdateThingShadow.Accepted`](metrics_dimensions.md#shadow-metrics) 
+  [`DeleteThingShadow.Accepted`](metrics_dimensions.md#shadow-metrics) 
+  [`RulesExecuted`](metrics_dimensions.md#iot-metrics) 

이 섹션의 주제는 AWS IoT로깅 및 모니터링을 시작하는 데 도움이 될 수 있습니다.

**Topics**
+ [AWS IoT 로깅 구성](configure-logging.md)
+ [Amazon CloudWatch를 사용하여 AWS IoT 경보 및 지표 모니터링](monitoring-cloudwatch.md)
+ [CloudWatch Logs AWS IoT 를 사용하여 모니터링](cloud-watch-logs.md)
+ [디바이스 측 로그를 Amazon CloudWatch에 업로드합니다.](upload-device-logs-to-cloudwatch.md)
+ [를 사용하여 AWS IoT API 호출 로깅 AWS CloudTrail](iot-using-cloudtrail.md)

# AWS IoT 로깅 구성
<a name="configure-logging"></a>

 AWS IoT 활동을 모니터링하고 로깅하려면 먼저 AWS IoT 콘솔, CLI 또는 API를 사용하여 로깅을 활성화해야 합니다. 계정 수준, 이벤트 수준 또는 리소스별 수준의 세 AWS IoT 가지 수준에서에 대한 로깅을 구성할 수 있습니다. 이벤트 수준 및 리소스별 로깅은 V2 로깅에서만 사용할 수 있습니다. V1 로깅을 사용하는 고객은 이러한 기능에 액세스하려면 V2로 마이그레이션해야 합니다. 세부 [정보를](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#migration-v1-v2) 참조하세요.

 AWS IoT 로깅을 구성하는 방법을 고려할 때 달리 지정하지 않는 한 계정 수준 로깅 구성에 따라 AWS IoT 활동이 로깅되는 방법이 결정됩니다. 먼저 기본 로그 [수준이 INFO 또는 DEBUG인 세부 로그](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level)를 가져올 수 있습니다. 초기 로그를 검토한 후 계정 또는 이벤트 수준에서 WARN 또는 ERROR와 같은 덜 명확한 수준으로 기본 로그 수준을 변경하고 더 많은 주의가 필요할 수 있는 리소스에 대해 보다 구체적인 리소스별 로그 수준을 설정할 수 있습니다. 로그 수준은 언제든 변경할 수 있습니다.

이 주제에서는 클라우드 측 로그인을 다룹니다 AWS IoT. 디바이스 측 로깅 및 모니터링에 대한 자세한 내용은 [CloudWatch에 디바이스 측 로그 업로드](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch.html)를 참조하세요.

로깅 및 모니터링에 대한 자세한 내용은 [의 로깅 및 모니터링을 AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/logging-and-monitoring.html) AWS IoT Greengrass참조하세요.

## 에서 V2 로깅 구성 AWS IoT
<a name="configuring-v2-logging"></a>

### 로깅 버전 확인
<a name="determing-your-logging-version"></a>

V[2 로깅이 활성화되지 않은 경우 GetV2LoggingOptions API](https://docs.aws.amazon.com/iot/latest/apireference/API_GetV2LoggingOptions.html)는 NotConfiguredException을 반환합니다. V2 이 오류는 V1 로깅이 사용 중이거나 로깅이 구성되지 않은 경우에 발생합니다.

### V2 로깅 기능 이해
<a name="understanding-v2-logging-features"></a>

V2 로깅은 이벤트 수준 로깅과 리소스별 로깅이라는 두 가지 주요 기능을 제공합니다. 이벤트 수준 로깅을 사용하면 사용자 지정 가능한 로그 수준 및 CloudWatch 로그 그룹 대상으로 대상 로깅 구성을 사용할 수 있습니다. 리소스별 로깅을 사용하면 사물 그룹, 소스 IP, 클라이언트 ID 또는 보안 주체 ID별로 로그를 필터링할 수 있습니다. 이러한 기능을 함께 사용하면 IoT 작업에 대한 세분화된 제어와 포괄적인 가시성을 제공하여 로그 검색 가능성을 개선하고 불필요한 로깅 활동을 제거하여 비용을 절감할 수 있습니다.

### V1에서 V2로 마이그레이션
<a name="migration-v1-v2"></a>

 AWS [CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-options.html) 또는 SDK를 통해 SetV2LoggingOptions API를 사용하여 V2 로깅으로 마이그레이션할 수 있습니다. SetV2LoggingOptions 마이그레이션 후는 모든 로그를 CloudWatch 로그 그룹 'AWSIotLogsV2'로 AWS IoT 자동 라우팅합니다. 중요: 다운스트림 애플리케이션 또는 리소스가 'AWSIotLogs'의 정보를 사용하는 경우 해당 로그 그룹 경로를 사용하도록 업데이트합니다.

## 로깅 역할 및 정책 구성
<a name="configure-logging-role-and-policy"></a>

 로그인을 활성화하려면 먼저 사용자를 대신하여 CloudWatch AWS IoT 로그 그룹에 로그 활동을 쓸 수 있는 AWS IoT 권한을 부여하는 IAM 역할과 정책을 생성 AWS IoT해야 합니다. [AWS IoT 콘솔의 로그 섹션에 필요한 정책을 사용하여 IAM 역할을 생성할 수도 있습니다](https://console.aws.amazon.com/iot/home#/settings/logging).

**참고**  
 AWS IoT 로깅을 활성화하기 전에 CloudWatch Logs 액세스 권한을 이해해야 합니다. CloudWatch Logs 액세스 권한이 있는 사용자는 디바이스에서 디버깅 정보를 볼 수 있습니다. 자세한 내용은 [Amazon CloudWatch Logs에 대한 인증 및 액세스 제어](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html) 단원을 참조하세요.  
로드 테스트 AWS IoT Core 로 인해에서 트래픽 패턴이 많을 것으로 예상되는 경우 제한을 방지하려면 IoT 로깅을 비활성화하는 것이 좋습니다. 트래픽이 많이 감지되면 서비스에서 계정 로그인을 비활성화할 수 있습니다.

다음은 AWS IoT Core 리소스에 대한 로깅 역할 및 정책을 생성하는 방법을 보여줍니다.

### 로깅 역할 생성
<a name="create-logging-role"></a>

로깅 역할을 만들려면 [IAM 콘솔의 역할 허브](https://console.aws.amazon.com/iam/home#/roles)를 열고 **역할 생성**을 선택합니다.

1. **Select trusted entity**(신뢰할 수 있는 엔터티 선택)에서 **AWS Service**를 선택합니다. 그런 다음 **Use case**(사용 사례)에서 **IoT**를 선택합니다. **IoT**가 표시되지 않는 경우 **다른 AWS 서비스 사용 사례:** 드롭다운 메뉴에서 **IoT**를 입력하고 검색합니다. **다음**을 선택합니다.

1. **Add permissions**(권한 추가) 페이지에서 서비스 역할에 자동으로 연결되는 정책이 표시됩니다. **다음**을 선택합니다.

1. **Name, review, and create**(이름 지정, 검토 및 생성) 페이지에서 해당 역할의 **Role name**(역할 이름) 및 **Role description**(역할 설명)을 입력하고 **Create role**(역할 생성)을 선택합니다.

### 로깅 역할 정책
<a name="logging-role-policy"></a>

다음 정책 문서는 AWS IoT 가 사용자 대신 CloudWatch에 로그 항목을 제출하도록 허용하는 역할 정책 및 신뢰 정책을 제공합니다. 사용자 지정 CloudWatch 로그 그룹을 사용하여 이벤트 수준 로깅을 구성하는 경우 사용자 지정 리소스 ARN을 포함하도록 역할 정책을 업데이트해야 합니다.

로그 항목도 제출 AWS IoT Core for LoRaWAN 하도록 허용한 경우 두 활동을 모두 로깅하는 정책 문서가 생성됩니다.

**참고**  
정책 문서는 로깅 역할을 생성할 때 사용자를 위해 작성됩니다. 문서에는 변수 * , 및 `${partition}` * * `${region}` *가 있으며*`${accountId}`*, 이를 값으로 바꿔야 합니다.  
파티션을 리전의 파티션으로 바꿉니다.
region을 사용하는 AWS 리전으로 바꿉니다. 디바이스에서 AWS CLI를 구성하는 데 사용한 것과 동일한 AWS 리전을 사용해야 합니다.
account-id를 AWS 계정 ID로 바꿉니다.

역할 정책:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutMetricFilter",
                "logs:PutRetentionPolicy",
                "iot:GetLoggingOptions",
                "iot:SetLoggingOptions",
                "iot:SetV2LoggingOptions",
                "iot:GetV2LoggingOptions",
                "iot:SetV2LoggingLevel",
                "iot:ListV2LoggingLevels",
                "iot:DeleteV2LoggingLevel"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:AWSIotLogsV2:*"
            ]
        }
    ]
}
```

 AWS IoT Core 활동만 로깅하는 신뢰 정책:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "iot.amazonaws.com"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

AWS IoT IAM 역할 권한이 부족하여 로깅이 CloudWatch Logs에 로깅을 게시하지 못할 수 있습니다. 이 경우 [ CloudWatch 로깅 지표](https://docs.aws.amazon.com/iot/latest/developerguide/metrics_dimensions.html#logging-metrics)를 확인하여 실패를 조사하고 문제를 해결합니다.

## 에서 로깅 구성 AWS IoT (콘솔)
<a name="configure-logging-console"></a>

이 섹션에서는 AWS IoT 콘솔을 사용하여 AWS IoT 로깅을 구성하는 방법을 설명합니다. 계정 수준, 이벤트 수준 및 리소스별 로깅을 설정할 수 있습니다.

**AWS IoT 로깅을 구성하려면:**

1.  AWS IoT 콘솔에 로그인합니다. 자세한 내용은 [AWS IoT 콘솔 열기](setting-up.md#iot-console-signin) 단원을 참조하십시오.

1. 왼쪽 탐색 창에서 **로그**(이전에는 설정 아래의 섹션)를 선택합니다.

1. 계정 수준 로깅 구성: 이벤트 수준 또는 리소스별 설정으로 재정의되지 않는 한 계정 수준 로깅은 모든 AWS IoT 플릿(디바이스 또는 엔드포인트)에 적용됩니다.

   1. 계정 수준 로깅에서 **계정 수준 로깅 관리를** 선택하여 업데이트합니다.

   1. "로깅 활성화" 확인란을 선택하여 CloudWatch로 로그 전송을 시작합니다. “로깅 활성화”를 선택하지 않으면는 이벤트 수준 또는 리소스 수준 로깅 구성에 관계없이 CloudWatch 로그 그룹에 로그를 보내지 AWS IoT 않습니다.

   1. **IAM 로그 역할**의 드롭다운 목록에서 기존 역할을 선택합니다. **역할 세부 정보를 보고** 역할 권한을 검사할 수 있습니다. 또는 **새 역할 생성을** 선택하여 새 IAM 역할을 설정합니다. 로깅 역할은가 사용자를 대신하여 CloudWatch에 로그 항목을 AWS IoT 제출하도록 허용하는 정책을 제공합니다. 사용자 지정 CloudWatch 로그 그룹을 사용하여 이벤트 수준 로깅을 구성하는 경우이 로그 그룹의 ARN을 포함하도록 역할 정책을 업데이트해야 합니다.

   1. CloudWatch **Logs에 표시할 로그 항목의 세부 수준에 해당하는 기본** 로그 수준을 선택합니다. [https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level) 참고: 로그 수준 “DEBUG”는 가장 세부적인 정보를 제공하지만 CloudWatch 비용은 증가합니다. CloudWatch 로그 그룹 대상은 계정 수준에서 구성할 수 없습니다. 그러나 다음 섹션에 설명된 대로 개별 이벤트 유형에 대한 사용자 지정 로그 그룹을 지정할 수 있습니다.

   1. **로깅 업데이트를** 선택하여 변경 사항을 저장합니다.

1. 이벤트 수준 로깅을 사용하면 관련 이벤트에 대한 로그를 선택적으로 캡처하여 전용 CloudWatch 로그 그룹으로 전달할 수 있습니다. 이를 통해 검색 가능성을 높이기 위해 사용 사례별로 로그를 구성하고, 다양한 대상과 공유하며, 로그를 활성화하고 이벤트 중요도에 따라 로그 수준을 설정하여 CloudWatch 비용을 절감할 수 있습니다.

   **이벤트 수준 로깅** 구성: 이벤트 수준 로깅은 클라이언트 인증 시도와 같은 특정 AWS IoT 이벤트를 캡처합니다. 이러한 설정은 계정 수준 로깅을 재정의합니다.

   1. **이벤트 수준 로깅** 섹션에서 **이벤트 수준 로깅 관리를** 선택하여 업데이트합니다.

   1. 기본적으로 이벤트 유형은 계정 수준 로깅 구성을 상속합니다. 참고: 리소스별 로깅이 구성된 경우 계정 및 이벤트 수준 설정을 재정의합니다.

   1. 개별 이벤트에 대한 설정을 수정하려면 해당 이벤트 행의 값을 클릭합니다. 로그 수준과 CloudWatch 로그 그룹 대상을 모두 조정할 수 있습니다. 사용자 지정 CloudWatch 로그 그룹 대상을 지정할 때 IAM 역할 정책에 새 로그 그룹에 대한 권한이 포함되어 있는지 확인해야 합니다. 역할 정책을 업데이트하지 않으면가 사용자 지정 로그 그룹에 로그를 AWS IoT 쓰지 못합니다. 선택한 후 확인 표시를 클릭하여 선택을 확인합니다. **'수정됨'** 열에 보류 중인 변경 사항을 나타내는 '예'가 표시됩니다.

   1. **로깅 업데이트를** 클릭하여 변경 사항을 적용하거나 **취소**를 선택하여 취소합니다.

1. 리소스별 재정의 구성: 리소스별 재정의는 선택한 리소스에 로깅 설정을 적용합니다. 리소스는 사물 그룹, 소스 IP, 클라이언트 ID 또는 보안 주체 ID일 수 있습니다. 리소스별 로깅 구성은 계정 수준 및 이벤트 수준 설정을 모두 재정의합니다. 활성화하면 지정된 리소스에 대해 구성된 로깅 수준에서 모든 이벤트 유형에 대한 로그가 생성됩니다. 예를 들어, 다른 모든 사물에 대한 정보 수준 로깅을 유지하면서 특정 사물에 대한 디버그 수준 로깅을 설정할 수 있습니다.

   1. **리소스별 재정의 섹션에서 리소스별 재정의 추가**를 선택합니다.

   1. 사물 그룹, 소스 IP, 클라이언트 ID 또는 보안 주체 ID 중에서 로그 대상을 선택합니다.

   1. 선택한 대상 유형에 해당하는 로그 대상 값을 입력합니다.

   1. 리소스별 로그 수준 섹션의 드롭다운 메뉴에서 원하는 로그 수준을 선택합니다.

   1. **제출**을 클릭하여 재정의를 추가하거나 **취소**를 클릭하여 변경 사항을 취소합니다.

   1. 기존 리소스별 재정의를 수정하려면 리소스 옆의 확인란을 선택하고 “제거”를 클릭하여 재정의를 삭제하거나 “편집”을 클릭하여 수정합니다.

로깅을 활성화한 후 [CloudWatch 콘솔에서 AWS IoT 로그 보기](cloud-watch-logs.md#viewing-logs)로 이동하여 로그 항목을 보는 방법에 대해 자세히 알아보세요.

## 에서 계정 및 이벤트 수준 로깅 구성 AWS IoT (CLI)
<a name="global-logging-cli"></a>

이 섹션에서는 CLI를 사용하여 AWS IoT 에 대한 글로벌 로깅을 구성하는 방법을 설명합니다.

선택적으로 이벤트 수준 로깅을 구성할 수 있습니다. 이벤트 수준 로깅은 인증 및 권한 부여 또는 인증서 생성 이벤트와 같은 이벤트 수준에서 로깅 정보를 캡처합니다. 이벤트 수준에서 로그 수준과 CloudWatch 로그 그룹 대상을 모두 사용자 지정할 수 있습니다. 이벤트 수준 로깅은 계정 수준 로깅에 비해 더 대상화된 수준에서 작동하므로 계정 수준 로깅 설정을 재정의합니다. 이 계층적 접근 방식을 사용하면 운영 중요도 및 비용 고려 사항에 따라 다양한 유형의 이벤트에 대해 다양한 로깅 전략을 유지할 수 있습니다.

**참고**  
사용하려는 역할의 Amazon 리소스 이름(ARN)이 필요합니다. 로깅에 사용할 역할을 만들어야 하는 경우 계속하기 전에 [로깅 역할 생성](#create-logging-role) 단원을 참조하세요. 모든 이벤트 유형에 대해 사용자 지정 CloudWatch 로그 그룹을 지정할 때 로깅 역할에 대상 로그 그룹에 필요한 권한이 있는지 확인합니다.  
 API를 호출하는 데 사용되는 보안 주체는 로깅 역할에 대한 [역할 전달 권한](pass-role.md)이 있어야 합니다.

API에서 여기에 표시된 CLI 명령에 해당하는 메서드를 사용하여 AWS API로이 절차를 수행할 수도 있습니다.

**CLI를 사용하여에 대한 기본 로깅을 구성하려면 AWS IoT**

1. [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-options.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-options.html) 명령을 사용하여 계정에 대한 로깅 옵션을 설정합니다.

   ```
   aws iot set-v2-logging-options \
       --event-configurations event-configuration-list \
       --role-arn logging-role-arn \
       --default-log-level log-level
   ```

   여기서 각 항목은 다음과 같습니다.  
**--role-arn**  
CloudWatch Logs의 로그에 쓸 수 있는 AWS IoT 권한을 부여하는 역할 ARN입니다. 초기 설정에는 Role-arn 구성이 필요합니다.  
**--default-log-level**  
사용할 [로그 수준](#log-level)입니다. 유효한 값은 `ERROR`, `WARN`, `INFO`, `DEBUG`또는 입니다`DISABLED`. 초기 설정에는 Default-log-level 구성이 필요합니다.  
**--no-disable-all-logs**  
모든 AWS IoT 로깅을 활성화하는 선택적 파라미터입니다. 이 파라미터를 사용하여 현재 비활성화되어 있는 로깅을 활성화합니다.  
 **--disable-all-logs**   
모든 AWS IoT 로깅을 비활성화하는 선택적 파라미터입니다. 현재 활성화된 로깅을 비활성화하려면 이 파라미터를 사용합니다.  
**--event-configurations**  
이 파라미터는 선택 사항이며 개별 이벤트 유형에 대한 로깅 설정을 사용자 지정할 수 있습니다.  
   + eventType: 계정 수준 설정을 재정의하는 이벤트 유형입니다.
   + logLevel: DEBUG, INFO, ERROR, WARN 또는 DISABLED로 계정 수준 설정 재정의
   + logDestination: 로그 전송을 위한 사용자 지정 CloudWatch 로그 그룹 지정

   각 이벤트 유형에 대해 로깅 수준 및 로그 대상을 독립적으로 구성할 수 있습니다. 지정하지 않으면 이벤트가 계정 수준 설정을 상속합니다.

   ```
   aws iot set-v2-logging-options \
       --event-configurations "[{\"eventType\":\"Publish-In\",\"logLevel\":\"INFO\",\"logDestination\":\"examplePublishInLogGroup\"}]"
   ```

1. [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-v2-logging-options.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-v2-logging-options.html) 명령을 사용하여 현재 로깅 옵션을 가져옵니다.

   ```
   aws iot get-v2-logging-options \
       --verbose
   ```

   여기서 각 항목은 다음과 같습니다.  
**--verbose**  
모든 eventTypes 및 해당 구성을 검색할 수 있는 선택적 파라미터입니다.

로깅을 활성화한 후 [CloudWatch 콘솔에서 AWS IoT 로그 보기](cloud-watch-logs.md#viewing-logs)로 이동하여 로그 항목을 보는 방법에 대해 자세히 알아보세요.

**참고**  
AWS IoT 는 계정에 대한 글로벌 로깅을 설정하고 가져오기 위해 이전 명령(**set-logging-options** 및 **get-logging-options**)을 계속 지원합니다. 이들 명령어를 사용할 경우 결과 로그는 JSON 페이로드 대신 일반 텍스트가 포함되며 일반적으로 로깅 지연 시간이 길어질 수 있음에 유의하세요. 이러한 이전 명령의 구현은 더 이상 개선되지 않을 것입니다. ["v2" 버전을](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#migration-v1-v2) 사용하여 로깅 옵션을 구성하고 가능하면 이전 버전을 사용하는 레거시 애플리케이션을 변경하는 것이 좋습니다.

## AWS IoT (CLI)에서 리소스별 재정의 구성
<a name="fine-logging-cli"></a>

이 섹션에서는 CLI를 AWS IoT 사용하여에 대한 리소스별 재정의를 구성하는 방법을 설명합니다. 리소스별 재정의를 사용하면 사물 그룹, 클라이언트 ID, 소스 IP 또는 보안 주체 ID로 식별되는 특정 리소스에 대한 로깅 수준을 지정할 수 있습니다. 리소스별 로깅이 활성화되면 계정 수준 및 이벤트 수준 설정을 모두 재정의합니다. 모든 이벤트 유형은 이벤트 수준 구성에서 해당 이벤트가 비활성화된 경우에도 구성된 로깅 수준에서 지정된 리소스에 대한 로그를 생성합니다.

사물 그룹에는 계층적 관계를 만들기 위해 다른 사물 그룹이 포함될 수 있습니다. 이 절차에서는 단일 사물 그룹의 로깅을 구성하는 방법에 대해 설명합니다. 계층 구조의 상위 사물 그룹에 이 절차를 적용하여 해당 계층 구조의 모든 사물 그룹에 대한 로깅을 구성할 수 있습니다. 하위 사물 그룹에 이 절차를 적용하여 상위 그룹의 로깅 구성을 재정의할 수도 있습니다.

사물은 사물 그룹의 멤버일 수 있습니다. 이 멤버십을 통해 사물은 사물 그룹에 적용된 구성, 정책 및 설정을 상속할 수 있습니다. 사물 그룹은 각 사물을 개별적으로 처리하는 대신 설정을 관리하고 여러 사물에 집합적으로 적용하는 데 사용됩니다. 클라이언트 ID가 사물 이름과 일치하면 AWS IoT Core 는 클라이언트 세션을 해당 사물 리소스와 자동으로 연결합니다. 이렇게 하면 클라이언트 세션이 로깅 수준을 포함하여 사물이 속한 사물 그룹에 적용된 구성 및 설정을 상속할 수 있습니다. 클라이언트 ID가 사물 이름과 일치하지 않는 경우 독점 사물 연결을 활성화하여 연결을 설정할 수 있습니다. 자세한 정보는 [AWS IoT 사물을 MQTT 클라이언트 연결에 연결](exclusive-thing.md)을 참조하십시오.

사물 그룹 외에도 디바이스의 클라이언트 ID, 소스 IP 및 보안 주체 ID와 같은 대상을 로깅할 수 있습니다.

**참고**  
사용하려는 역할의 Amazon 리소스 이름(ARN)이 필요합니다. 로깅에 사용할 역할을 만들어야 하는 경우 계속하기 전에 [로깅 역할 생성](#create-logging-role) 단원을 참조하세요.  
API를 호출하는 데 사용되는 보안 주체는 로깅 역할에 대한 [역할 전달 권한](pass-role.md)이 있어야 합니다.

API에서 여기에 표시된 CLI 명령에 해당하는 메서드를 사용하여 AWS API로이 절차를 수행할 수도 있습니다.

**CLI를 사용하여에 대한 리소스별 재정의를 구성하려면 AWS IoT**

1. aws iot set-v2-logging-options 명령을 사용하여 리소스별 로깅을 구성하기 전에 계정 수준 로깅을 활성화합니다.

1. [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-level.html) 명령을 사용하여 리소스별 재정의를 구성합니다. 사물 그룹 구성은 다음 예제를 참조하세요.

   ```
   aws iot set-v2-logging-level \
                 --log-target targetType=THING_GROUP,targetName=thing_group_name \
                 --log-level log_level
   ```  
**--log-target**  
로깅을 구성하는 리소스의 유형과 이름입니다. `targetType` 값은 `THING_GROUP` \$1 `CLIENT_ID` \$1 `SOURCE_IP` \$1 `PRINCIPAL_ID` 중 하나여야 합니다. 로그 대상 파라미터 값은 앞의 예제 명령과 같이 텍스트이거나 다음 예와 같이 JSON 문자열일 수 있습니다.  

   ```
   aws iot set-v2-logging-level \
                 --log-target '{"targetType": "THING_GROUP","targetName": "thing_group_name"}' \
                 --log-level log_level
   ```  
**--log-level**  
특정 리소스에 대한 로그를 작성할 때 사용하는 로깅 수준입니다. 유효한 값은 **DEBUG**, **INFO**, **ERROR**, **WARN**, **DISABLED**입니다.

1. [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-v2-logging-levels.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-v2-logging-levels.html) 명령을 사용하여 현재 구성된 로깅 수준을 나열합니다.

   ```
   aws iot list-v2-logging-levels
   ```

1. [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/delete-v2-logging-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/delete-v2-logging-level.html) 명령을 사용하여 다음 예와 같이 리소스별 로깅 수준을 삭제합니다.

   ```
   aws iot delete-v2-logging-level \
                 --target-type "THING_GROUP" \
                 --target-name "thing_group_name"
   ```

   ```
   aws iot delete-v2-logging-level \
                 --target-type=CLIENT_ID 
                 --target-name=ClientId1
   ```  
**--target-type**  
`target-type` 값은 `THING_GROUP` \$1 `CLIENT_ID` \$1 `SOURCE_IP` \$1 `PRINCIPAL_ID` 중 하나여야 합니다.  
**--target-name**  
로깅 수준을 제거할 사물 그룹의 이름입니다.

## 로그 수준
<a name="log-level"></a>

이러한 로그 수준은 기록되는 이벤트를 결정하고, 기본 및 리소스별 로그 수준에 적용됩니다.

오류  
작업을 실패하게 만든 오류입니다.  
예: 인증서가 만료되어 디바이스를 인증하지 못했습니다.  
로그에 ERROR 정보만 포함됩니다.

WARN  
시스템에서 불일치를 초래할 수는 있지만 반드시 작업이 실패하지는 않는 모든 것입니다.  
예: 메시지 속도 제한에 근접합니다.  
로그에 ERROR 및 WARN 정보가 포함됩니다.

INFO  
사물 흐름에 대한 상위 수준 정보입니다.  
예: 클라이언트가 MQTT 주제를 성공적으로 구독했습니다.  
로그에 INFO, ERROR 및 WARN 정보가 포함됩니다.

DEBUG  
문제 디버깅에 도움이 될 수 있는 정보입니다.  
예: IoT Rules Engine이 규칙 주제 “rule/test”에 게시된 메시지를 감지하고 성공적으로 실행을 시작했습니다. 규칙은 RepublishAction으로 구성됩니다.  
로그에 DEBUG, INFO, ERROR 및 WARN 정보가 포함됩니다.

DISABLED  
모든 로깅이 비활성화됩니다.

# Amazon CloudWatch를 사용하여 AWS IoT 경보 및 지표 모니터링
<a name="monitoring-cloudwatch"></a>

에서 원시 데이터를 수집하여 읽기 가능하며 실시간에 가까운 지표 AWS IoT 로 처리하는 CloudWatch를 AWS IoT 사용하여 모니터링할 수 있습니다. 이러한 통계는 2주간 기록되므로 기록 정보를 보고 웹 애플리케이션이나 서비스가 어떻게 실행되고 있는지 전체적으로 더 잘 파악할 수 있습니다. AWS IoT 지표 데이터는 기본적으로 1분 간격으로 CloudWatch에 자동 전송됩니다. 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [Amazon CloudWatch, Amazon CloudWatch Events 및 Amazon CloudWatch Logs란 무엇입니까?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html)를 참조하세요.

## AWS IoT 지표 사용
<a name="how_to_use_metrics"></a>

에서 보고하는 지표는 다양한 방식으로 분석할 수 있는 정보를 AWS IoT 제공합니다. 다음 사용 사례는 10개의 사물이 하루 한 번 인터넷에 연결하는 시나리오를 기반으로 합니다. 매일:
+ 10개의 사물이 거의 동시에 AWS IoT 에 연결됩니다.
+ 각 사물이 주제 필터를 구독한 후 연결 해제 전에 1시간을 대기합니다. 이 시간 동안 사물이 서로 통신하고 세계의 상태를 더 많이 학습합니다.
+ 각 사물이 `UpdateThingShadow`를 사용하여 새로 발견된 데이터에 기반한 일부 인식을 게시합니다.
+ 각 사물의 연결이 끊어집니다 AWS IoT.

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

**Topics**
+ [AWS IoT 지표 사용](#how_to_use_metrics)
+ [모니터링할 CloudWatch 경보 생성 AWS IoT](creating_alarms.md)
+ [AWS IoT 지표 및 차원](metrics_dimensions.md)

# 모니터링할 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
```

# AWS IoT 지표 및 차원
<a name="metrics_dimensions"></a>

와 상호 작용하면 AWS IoT서비스는 1분마다 지표와 차원을 CloudWatch로 전송합니다. CloudWatch 콘솔 또는를 AWS IoT사용하여 이러한 지표 AWS CLI 를 볼 수 있습니다.

CloudWatch 콘솔을 사용하여 지표를 보려면 [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)을 엽니다. 탐색 창에서 **지표(Metrics)**를 선택한 다음 **모든 지표(All metrics)**를 선택합니다. **찾아보**기 탭에서를 검색 AWS IoT 하여 지표 목록을 봅니다. 지표는 먼저 서비스 네임스페이스별로 그룹화된 다음 각 네임스페이스 내에서 다양한 차원 조합별로 그룹화됩니다.

를 사용하여 지표를 보려면 다음 명령을 AWS CLI실행합니다.

```
1. aws cloudwatch list-metrics --namespace "AWS/IoT"
```

**Topics**
+ [AWS IoT 지표](#iot-metrics)
+ [AWS IoT Core 자격 증명 공급자 지표](#credential-provider-metrics)
+ [인증 지표](#authentication-metrics)
+ [서버 인증서 OCSP 스테이플링 지표](#server-ocsp-metrics)
+ [규칙 지표](#rulemetrics)
+ [규칙 작업 지표](#rule-action-metrics)
+ [HTTP 작업별 지표](#http-action-metrics)
+ [메시지 브로커 지표](#message-broker-metrics)
+ [디바이스 섀도우 지표](#shadow-metrics)
+ [지표 로깅](#logging-metrics)
+ [Jobs 지표](#jobs-metrics)
+ [Device Defender Audit 지표](#device-defender-audit-metrics)
+ [Device Defender Detect 지표](#device-defender-detect-metrics)
+ [디바이스 프로비저닝 지표](#provisioning-metrics)
+ [LoRaWAN 지표](#lorawan-metrics)
+ [플릿 인덱싱 지표](#fleet-indexing-metrics)
+ [지표 차원](#aws-iot-metricdimensions)

## AWS IoT 지표
<a name="iot-metrics"></a>


| 지표 | 설명 | 
| --- | --- | 
|   `AddThingToDynamicThingGroupsFailed`   |  동적 사물 그룹에 사물을 추가하는 것과 관련된 실패 이벤트 수입니다. `DynamicThingGroupName` 차원에는 사물을 추가하지 못한 동적 그룹의 이름이 포함됩니다.  | 
|   `NumLogBatchesFailedToPublishThrottled`   |  조절 오류로 인해 게시 실패한 단일 배치.  | 
|   `NumLogEventsFailedToPublishThrottled`   |  조절 오류로 인해 게시 실패한 배치 내 로그 이벤트 수.  | 

## AWS IoT Core 자격 증명 공급자 지표
<a name="credential-provider-metrics"></a>


| 지표 | 설명 | 
| --- | --- | 
|   `CredentialExchangeSuccess`   |   AWS IoT Core 자격 증명 공급자에 대한 성공적인 `AssumeRoleWithCertificate` 요청의 수입니다.  | 

## 인증 지표
<a name="authentication-metrics"></a>

**참고**  
인증 지표는 **프로토콜 지표** 아래의 CloudWatch 콘솔에 표시됩니다.


| 지표 | 설명 | 
| --- | --- | 
|   `Connection.AuthNError`   | 인증 실패로 인해가 AWS IoT Core 거부하는 연결 시도 횟수입니다. 이 지표는 AWS 계정의 엔드포인트와 일치하는 서버 이름 표시(SNI) 문자열을 보내는 연결만 고려합니다. 이 지표에는 인터넷 스캔 도구 또는 검사 활동과 같은 외부 소스의 연결 시도가 포함됩니다. Protocol 차원에는 연결 시도를 전송하는 데 사용된 프로토콜이 포함됩니다. | 

## 서버 인증서 OCSP 스테이플링 지표
<a name="server-ocsp-metrics"></a>


| 지표 | 설명 | 
| --- | --- | 
| RetrieveOCSPStapleData.Success | OCSP 응답을 성공적으로 수신하고 처리했습니다. 이 응답은 구성된 도메인에 대한 TLS 핸드셰이크 중에 포함됩니다. DomainConfigurationName 차원에는 서버 인증서 OCSP 스테이플링이 활성화된 구성된 도메인의 이름이 포함됩니다. | 

## 규칙 지표
<a name="rulemetrics"></a>


| 지표 | 설명 | 
| --- | --- | 
|   `ParseError`   |  규칙이 수신 대기 중인 주제에 게시되는 메시지에서 발생한 JSON 구문 분석 오류 수. `RuleName` 차원에는 규칙 이름이 포함됩니다.  | 
|   `RuleExecutionThrottled`   |  악의적인 행위 때문에 또는 메시지 수가 규칙 엔진의 조절 제한을 초과했기 때문에 규칙 엔진이 제한하는 메시지 수입니다. `RuleName` 차원에는 트리거할 규칙 이름이 포함됩니다.  | 
|   `RuleNotFound`   |  트리거할 규칙을 찾을 수 없습니다. `RuleName` 차원에는 규칙 이름이 포함됩니다.  | 
|   `RulesExecuted`   |  실행된 AWS IoT 규칙 수입니다.  | 
|   `TopicMatch`   |  규칙이 수신 대기 중인 주제에 게시되는 수신 메시지 수. `RuleName` 차원에는 규칙 이름이 포함됩니다.  | 

## 규칙 작업 지표
<a name="rule-action-metrics"></a>


| 지표 | 설명 | 
| --- | --- | 
|   `Failure`   |  실패한 규칙 작업 호출 수. `RuleName` 차원에는 작업을 지정하는 규칙 이름이 포함됩니다. `ActionType` 차원에는 호출된 작업 유형이 포함됩니다.  | 
|   `Success`   |  성공한 규칙 작업 호출 수. `RuleName` 차원에는 작업을 지정하는 규칙 이름이 포함됩니다. `ActionType` 차원에는 호출된 작업 유형이 포함됩니다.  | 
|  ErrorActionFailure  | 실패한 오류 작업 수 RuleName 차원에는 작업을 지정하는 규칙 이름이 포함됩니다. ActionType 차원에는 호출된 작업 유형이 포함됩니다. | 
|  ErrorActionSuccess  | 성공한 오류 작업 수 RuleName 차원에는 작업을 지정하는 규칙 이름이 포함됩니다. ActionType 차원에는 호출된 작업 유형이 포함됩니다. | 

## HTTP 작업별 지표
<a name="http-action-metrics"></a>


| 지표 | 설명 | 
| --- | --- | 
|   `HttpCode_Other`   |  다운스트림 웹 서비스/애플리케이션의 응답 상태 코드가 2xx, 4xx 또는 5xx가 아닌 경우 생성됩니다.  | 
|   `HttpCode_4XX`   |  다운스트림 웹 서비스/애플리케이션의 응답 상태 코드가 400에서 499 사이인 경우 생성됩니다.  | 
|   `HttpCode_5XX`   |  다운스트림 웹 서비스/애플리케이션의 응답 상태 코드가 500에서 599 사이인 경우 생성됩니다.  | 
|   `HttpInvalidUrl`   |  대체 템플릿이 바뀐 후 엔드포인트 URL이 `https://`로 시작하지 않는 경우 생성됩니다.  | 
|   `HttpRequestTimeout`   |  다운스트림 웹 서비스/애플리케이션이 요청 제한 시간 내에 응답을 반환하지 않는 경우 생성됩니다. 자세한 내용은 [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#limits_iot)를 참조하세요.  | 
|   `HttpUnknownHost`   |  URL이 유효하지만 서비스가 존재하지 않거나 연결할 수 없는 경우 생성됩니다.  | 

## 메시지 브로커 지표
<a name="message-broker-metrics"></a>

**참고**  
메시지 브로커 지표는 **프로토콜 지표** 아래의 CloudWatch 콘솔에 표시됩니다.


| 지표 | 설명 | 
| --- | --- | 
|   `Connect.AuthError`   |  메시지 브로커에서 권한을 부여할 수 없는 연결 요청 수. `Protocol` 차원에는 `CONNECT` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Connect.ClientError`   |  MQTT 메시지가 [AWS IoT 할당량](limits-iot.md)에 정의된 요구 사항을 충족하지 않아 거부된 연결 요청 수입니다. `Protocol` 차원에는 `CONNECT` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Connect.ClientIDThrottle`   |  클라이언트가 특정 클라이언트 ID에 대해 허용되는 연결 요청 빈도를 초과하기 때문에 제한된 연결 요청 수입니다. `Protocol` 차원에는 `CONNECT` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Connect.ServerError`   |  내부 오류가 발생하여 실패한 연결 요청 수. `Protocol` 차원에는 `CONNECT` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Connect.Success`   |  메시지 브로커에 대한 성공적인 연결 수. `Protocol` 차원에는 `CONNECT` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Connect.Throttle`   |  계정이 허용되는 연결 요청 빈도를 초과하여 병목 현상이 발생한 연결 요청 수. `Protocol` 차원에는 `CONNECT` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Ping.Success`   |  메시지 브로커에 수신된 ping 메시지 수. `Protocol` 차원에는 ping 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `PublishIn.AuthError`   |  메시지 브로커가 권한을 부여할 수 없는 게시 요청 수. `Protocol` 차원에는 메시지를 게시하는 데 사용된 프로토콜이 포함됩니다. HTTP 게시에서는 이 지표가 지원되지 않습니다.  | 
|   `PublishIn.ClientError`   |  메시지가에 정의된 요구 사항을 충족하지 않아 메시지 브로커가 거부한 게시 요청 수입니다[AWS IoT 할당량](limits-iot.md). `Protocol` 차원에는 메시지를 게시하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `PublishIn.ServerError`   |  내부 오류로 인해 메시지 브로커가 처리하지 못한 게시 요청 수. `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `PublishIn.Success`   |  메시지 브로커가 성공적으로 처리한 게시 요청 수. `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `PublishIn.Throttle`   |  클라이언트가 허용되는 인바운드 메시지 빈도를 초과하여 병목 현상이 발생한 게시 요청 수. `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다. HTTP 게시에서는 이 지표가 지원되지 않습니다.  | 
|   `PublishOut.AuthError`   |   AWS IoT가 권한을 부여할 수 없는 메시지 브로커의 게시 요청 수. `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `PublishOut.ClientError`   |  메시지가에 정의된 요구 사항을 충족하지 않아 거부된 메시지 브로커의 게시 요청 수입니다[AWS IoT 할당량](limits-iot.md). `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `PublishOut.Success`   |  메시지 브로커의 성공적인 게시 요청 수. `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|  PublishOut.Throttle  |  클라이언트가 허용되는 아웃바운드 메시지 빈도를 초과하여 병목 현상이 발생한 게시 요청 수입니다. `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `PublishRetained.AuthError`   |  메시지 브로커가 권한을 부여할 수 없고 `RETAIN` 플래그가 설정된 게시 요청 수. `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|  PublishRetained.ServerError  |  내부 오류로 인해 메시지 브로커가 처리하지 못한 유지된 게시 요청 수. `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `PublishRetained.Success`   |  메시지 브로커가 성공적으로 처리하고 `RETAIN` 플래그가 설정된 게시 요청 수. `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `PublishRetained.Throttle`   |  클라이언트가 허용되는 인바운드 메시지 빈도를 초과하여 병목 현상이 발생하고 `RETAIN` 플래그가 설정된 게시 요청 수. `Protocol` 차원에는 `PUBLISH` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Queued.Success`   |  영구 세션에서 연결이 끊긴 클라이언트에 대해 메시지 브로커가 성공적으로 처리한 저장된 메시지 수입니다. QoS가 1인 메시지는 영구 세션이 있는 클라이언트의 연결이 끊긴 동안 저장됩니다.  | 
|   `Queued.Throttle`   |  영구 세션이 있는 클라이언트의 연결이 끊긴 동안 저장할 수 없고 제한된 메시지 수입니다. 클라이언트가 [계정당 초당 대기 중 메시지](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#genref_queued_messages_per_second_per_account) 제한을 초과할 때 발생합니다. QoS가 1인 메시지는 영구 세션이 있는 클라이언트의 연결이 끊긴 동안 저장됩니다.  | 
|   `Queued.ServerError`   |  내부 오류로 인해 영구 세션에 대해 저장되지 않은 메시지 수입니다. 영구 세션이 있는 클라이언트의 연결이 끊어지면 서비스 품질(QoS)이 1인 메시지가 저장됩니다.  | 
|   `Subscribe.AuthError`   |  권한을 부여할 수 없는 클라이언트의 구독 요청 수. `Protocol` 차원에는 `SUBSCRIBE` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Subscribe.ClientError`   |  `SUBSCRIBE` 메시지가 [AWS IoT 할당량](limits-iot.md)에 정의된 요구 사항을 충족하지 않아 거부된 구독 요청 수입니다. `Protocol` 차원에는 `SUBSCRIBE` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Subscribe.ServerError`   |  내부 오류가 발생하여 거부된 구독 요청 수. `Protocol` 차원에는 `SUBSCRIBE` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Subscribe.Success`   |  메시지 브로커가 성공적으로 처리한 구독 요청 수. `Protocol` 차원에는 `SUBSCRIBE` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Subscribe.Throttle`   |   AWS 계정의 허용되는 구독 요청 빈도 제한을 초과하여 스로틀링이 발생한 구독 요청 수입니다. 이러한 제한에는 계정당 초당 구독, 계정당 구독, [AWS IoT Core message broker and protocol limits and quotas](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#message-broker-limits)에 설명된 연결당 구독이 포함됩니다. `Protocol` 차원에는 `SUBSCRIBE` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|  Throttle.Exceeded  | 이 지표는 MQTT 클라이언트가 [연결 수준당 초당 패킷](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#message-broker-limits)에서 제한될 때 CloudWatch에 표시됩니다. 이 지표는 HTTP 연결에는 적용되지 않습니다. | 
|   `Unsubscribe.ClientError`   |  `UNSUBSCRIBE` 메시지가 [AWS IoT 할당량](limits-iot.md)에 정의된 요구 사항을 충족하지 않아 거부된 구독 취소 요청 수입니다. `Protocol` 차원에는 `UNSUBSCRIBE` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Unsubscribe.ServerError`   |  내부 오류가 발생하여 거부된 구독 취소 요청 수. `Protocol` 차원에는 `UNSUBSCRIBE` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Unsubscribe.Success`   |  메시지 브로커가 성공적으로 처리한 구독 취소 요청 수. `Protocol` 차원에는 `UNSUBSCRIBE` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `Unsubscribe.Throttle`   |  클라이언트가 허용되는 구독 취소 요청 빈도를 초과하여 거부된 구독 취소 요청 수. `Protocol` 차원에는 `UNSUBSCRIBE` 메시지를 전송하는 데 사용된 프로토콜이 포함됩니다.  | 

## 디바이스 섀도우 지표
<a name="shadow-metrics"></a>

**참고**  
디바이스 섀도우 지표는 **프로토콜 지표** 아래의 CloudWatch 콘솔에 표시됩니다.


| 지표 | 설명 | 
| --- | --- | 
|   `DeleteThingShadow.Accepted`   |  성공적으로 처리된 `DeleteThingShadow` 요청 수입니다. `Protocol` 차원에는 요청하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `GetThingShadow.Accepted`   |  성공적으로 처리된 `GetThingShadow` 요청 수입니다. `Protocol` 차원에는 요청하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `ListThingShadow.Accepted`   |  성공적으로 처리된 `ListThingShadow` 요청 수입니다. `Protocol` 차원에는 요청하는 데 사용된 프로토콜이 포함됩니다.  | 
|   `UpdateThingShadow.Accepted`   |  성공적으로 처리된 `UpdateThingShadow` 요청 수입니다. `Protocol` 차원에는 요청하는 데 사용된 프로토콜이 포함됩니다.  | 

## 지표 로깅
<a name="logging-metrics"></a>


| 지표 | 설명 | 
| --- | --- | 
|  `CloudwatchLogs:LogGroupCreationFailed`  |  `CreateLogGroup` 요청 실패 횟수입니다. AWS IoT Logging은 존재하지 않는 경우 CloudWatch 로그 그룹을 생성합니다. `LogGroup` 차원에는 요청을 수행하는 데 사용되는 로그 그룹이 포함됩니다.  | 
|  `CloudwatchLogs:LogStreamCreationFailed`  |  `CreateLogStream` 요청 실패 횟수입니다. AWS IoT 로깅은 CloudWatch 로그 스트림을 생성하여 로그 이벤트를 푸시합니다. `LogGroup` 차원에는 요청을 수행하는 데 사용되는 로그 그룹이 포함됩니다.  | 
|  `CloudwatchLogs:PutRetentionPolicyFailed`  |  `PutRetentionPolicy` 요청 실패 횟수입니다. AWS IoT Logging은 존재하지 않는 경우 CloudWatch 로그 그룹을 생성하고 보존 정책은 30일로 설정됩니다. `LogGroup` 차원에는 요청을 수행하는 데 사용되는 로그 그룹이 포함됩니다.  | 
|  `CloudwatchLogs:PutLogEventsFailed`  |  `PutLogEvents` 요청 실패 횟수입니다. `LogGroup` 차원에는 요청을 수행하는 데 사용되는 CloudWatch 로그 그룹이 포함됩니다.  | 

## Jobs 지표
<a name="jobs-metrics"></a>


| 지표 | 설명 | 
| --- | --- | 
|  `CanceledJobExecutionCount`  |  CloudWatch에 의해 결정된 기간 안에 상태가 `CANCELED`로 변경된 작업 실행의 수입니다. (CloudWatch 지표에 대한 자세한 정보는 [Amazon CloudWatch 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)를 참조하세요.) `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `CanceledJobExecutionTotalCount`   |  해당 작업에 대해 상태가 `CANCELED`인 총 작업 실행 수. `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `ClientErrorCount`   |  작업을 실행하는 동안 발생한 클라이언트 오류 수. `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `FailedJobExecutionCount`   |  CloudWatch에 의해 결정된 기간 안에 상태가 `FAILED`로 변경된 작업 실행의 수입니다. (CloudWatch 지표에 대한 자세한 정보는 [Amazon CloudWatch 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)를 참조하세요.) `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `FailedJobExecutionTotalCount`   |  해당 작업에 대해 상태가 `FAILED`인 총 작업 실행 수. `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `InProgressJobExecutionCount`   |  CloudWatch에 의해 결정된 기간 안에 상태가 `IN_PROGRESS`로 변경된 작업 실행의 수입니다. (CloudWatch 지표에 대한 자세한 정보는 [Amazon CloudWatch 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)를 참조하세요.) `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `InProgressJobExecutionTotalCount`   |  해당 작업에 대해 상태가 `IN_PROGRESS`인 총 작업 실행 수. `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `RejectedJobExecutionTotalCount`   |  해당 작업에 대해 상태가 `REJECTED`인 총 작업 실행 수. `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `RemovedJobExecutionTotalCount`   |  해당 작업에 대해 상태가 `REMOVED`인 총 작업 실행 수. `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `QueuedJobExecutionCount`   |  CloudWatch에 의해 결정된 기간 안에 상태가 `QUEUED`로 변경된 작업 실행의 수입니다. (CloudWatch 지표에 대한 자세한 정보는 [Amazon CloudWatch 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)를 참조하세요.) `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `QueuedJobExecutionTotalCount`   |  해당 작업에 대해 상태가 `QUEUED`인 총 작업 실행 수. `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `RejectedJobExecutionCount`   |  CloudWatch에 의해 결정된 기간 안에 상태가 `REJECTED`로 변경된 작업 실행의 수입니다. (CloudWatch 지표에 대한 자세한 정보는 [Amazon CloudWatch 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)를 참조하세요.) `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `RemovedJobExecutionCount`   |  CloudWatch에 의해 결정된 기간 안에 상태가 `REMOVED`로 변경된 작업 실행의 수입니다. (CloudWatch 지표에 대한 자세한 정보는 [Amazon CloudWatch 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)를 참조하세요.) `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `ServerErrorCount`   |  작업을 실행하는 동안 발생한 서버 오류 수. `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `SuccededJobExecutionCount`   |  CloudWatch에 의해 결정된 기간 안에 상태가 `SUCCESS`로 변경된 작업 실행의 수입니다. (CloudWatch 지표에 대한 자세한 정보는 [Amazon CloudWatch 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)를 참조하세요.) `JobId` 차원에는 작업 ID가 포함됩니다.  | 
|   `SuccededJobExecutionTotalCount`   |  해당 작업에 대해 상태가 `SUCCESS`인 총 작업 실행 수. `JobId` 차원에는 작업 ID가 포함됩니다.  | 

## Device Defender Audit 지표
<a name="device-defender-audit-metrics"></a>


| 지표 | 설명 | 
| --- | --- | 
|   `NonCompliantResources`   |  점검을 통해 규정 미준수로 확인된 리소스 수입니다. 시스템은 수행된 감사의 각 점검 항목에 대해 규정 미준수 리소스 수를 보고합니다.  | 
|   `ResourcesEvaluated`   |  규정 준수에 대해 평가된 리소스 수입니다. 시스템은 수행된 감사의 각 점검 항목에 대해 평가된 리소스 수를 보고합니다.  | 
|   `MisconfiguredDeviceDefenderNotification`   |  에 대한 SNS 구성 AWS IoT Device Defender 이 잘못 구성되면 알려줍니다.  [Dimensions](#aws-iot-metricdimensions)   | 

## Device Defender Detect 지표
<a name="device-defender-detect-metrics"></a>


| 지표 | 설명 | 
| --- | --- | 
|   `NumOfMetricsExported`    |  클라우드 측, 디바이스 측 또는 사용자 지정 지표에 대해 내보낸 지표의 수입니다. 시스템은 특정 지표를 바탕으로 계정에 대해 내보낸 지표의 수를 보고합니다. 이 지표는 지표 내보내기를 이용하는 고객에게만 제공됩니다.  | 
|   `NumOfMetricsSkipped`   |  클라우드 측, 디바이스 측 또는 사용자 지정 지표에 대해 건너뛴 지표의 수입니다. 시스템은 Device Defender Detect에 mqtt 주제에 게시할 수 있는 권한이 충분하지 않아 특정 지표에 대해 계정에서 건너뛰는 지표의 수를 보고합니다. 이 지표는 지표 내보내기를 이용하는 고객에게만 제공됩니다.  | 
|   `NumOfMetricsExceedingSizeLimit`   |  크기가 MQTT 메시지 크기 제한을 초과하여 클라우드 측, 디바이스 측 또는 사용자 지정 지표에 대해 내보내기를 건너뛴 지표 수입니다. 시스템은 크기가 MQTT 메시지 크기 제한을 초과하여 특정 지표에 대해 계정 내보내기를 건너뛰는 지표의 수를 보고합니다. 이 지표는 지표 내보내기를 이용하는 고객에게만 제공됩니다.  | 
|   `Violations`   |  마지막으로 평가가 수행된 시간 이후에 발견된 보안 프로필 동작의 새로운 위반 수입니다. 시스템은 계정, 특정 보안 프로필 및 특정 보안 프로필의 특정 동작에 대해 새로운 위반 수를 보고합니다.  | 
|   `ViolationsCleared`   |  마지막으로 평가가 수행된 시간 이후에 해결된 보안 프로필 동작의 위반 수입니다. 시스템은 계정, 특정 보안 프로필과 보안 프로필의 특정 동작에 대해 해결된 위반 수를 보고합니다.  | 
|   `ViolationsInvalidated`   |  마지막으로 평가가 수행된 시간 이후에 더 이상 정보를 사용할 수 없는(보고 디바이스가 보고를 중단했거나 어떠한 이유로든 더 이상 모니터링되지 않기 때문에) 보안 프로필 동작의 위반 수입니다. 시스템은 전체 계정, 특정 보안 프로필과 보안 프로필의 특정 동작에 대해 무효화된 위반 수를 보고합니다.  | 
|   `MisconfiguredDeviceDefenderNotification`   |  에 대한 SNS 구성 AWS IoT Device Defender 이 잘못 구성되면 알려줍니다.  [Dimensions](#aws-iot-metricdimensions)   | 

## 디바이스 프로비저닝 지표
<a name="provisioning-metrics"></a>


**AWS IoT 플릿 프로비저닝 지표**  

| 지표 | 설명 | 
| --- | --- | 
|   `ApproximateNumberOfThingsRegistered`   |  플릿 프로비저닝에 의해 등록된 사물의 개수입니다. 카운트는 일반적으로 정확하지만 AWS IoT Core 의 분산 아키텍처로 인해 등록된 사물의 정확한 개수를 유지하기 어렵습니다. 이 지표에 사용하는 통계는 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/metrics_dimensions.html)  차원: [ClaimCertificateId](#aws-iot-metricdimensions)   | 
|   `CreateKeysAndCertificateFailed`   |  `CreateKeysAndCertificate` MQTT API를 호출할 때 발생한 실패 횟수입니다. 지표는 성공(값 = 0) 및 실패(값 = 1) 사례 모두에서 내보내집니다. 이 지표는 CloudWatch 지원 집계 기간 동안(예: 5분 또는 1시간) 생성 및 등록된 인증서 수를 추적하는 데 사용할 수 있습니다. 이 지표에 사용할 수 있는 통계는 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/metrics_dimensions.html)  | 
|   `CreateCertificateFromCsrFailed`   |  `CreateCertificateFromCsr` MQTT API를 호출할 때 발생한 실패 횟수입니다. 지표는 성공(값 = 0) 및 실패(값 = 1) 사례 모두에서 내보내집니다. 이 지표는 CloudWatch 지원 집계 기간(예: 5분 또는 1시간) 동안 등록된 사물 수를 추적하는 데 사용할 수 있습니다. 이 지표에 사용할 수 있는 통계는 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/metrics_dimensions.html)  | 
|   `RegisterThingFailed`   |  `RegisterThing` MQTT API를 호출할 때 발생한 실패 횟수입니다. 지표는 성공(값 = 0) 및 실패(값 = 1) 사례 모두에서 내보내집니다. 이 지표는 CloudWatch 지원 집계 기간(예: 5분 또는 1시간) 동안 등록된 사물 수를 추적하는 데 사용할 수 있습니다. 등록된 총 사물 수는 `ApproximateNumberOfThingsRegistered` 지표를 참조하세요. 이 지표에 사용할 수 있는 통계는 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/metrics_dimensions.html) 차원: [TemplateName](#aws-iot-metricdimensions)   | 


**JIT 프로비저닝 지표**  

| 지표 | 설명 | 
| --- | --- | 
|   `ProvisionThing.ClientError`   |  클라이언트 오류로 인해 디바이스를 프로비저닝하지 못한 횟수입니다. 예를 들어 템플릿에 지정된 정책이 존재하지 않습니다.  | 
|  ProvisionThing.ServerError  |  서버 오류로 인해 디바이스를 프로비저닝하지 못한 횟수입니다. 고객은 대기 후 디바이스 프로비저닝을 다시 시도할 수 있으며 문제가 동일하게 유지되는 경우 AWS IoT 에 문의할 수 있습니다.  | 
|  ProvisionThing.Success  |  디바이스가 성공적으로 프로비저닝된 횟수입니다.  | 

## LoRaWAN 지표
<a name="lorawan-metrics"></a>

다음 표에는에 대한 지표가 나와 있습니다 AWS IoT Core for LoRaWAN. 자세한 내용은 [AWS IoT Core for LoRaWAN 지표](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan-metrics.html)를 참조하세요.


**AWS IoT Core for LoRaWAN 지표**  

| 지표 | 설명 | 
| --- | --- | 
|  활성 디바이스/게이트웨이  |  계정의 활성 LoRaWAN 디바이스 및 게이트웨이 수입니다.  | 
|  업링크 메시지 수  |   AWS 계정의 모든 활성 게이트웨이 및 디바이스에 대해 지정된 기간 내에 전송되는 업링크 메시지 수입니다. 업링크 메시지는 디바이스에서 로 전송되는 메시지입니다 AWS IoT Core for LoRaWAN.  | 
|  다운링크 메시지 수  |   AWS 계정의 모든 활성 게이트웨이 및 디바이스에 대해 지정된 기간 내에 전송되는 다운링크 메시지 수입니다. 다운링크 메시지는에서 디바이스 AWS IoT Core for LoRaWAN 로 전송되는 메시지입니다.  | 
|  메시지 손실률  |  디바이스를 추가하고에 연결한 후 디바이스는 업링크 메시지를 시작하여 클라우드와 메시지 교환을 시작할 수 AWS IoT Core for LoRaWAN있습니다. 이 지표를 사용하여 손실된 업링크 메시지의 속도를 추적할 수 있습니다.  | 
|  조인 지표  |  디바이스와 게이트웨이를 추가한 후 디바이스가 업링크 데이터를 전송하고 통신할 수 있도록 조인 절차를 수행합니다 AWS IoT Core for LoRaWAN. 이 지표를 사용하여 AWS 계정의 모든 활성 디바이스의 조인 지표에 대한 정보를 얻을 수 있습니다.  | 
|  평균 수신 신호 강도 표시기(RSSI)  |  이 지표를 사용하여 지정된 기간 내에 평균 RSSI(수신 신호 강도 표시기)를 모니터링할 수 있습니다. RSSI는 신호가 양호한 무선 연결을 위해 충분히 강력한지 여부를 나타내는 측정치입니다. 이 값은 음수이며 강력한 연결을 위해서는 0에 가까워야 합니다.  | 
|  평균 신호 대 잡음비(SNR)  |  이 지표를 사용하여 지정된 기간 내에 평균 SNR(신호 대 잡음비)을 모니터링할 수 있습니다. SNR은 수신된 신호가 양호한 무선 연결을 위한 노이즈 수준에 비해 충분히 강력한지 여부를 나타내는 측정치입니다. SNR 값은 양수이며 신호 출력이 노이즈 출력보다 강력함을 나타내려면 0보다 커야 합니다.  | 
|  게이트웨이 가용성  |  이 지표를 사용하여 지정된 기간 내에 이 게이트웨이의 가용성에 대한 정보를 얻을 수 있습니다. 이 지표는 지정된 기간 동안 이 게이트웨이의 웹 소켓 연결 시간을 표시합니다.  | 


**JIT 프로비저닝 지표**  

| 지표 | 설명 | 
| --- | --- | 
|   `ProvisionThing.ClientError`   |  클라이언트 오류로 인해 디바이스를 프로비저닝하지 못한 횟수입니다. 예를 들어 템플릿에 지정된 정책이 존재하지 않습니다.  | 
|  ProvisionThing.ServerError  |  서버 오류로 인해 디바이스를 프로비저닝하지 못한 횟수입니다. 고객은 대기 후 디바이스 프로비저닝을 다시 시도할 수 있으며 문제가 동일하게 유지되는 경우 AWS IoT 에 문의할 수 있습니다.  | 
|  ProvisionThing.Success  |  디바이스가 성공적으로 프로비저닝된 횟수입니다.  | 

## 플릿 인덱싱 지표
<a name="fleet-indexing-metrics"></a>


**AWS IoT 플릿 인덱싱 지표**  

| 지표 | 설명 | 
| --- | --- | 
|   `NamedShadowCountForDynamicGroupQueryLimitExceeded`   |  동적 사물 그룹에서 특정 데이터 소스가 아닌 쿼리 용어에 대해 사물당 최대 25개의 명명된 섀도우가 처리됩니다. 사물에 대해 이 제한이 위반되면 `NamedShadowCountForDynamicGroupQueryLimitExceeded` 이벤트 유형이 내보내집니다.  | 

## 지표 차원
<a name="aws-iot-metricdimensions"></a>


**지표는 네임스페이스를 사용하며 다음 차원의 지표를 제공합니다.**  

| 차원 | 설명 | 
| --- | --- | 
|  ActionType  |  요청에 따라 트리거되는 규칙에서 지정한 [작업 유형](iot-rule-actions.md).  | 
|   `BehaviorName`   |  모니터링되고 있는 Device Defender Detect 보안 프로필 동작의 이름입니다.  | 
|   `ClaimCertificateId`   |  장치를 프로비저닝하는 데 사용된 클레임의 `certificateId`입니다.  | 
|   `CheckName`   |  결과가 모니터링되고 있는 Device Defender 감사 점검 항목의 이름입니다.  | 
|   `JobId`   |  진행 상황이나 메시지 연결 성공/실패를 모니터링 중인 작업의 ID.  | 
|   `Protocol`   |  요청에 사용된 프로토콜. 유효 값: MQTT 또는 HTTP  | 
|   `RuleName`   |  요청에 따라 트리거되는 규칙 이름  | 
|   `ScheduledAuditName`   |  점검 결과가 모니터링되고 있는 Device Defender 예정된 감사의 이름입니다. 보고된 결과가 온디맨드로 수행된 감사에 대한 결과인 경우 이 이름에 `OnDemand`라는 값이 있습니다.  | 
|   `SecurityProfileName`   |  동작이 모니터링되고 있는 Device Defender Detect 보안 프로필의 이름입니다.  | 
|   `TemplateName`   |  프로비저닝 템플릿의 이름입니다.  | 
|  SourceArn  | 탐지를 위한 보안 프로필 또는 감사를 위한 계정 arn을 참조합니다. | 
|   `RoleArn`   |  Device Defender가 수임하려고 시도한 역할을 나타냅니다.  | 
|   `TopicArn`   |  Device Defender가 게시하려고 시도한 SNS 주제를 참조합니다.  | 
|   `Error`   | SNS 주제에 게시하려고 시도하는 동안 수신된 오류에 대한 간단한 설명을 제공합니다. 가능한 값은 다음과 같습니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/metrics_dimensions.html)  | 

# CloudWatch Logs AWS IoT 를 사용하여 모니터링
<a name="cloud-watch-logs"></a>

[AWS IoT 로깅이 활성화](configure-logging.md)되면는 메시지 브로커 및 규칙 엔진을 통해 디바이스에서 전달되는 각 메시지에 대한 진행 이벤트를 AWS IoT 보냅니다. [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)에서 CloudWatch Logs는 **AWSIotLogs**라는 로그 그룹에 나타납니다.

CloudWatch Logs에 대한 자세한 내용은 [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)를 참조하세요. 지원되는 AWS IoT CloudWatch Logs에 대한 자세한 내용은 [CloudWatch Logs AWS IoT 로그 항목](cwl-format.md) 섹션을 참조하세요.

## CloudWatch 콘솔에서 AWS IoT 로그 보기
<a name="viewing-logs"></a>

**참고**  
`AWSIotLogsV2` 로그 그룹은 다음에 해당될 때까지 CloudWatch 콘솔에 표시되지 않습니다.  
로그인을 활성화했습니다 AWS IoT. 로그인을 활성화하는 방법에 대한 자세한 내용은 섹션을 참조하세요 AWS IoT. [AWS IoT 로깅 구성](configure-logging.md) 
일부 로그 항목은 AWS IoT 작업에 의해 작성되었습니다.

**CloudWatch 콘솔에서 AWS IoT 로그를 보려면**

1.  [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)로 이동합니다. 탐색 창에서 **로그 그룹**을 선택합니다.

1. **필터** 텍스트 상자에 **AWSIotLogsV2**을 입력한 후 Enter 키를 누릅니다.

1. `AWSIotLogsV2` 로그 그룹을 두 번 클릭합니다.

1. **모두 검색(Search All)**을 선택합니다. 계정에 대해 생성된 AWS IoT 로그의 전체 목록이 표시됩니다.

1. 확장 아이콘을 선택하여 개별 스트림을 확인합니다.

**이벤트 필터링** 텍스트 상자에 쿼리를 입력할 수도 있습니다. 몇 가지 시도해볼 만한 쿼리는 다음과 같습니다.
+  `{ $.logLevel = "INFO" }` 

   로그 수준이 `INFO`인 로그를 모두 찾습니다.
+  `{ $.status = "Success" }` 

   상태가 `Success`인 로그를 모두 찾습니다.
+  `{ $.status = "Success" && $.eventType = "GetThingShadow" }` 

   상태가 `Success`이고, 이벤트 유형이 `GetThingShadow`인 로그를 모두 찾습니다.

필터 표현식 작성에 대한 자세한 내용은 [CloudWatch Logs 쿼리](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html) 단원을 참조하세요.

# CloudWatch Logs AWS IoT 로그 항목
<a name="cwl-format"></a>

의 각 구성 요소는 고유한 로그 항목을 AWS IoT 생성합니다. 각 로그 항목에는 로그 항목이 생성되도록 한 작업을 지정하는 `eventType`이 있습니다. 이번 단원에서는 다음 AWS IoT 구성 요소에서 작성되는 로그 항목에 대해 설명합니다.

**Topics**
+ [메시지 브로커 로그 항목](#message-broker-logs)
+ [서버 인증서 OCSP 로그 항목](#server-ocsp-logs)
+ [Device Shadow 로그 항목](#device-shadow-logs)
+ [Rules engine 로그 항목](#rule-engine-logs)
+ [Job 로그 항목](#job-logs)
+ [Device provisioning 로그 항목](#provision-logs)
+ [Dynamic thing group 로그 항목](#dynamic-group-logs)
+ [플릿 인덱싱 로그 항목](#fleet-indexing-logs)
+ [일반적인 CloudWatch Logs 속성](#cwl-common-attributes)

## 메시지 브로커 로그 항목
<a name="message-broker-logs"></a>

 AWS IoT 메시지 브로커는 다음 이벤트에 대한 로그 항목을 생성합니다.

**Topics**
+ [Connect 로그 항목](#log-mb-connect)
+ [Disconnect 로그 항목](#log-mb-disconnect)
+ [DeleteConnection 로그 항목](#log-mb-delete-connection)
+ [GetRetainedMessage 로그 항목](#log-mb-get-retain)
+ [ListRetainedMessage 로그 항목](#log-mb-list-retain)
+ [Publish-In 로그 항목](#log-mb-publish-in)
+ [Publish-Out 로그 항목](#log-mb-publish-out)
+ [대기 중 로그 항목](#log-mb-queued)
+ [Subscribe 로그 항목](#log-mb-subscribe)
+ [로그 항목 구독 취소](#log-mb-unsubscribe)

### Connect 로그 항목
<a name="log-mb-connect"></a>

 AWS IoT 메시지 브로커는 MQTT 클라이언트가 연결`Connect`될 때 `eventType`이 인 로그 항목을 생성합니다.

#### Connect 로그 항목 예제
<a name="log-mb-connect.example"></a>

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Connect",
    "protocol": "MQTT",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`Connect` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

principalId  
요청하는 위탁자의 ID입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

sourceIp  
요청이 시작된 IP 주소입니다.

sourcePort  
요청이 시작된 포트입니다.

### Disconnect 로그 항목
<a name="log-mb-disconnect"></a>

 AWS IoT 메시지 브로커는 MQTT 클라이언트가 연결 해제될 `Disconnect` 때 `eventType`이 인 로그 항목을 생성합니다.

#### Disconnect 로그 항목 예제
<a name="log-mb-disconnect.example"></a>

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Disconnect",
    "protocol": "MQTT",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490,
    "reason": "DUPLICATE_CLIENT_ID",
    "details": "A new connection was established with the same client ID",
    "disconnectReason": "CLIENT_INITIATED_DISCONNECT"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`Disconnect` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

principalId  
요청하는 위탁자의 ID입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

sourceIp  
요청이 시작된 IP 주소입니다.

sourcePort  
요청이 시작된 포트입니다.

reason  
클라이언트가 연결을 해제하는 이유입니다.

details  
오류에 대한 간단한 설명입니다.

disconnectReason  
클라이언트가 연결을 해제하는 이유입니다.

### DeleteConnection 로그 항목
<a name="log-mb-delete-connection"></a>

 AWS IoT 메시지 브로커는 MQTT 클라이언트 연결이 삭제될 `DeleteConnection` 때 `eventType`이 인 로그 항목을 생성합니다.

#### DeleteConnection 로그 항목 예제
<a name="log-mb-delete-connection.example"></a>

```
{
    "timestamp": "2025-08-09 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "DeleteConnection",
    "protocol": "HTTP",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`DeleteConnection` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
해제될 클라이언트의 ID입니다.

principalId  
요청하는 위탁자의 ID입니다. 위탁자 ID를 사용하여 위탁자를 식별하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM ID 및 자격 증명 비교](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html)를 참조하세요.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `HTTP`입니다.

sourceIp  
요청이 시작된 IP 주소입니다.

sourcePort  
요청이 시작된 포트입니다.

### GetRetainedMessage 로그 항목
<a name="log-mb-get-retain"></a>

 AWS IoT 메시지 브로커는가 [https://docs.aws.amazon.com//iot/latest/developerguide/API_iotdata_GetRetainedMessage.html](https://docs.aws.amazon.com//iot/latest/developerguide/API_iotdata_GetRetainedMessage.html) 호출될 `GetRetainedMessage` 때 `eventType`이 인 로그 항목을 생성합니다.

#### GetRetainedMessage 로그 항목 예제
<a name="log-mb-get-retain-example"></a>

```
{
    "timestamp": "2017-08-07 18:47:56.664", 
    "logLevel": "INFO", 
    "traceId": "1a60d02e-15b9-605b-7096-a9f584a6ad3f", 
    "accountId": "123456789012", 
    "status": "Success", 
    "eventType": "GetRetainedMessage", 
    "protocol": "HTTP",
    "topicName": "a/b/c",
    "qos": "1",
    "lastModifiedDate": "2017-08-07 18:47:56.664"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`GetRetainedMessage` 로그 항목에는 다음 속성이 포함됩니다.

lastModifiedDate  
보관된 메시지가 저장된 밀리초 단위의 Epoch 날짜 및 시간입니다 AWS IoT.

protocol  
요청에 사용된 프로토콜. 유효한 값: `HTTP`.

qos  
게시 요청에 사용되는 서비스 품질(QoS) 수준입니다. 유효한 값은 `0` 또는 `1`입니다.

topicName  
구독하는 주제의 이름입니다.

### ListRetainedMessage 로그 항목
<a name="log-mb-list-retain"></a>

 AWS IoT 메시지 브로커는가 [/iot/latest/developerguide/API_iotdata_ListRetainedMessages.html](/iot/latest/developerguide/API_iotdata_ListRetainedMessages.html) 호출될 `ListRetainedMessage` 때 `eventType`이 인 로그 항목을 생성합니다.

#### ListRetainedMessage 로그 항목 예제
<a name="log-mb-list-retain-example"></a>

```
{
    "timestamp": "2017-08-07 18:47:56.664", 
    "logLevel": "INFO", 
    "traceId": "1a60d02e-15b9-605b-7096-a9f584a6ad3f", 
    "accountId": "123456789012", 
    "status": "Success", 
    "eventType": "ListRetainedMessage", 
    "protocol": "HTTP"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 로그`ListRetainedMessage` 항목에는 외에도 다음 속성이 포함됩니다.

protocol  
요청에 사용된 프로토콜. 유효한 값: `HTTP`.

### Publish-In 로그 항목
<a name="log-mb-publish-in"></a>

 AWS IoT 메시지 브로커는 MQTT 메시지를 수신하면 `eventType`이 인 로그 항목을 생성합니다`Publish-In`.

#### Publish-In 로그 항목 예제
<a name="log-mb-publish-in.example"></a>

```
{
        "timestamp": "2017-08-10 15:39:30.961",
        "logLevel": "INFO",
        "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
        "accountId": "123456789012",
        "status": "Success",
        "eventType": "Publish-In",
        "protocol": "MQTT",
        "topicName": "$aws/things/MyThing/shadow/get",
        "clientId": "abf27092886e49a8a5c1922749736453",
        "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
        "sourceIp": "205.251.233.181",
        "sourcePort": 13490,
        "retain": "True"
    }
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`Publish-In` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

principalId  
요청하는 위탁자의 ID입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

retain  
메시지에 RETAIN 플래그가 `True` 값으로 설정되어 있을 때 사용되는 속성입니다. 메시지에 RETAIN 플래그가 설정되어 있지 않으면 이 속성은 로그 항목에 나타나지 않습니다. 자세한 정보는 [MQTT 보존 메시지](mqtt.md#mqtt-retain)을 참조하십시오.

sourceIp  
요청이 시작된 IP 주소입니다.

sourcePort  
요청이 시작된 포트입니다.

topicName  
구독하는 주제의 이름입니다.

### Publish-Out 로그 항목
<a name="log-mb-publish-out"></a>

메시지 브로커는 MQTT 메시지를 게시하면 `eventType`이 `Publish-Out`인 로그 항목을 생성합니다.

#### Publish-Out 로그 항목 예제
<a name="log-mb-publish-out.example"></a>

```
{
    "timestamp": "2017-08-10 15:39:30.961",
    "logLevel": "INFO",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Publish-Out",
    "protocol": "MQTT",
    "topicName": "$aws/things/MyThing/shadow/get",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`Publish-Out` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
해당 MQTT 주제에 대한 메시지를 수신하는 구독 클라이언트의 ID입니다.

principalId  
요청하는 위탁자의 ID입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

sourceIp  
요청이 시작된 IP 주소입니다.

sourcePort  
요청이 시작된 포트입니다.

topicName  
구독하는 주제의 이름입니다.

### 대기 중 로그 항목
<a name="log-mb-queued"></a>

영구 세션이 있는 디바이스의 연결이 끊어지면 MQTT 메시지 브로커는 디바이스의 메시지를 저장하고 eventType이 인 로그 항목을 AWS IoT 생성합니다`Queued`. MQTT 영구 세션에 대한 자세한 내용은 섹션을 참조[MQTT 지속적 세션](mqtt.md#mqtt-persistent-sessions)하세요.

#### 대기 중 서버 오류 로그 항목 예제
<a name="log-mb-queued.server-error.example"></a>

```
{
    "timestamp": "2022-08-10 15:39:30.961",
    "logLevel": "ERROR",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "topicName": "$aws/things/MyThing/get",
    "clientId": "123123123",
    "qos": "1",
    "protocol": "MQTT",
    "eventType": "Queued",
    "status": "Failure",
    "details": "Server Error"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 서버`Queued` 오류 로그 항목에는 외에도 다음 속성이 포함됩니다.

clientId  
메시지가 대기할 클라이언트의 ID입니다.

details  
**`Server Error`**  
서버 오류로 인해 메시지가 저장되지 않았습니다.

protocol  
요청에 사용된 프로토콜. 값은 항상 `MQTT`입니다.

qos  
요청의 서비스 품질(QoS) 수준입니다. QoS가 0인 메시지는 저장되지 않으므로 값은 항상 1입니다.

topicName  
구독하는 주제의 이름입니다.

#### 대기 중 성공 로그 항목 예시
<a name="log-mb-queued.success.example"></a>

```
{
    "timestamp": "2022-08-10 15:39:30.961",
    "logLevel": "INFO",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "topicName": "$aws/things/MyThing/get",
    "clientId": "123123123",
    "qos": "1",
    "protocol": "MQTT",
    "eventType": "Queued",
    "status": "Success"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 성공`Queued` 로그 항목에는 외에도 다음 속성이 포함됩니다.

clientId  
메시지가 대기할 클라이언트의 ID입니다.

protocol  
요청에 사용된 프로토콜. 값은 항상 `MQTT`입니다.

qos  
요청의 서비스 품질(QoS) 수준입니다. QoS가 0인 메시지는 저장되지 않으므로 값은 항상 1입니다.

topicName  
구독하는 주제의 이름입니다.

#### 대기 중 제한된 로그 항목 예시
<a name="log-mb-queued.throttled.example"></a>

```
{
    "timestamp": "2022-08-10 15:39:30.961",
    "logLevel": "ERROR",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "topicName": "$aws/things/MyThing/get",
    "clientId": "123123123",
    "qos": "1",
    "protocol": "MQTT",
    "eventType": "Queued",
    "status": "Failure",
    "details": "Throttled while queueing offline message"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 제한 로그 항목에는 외에도`Queued` 다음 속성이 포함됩니다.

clientId  
메시지가 대기할 클라이언트의 ID입니다.

details  
**`Throttled while queueing offline message`**  
클라이언트가 ` [Queued messages per second per account](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#genref_queued_messages_per_second_per_account) ` 제한을 초과하여 메시지가 저장되지 않았습니다.

protocol  
요청에 사용된 프로토콜. 값은 항상 `MQTT`입니다.

qos  
요청의 서비스 품질(QoS) 수준입니다. QoS가 0인 메시지는 저장되지 않으므로 값은 항상 1입니다.

topicName  
구독하는 주제의 이름입니다.

### Subscribe 로그 항목
<a name="log-mb-subscribe"></a>

 AWS IoT 메시지 브로커는 MQTT 클라이언트가 주제를 구독할 `Subscribe` 때 `eventType`이 인 로그 항목을 생성합니다.

#### MQTT 3 구독 로그 항목 예시
<a name="log-mb-connect.example.subscribe"></a>

```
{
    "timestamp": "2017-08-10 15:39:04.413",
    "logLevel": "INFO",
    "traceId": "7aa5c38d-1b49-3753-15dc-513ce4ab9fa6",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Subscribe",
    "protocol": "MQTT",
    "topicName": "$aws/things/MyThing/shadow/#",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`Subscribe` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

principalId  
요청하는 위탁자의 ID입니다.

protocol  
요청에 사용된 프로토콜. 값은 항상 `MQTT`입니다.

sourceIp  
요청이 시작된 IP 주소입니다.

sourcePort  
요청이 시작된 포트입니다.

topicName  
구독하는 주제의 이름입니다.

#### MQTT 5 구독 로그 항목 예시
<a name="log-mb-connect.example.subscribe.mqtt5"></a>

```
{
	"timestamp": "2022-11-30 16:24:15.628",
	"logLevel": "INFO",
	"traceId": "7aa5c38d-1b49-3753-15dc-513ce4ab9fa6",
	"accountId": "123456789012",
	"status": "Success",
	"eventType": "Subscribe",
	"protocol": "MQTT",
	"topicName": "test/topic1,$invalid/reserved/topic",
	"subscriptions": [
		{
			"topicName": "test/topic1",
			"reasonCode": 1
		},
		{
			"topicName": "$invalid/reserved/topic",
			"reasonCode": 143
		}
	],
	"clientId": "abf27092886e49a8a5c1922749736453",
	"principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
	"sourceIp": "205.251.233.181",
	"sourcePort": 13490
}
```

MQTT 5 구독 작업의 경우, [일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 및 [MQTT 3 구독 로그 항목 속성](#log-mb-connect.example.subscribe) 외에도 MQTT 5 `Subscribe` 로그 항목에는 다음 속성이 포함됩니다.

구독  
구독 요청의 요청된 주제와 개별 MQTT 5 사유 코드 간의 매핑 목록입니다. 자세한 내용은 [MQTT 사유 코드](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html#mqtt5-reason-codes)를 참조하세요.

### 로그 항목 구독 취소
<a name="log-mb-unsubscribe"></a>

 AWS IoT 메시지 브로커는 MQTT 클라이언트가 MQTT 주제 구독을 취소할 `Unsubscribe` 때 `eventType`이 인 로그 항목을 생성합니다.

#### MQTT 구독 취소 로그 항목 예시
<a name="log-mb-connect.example.unsubscribe"></a>

```
{
    "timestamp": "2024-08-20 22:53:32.844",
    "logLevel": "INFO",
    "traceId": "db6bd09a-2c3f-1cd2-27cc-fd6b1ce03b58",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Unsubscribe",
    "protocol": "MQTT",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`Unsubscribe` 로그 항목에는 다음 속성이 포함됩니다.

protocol  
요청에 사용된 프로토콜. 값은 항상 `MQTT`입니다.

clientId  
요청하는 클라이언트의 ID입니다.

principalId  
요청하는 위탁자의 ID입니다.

sourceIp  
요청이 시작된 IP 주소입니다.

sourcePort  
요청이 시작된 포트입니다.

## 서버 인증서 OCSP 로그 항목
<a name="server-ocsp-logs"></a>

AWS IoT Core 는 다음 이벤트에 대한 로그 항목을 생성합니다.

**Topics**
+ [RetrieveOCSPStapleData 로그 항목](#log-retrieve-ocsp-staple)
+ [프라이빗 엔드포인트에 대한 RetrieveOCSPStapleData 로그 항목](#log-retrieve-ocsp-staple-private-endpoint)

### RetrieveOCSPStapleData 로그 항목
<a name="log-retrieve-ocsp-staple"></a>

AWS IoT Core 는 서버가 OCSP 스테이플 데이터를 검색할 `eventType` `RetrieveOCSPStapleData` 때이 인 로그 항목을 생성합니다.

#### RetrieveOCSPStapleData 로그 항목 예시
<a name="log-retrieve-ocsp-staple.example"></a>

다음은 `Success`의 로그 항목 예시입니다.

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "INFO",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Success",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
	"connectionDetails": {
		"httpStatusCode": "200",
		"ocspResponderUri": "http://ocsp.example.com",
		"sourceIp": "205.251.233.181",
		"targetIp": "250.15.5.3"
	},
	"ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	},
	"ocspResponseDetails": {
		"responseCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01",
		"ocspResponseStatus": "successful",
		"certStatus": "good",
		"signature": "4C:6F:63:61:6C:20:52:65:73:70:6F:6E:64:65:72:20:53:69:67:6E:61:74:75:72:65",
		"thisUpdateTime": "Jan 31 01:21:02 2024 UTC",
		"nextUpdateTime": "Feb 02 00:21:02 2024 UTC",
		"producedAtTime": "Jan 31 01:37:03 2024 UTC",
		"stapledDataPayloadSize": "XXX"
	}
}
```

다음은 `Failure`의 로그 항목 예시입니다.

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "ERROR",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Failure",
	"reason": "A non 2xx HTTP response was received from the OCSP responder.",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
	"connectionDetails": {
		"httpStatusCode": "444",
		"ocspResponderUri": "http://ocsp.example.com",
		"sourceIp": "205.251.233.181",
		"targetIp": "250.15.5.3"
	},
	"ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	}
}
```

`RetrieveOCSPStaple` 작업의 경우 [일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도 로그 항목에는 다음 속성이 포함됩니다.

reason  
작업이 실패하는 이유입니다.

domainConfigName  
도메인 구성의 이름입니다.

connectionDetails  
연결 세부 정보에 대한 간략한 설명입니다.  
+ httpStatusCode

  서버에 대한 클라이언트의 요청에 따라 OCSP 응답기가 반환하는 HTTP 상태 코드입니다.
+ ocspResponderUri

  서버 인증서에서 AWS IoT Core 가져오는 OCSP 응답기 URI입니다.
+ sourceIp

   AWS IoT Core 서버의 소스 IP 주소입니다.
+ targetIp

  OCSP 응답기의 대상 IP 주소입니다.

ocspRequestDetails  
OCSP 요청의 세부 정보입니다.  
+ requesterName

  OCSP 응답기에 요청을 보내는 AWS IoT Core 서버의 식별자입니다.
+ requestCertId

  요청의 인증서 ID입니다. OCSP 응답이 요청되는 인증서의 ID입니다.

ocspResponseDetails  
OCSP 응답의 세부 정보입니다.  
+ responseCertId

  OCSP 응답의 인증서 ID입니다.
+ ocspResponseStatus

  OCSP 응답의 상태입니다.
+ certStatus

  인증서의 상태입니다.
+ signature

  신뢰할 수 있는 엔터티가 응답에 적용하는 서명입니다.
+ thisUpdateTime

  표시되는 상태가 올바른 것으로 알려진 시간입니다.
+ nextUpdateTime

  인증서 상태에 대한 최신 정보를 사용할 수 있는 시점 또는 그 이전입니다.
+ producedAtTime

  OCSP 응답자가 이 응답에 서명한 시간입니다.
+ stapledDataPayloadSize

  스테이플링된 데이터의 페이로드 크기입니다.

### 프라이빗 엔드포인트에 대한 RetrieveOCSPStapleData 로그 항목
<a name="log-retrieve-ocsp-staple-private-endpoint"></a>

AWS IoT Core 는 서버가 OCSP 스테이플 데이터를 검색할 `eventType` `RetrieveOCSPStapleData` 때이 인 로그 항목을 생성합니다.

#### 프라이빗 엔드포인트에 대한 RetrieveOCSPStapleData 로그 항목 예시
<a name="log-retrieve-ocsp-staple-private-endpoint.example"></a>

다음은 `Success`의 로그 항목 예시입니다.

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "INFO",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Success",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
        "lambdaDetails": {
        "lambdaArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
        "sourceArn": "arn:aws:iot:us-west-2:123456789012:domainconfiguration/testDomainConfigure/6bzfg"
      },
        "authorizedResponderArn": "arn:aws:acm:us-west-2:123456789012:certificate/certificate_ID",
	"ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	},
	"ocspResponseDetails": {
		"responderId": "04:C1:3F:8F:27:D6:49:13:F8:DE:B2:36:9D:85:8E:F8:31:3B:A6:D0"
               "responseCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01",
		"ocspResponseStatus": "successful",
		"certStatus": "good",
		"signature": "4C:6F:63:61:6C:20:52:65:73:70:6F:6E:64:65:72:20:53:69:67:6E:61:74:75:72:65",
		"thisUpdateTime": "Jan 31 01:21:02 2024 UTC",
		"nextUpdateTime": "Feb 02 00:21:02 2024 UTC",
		"producedAtTime": "Jan 31 01:37:03 2024 UTC",
		"stapledDataPayloadSize": "XXX"
	}
}
```

다음은 `Failure`의 로그 항목 예시입니다.

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "ERROR",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Failure",
	"reason": "The payload returned by the Lambda function exceeds the maximum response size of 7 kilobytes.",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
        "lambdaDetails": {
        "lambdaArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
        "sourceArn": "arn:aws:iot:us-west-2:123456789012:domainconfiguration/testDomainConfigure/6bzfg"
      },
        "authorizedResponderArn": "arn:aws:acm:us-west-2:123456789012:certificate/certificate_ID",
	 "ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	}
}
```

`RetrieveOCSPStaple` 작업의 경우, [일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 및 [RetrieveOCSPStapleData 로그 항목](https://docs.aws.amazon.com//iot/latest/developerguide/cwl-format.html#log-retrieve-ocsp-staple)의 속성 외에도 프라이빗 엔드포인트의 로그 항목에는 다음 속성이 포함됩니다.

lambdaDetails  
Lambda 함수의 세부 정보입니다.  
+ lambdaArn

  Lambda 함수의 ARN입니다.
+ sourceArn

  도메인 구성의 ARN입니다.

authorizedResponderArn  
도메인 구성에 구성된 ARN이 있는 경우, 권한 부여자 응답자의 ARN입니다.

## Device Shadow 로그 항목
<a name="device-shadow-logs"></a>

 AWS IoT 디바이스 섀도우 서비스는 다음 이벤트에 대한 로그 항목을 생성합니다.

**Topics**
+ [DeleteThingShadow 로그 항목](#log-shadow-delete-thing-shadow)
+ [GetThingShadow 로그 항목](#log-shadow-get-thing-shadow)
+ [UpdateThingShadow 로그 항목](#log-shadow-update-thing-shadow)

### DeleteThingShadow 로그 항목
<a name="log-shadow-delete-thing-shadow"></a>

디바이스 섀도우 서비스는 디바이스 섀도우 삭제 요청이 수신되면 `eventType`이 `DeleteThingShadow`인 로그 항목을 작성합니다.

#### DeleteThingShadow 로그 항목 예제
<a name="log-shadow-delete-thing-shadow.example"></a>

```
{
    "timestamp": "2017-08-07 18:47:56.664",
    "logLevel": "INFO",
    "traceId": "1a60d02e-15b9-605b-7096-a9f584a6ad3f",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "DeleteThingShadow",
    "protocol": "MQTT",
    "deviceShadowName": "Jack",
    "topicName": "$aws/things/Jack/shadow/delete"
}
```

외에도 [일반적인 CloudWatch Logs 속성](#cwl-common-attributes) `DeleteThingShadow` 로그 항목에는 다음 속성이 포함됩니다.

deviceShadowName  
업데이트할 섀도우의 이름입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

topicName  
요청이 게시된 주제의 이름입니다.

### GetThingShadow 로그 항목
<a name="log-shadow-get-thing-shadow"></a>

디바이스 섀도우 서비스는 섀도우 가져오기 요청이 수신되면 `eventType`이 `GetThingShadow`인 로그 항목을 작성합니다.

#### GetThingShadow 로그 항목 예제
<a name="log-shadow-get-thing-shadow.example"></a>

```
{
    "timestamp": "2017-08-09 17:56:30.941",
    "logLevel": "INFO",
    "traceId": "b575f19a-97a2-cf72-0ed0-c64a783a2504",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "GetThingShadow",
    "protocol": "MQTT",
    "deviceShadowName": "MyThing",
    "topicName": "$aws/things/MyThing/shadow/get"
}
```

외에도 [일반적인 CloudWatch Logs 속성](#cwl-common-attributes) `GetThingShadow` 로그 항목에는 다음 속성이 포함됩니다.

deviceShadowName  
요청한 섀도우의 이름입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

topicName  
요청이 게시된 주제의 이름입니다.

### UpdateThingShadow 로그 항목
<a name="log-shadow-update-thing-shadow"></a>

디바이스 섀도우 서비스는 디바이스 섀도우 업데이트 요청이 수신되면 `eventType`이 `UpdateThingShadow`인 로그 항목을 작성합니다.

#### UpdateThingShadow 로그 항목 예제
<a name="log-shadow-update-thing-shadow.example"></a>

```
{
    "timestamp": "2017-08-07 18:43:59.436",
    "logLevel": "INFO",
    "traceId": "d0074ba8-0c4b-a400-69df-76326d414c28",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "UpdateThingShadow",
    "protocol": "MQTT",
    "deviceShadowName": "Jack",
    "topicName": "$aws/things/Jack/shadow/update"
}
```

외에도 [일반적인 CloudWatch Logs 속성](#cwl-common-attributes) `UpdateThingShadow` 로그 항목에는 다음 속성이 포함됩니다.

deviceShadowName  
업데이트할 섀도우의 이름입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

topicName  
요청이 게시된 주제의 이름입니다.

## Rules engine 로그 항목
<a name="rule-engine-logs"></a>

 AWS IoT 규칙 엔진은 다음 이벤트에 대한 로그를 생성합니다.

**Topics**
+ [FunctionExecution 로그 항목](#log-rules-fn-exec)
+ [RuleExecution 로그 항목](#log-rules-rule-ex)
+ [RuleMatch 로그 항목](#log-rules-rule-match)
+ [RuleExecutionThrottled 로그 항목](#log-rules-rule-msg-throttled)
+ [RuleNotFound 로그 항목](#log-rules-rule-not-found)
+ [StartingRuleExecution 로그 항목](#log-rules-start-rule-ex)

### FunctionExecution 로그 항목
<a name="log-rules-fn-exec"></a>

규칙 엔진은 규칙의 SQL 쿼리가 외부 함수를 호출할 때 `eventType`이 `FunctionExecution`인 로그 항목을 작성합니다. 외부 함수는 규칙의 작업이 AWS IoT 또는 다른 웹 서비스에 HTTP 요청을 할 때 호출됩니다(예: `get_thing_shadow` 또는 호출`machinelearning_predict`).

#### FunctionExecution 로그 항목 예제
<a name="log-rules-fn-exec.example"></a>

```
{
    "timestamp": "2017-07-13 18:33:51.903",
    "logLevel": "DEBUG",
    "traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
    "status": "Success",
    "eventType": "FunctionExecution",
    "clientId": "N/A",
    "topicName":"rules/test",
    "ruleName": "ruleTestPredict",
    "ruleAction": "MachinelearningPredict",
    "resources": {
        "ModelId": "predict-model"
    },
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`FunctionExecution` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
 `FunctionExecution` 로그에서는 `N/A`입니다.

principalId  
요청하는 위탁자의 ID입니다.

리소스  
규칙의 작업에서 사용하는 리소스 모음입니다.

ruleName  
일치하는 규칙의 이름입니다.

topicName  
구독하는 주제의 이름입니다.

### RuleExecution 로그 항목
<a name="log-rules-rule-ex"></a>

 AWS IoT 규칙 엔진은 규칙의 작업을 트리거할 때 `RuleExecution` 로그 항목을 생성합니다.

#### RuleExecution 로그 항목 예제
<a name="log-rules-rule-ex.example"></a>

```
{
    "timestamp": "2017-08-10 16:32:46.070",
    "logLevel": "INFO",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "RuleExecution",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "rules/test",
    "ruleName": "JSONLogsRule",
    "ruleAction": "RepublishAction",
    "resources": {
        "RepublishTopic": "rules/republish"
    },
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

#### 일괄 처리 로그 항목을 사용한 RuleExecution 예제
<a name="log-rules-rule-ex-batching.example"></a>

```
{
    "logLevel": "INFO",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "RuleExecution",
    "ruleName": "rule_test",
    "ruleAction": "HttpAction",
    "resources": {
        "Url": "https://example.com",
        "ConfirmationUrl": "https://example.com"
    },
    "details": "HttpAction made a request to the specified endpoint",
    "batchDetails": {
        "timestamps": [
            "1234567890123",
            "1234567890123",
            "1234567890123"
        ],
        "traceIds": [
            "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
            "30aa7ccc-1d23-0b97-aa7b-76196d83537c",
            "30aa7ccc-1d23-0b97-aa7b-76196d83537d"
        ],
        "clientIds": [
            "N/A",
            "N/A",
            "N/A"
        ],
        "topicNames": [
            "topic/ruletest",
            "topic/ruletest",
            "topic/ruletest"
        ],
        "principalIds": [
            "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
            "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
            "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
        ],
        "batchSize": 3,
        "batchSizeInBytes": 114
    }
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 뿐만 아니라 `RuleExecution` 로그 항목에는 다음과 같은 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

principalId  
요청하는 위탁자의 ID입니다.

리소스  
규칙의 작업에서 사용하는 리소스 모음입니다.

ruleAction  
트리거된 작업의 이름입니다.

ruleName  
일치하는 규칙의 이름입니다.

topicName  
구독하는 주제의 이름입니다.

### RuleMatch 로그 항목
<a name="log-rules-rule-match"></a>

 AWS IoT 규칙 엔진은 메시지 브로커가 규칙과 일치하는 메시지를 수신할 `RuleMatch` 때 `eventType`이 인 로그 항목을 생성합니다.

#### RuleMatch 로그 항목 예제
<a name="log-rules-rule-match.example"></a>

```
{
    "timestamp": "2017-08-10 16:32:46.002",
    "logLevel": "INFO",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "RuleMatch",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "rules/test",
    "ruleName": "JSONLogsRule",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

외에도 [일반적인 CloudWatch Logs 속성](#cwl-common-attributes) `RuleMatch` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

principalId  
요청하는 위탁자의 ID입니다.

ruleName  
일치하는 규칙의 이름입니다.

topicName  
구독하는 주제의 이름입니다.

### RuleExecutionThrottled 로그 항목
<a name="log-rules-rule-msg-throttled"></a>

실행이 제한되면 AWS IoT 규칙 엔진은 `eventType`가 인 로그 항목을 생성합니다`RuleExecutionThrottled`.

#### RuleExecutionThrottled 로그 항목 예시
<a name="log-rules-rule-msg-throttled.example"></a>

```
{
    "timestamp": "2017-10-04 19:25:46.070",
    "logLevel": "ERROR",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "RuleExecutionThrottled",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "$aws/rules/example_rule",
    "ruleName": "example_rule",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "reason": "RuleExecutionThrottled",
    "details": "Exection of Rule example_rule throttled"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`RuleExecutionThrottled` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

details  
오류에 대한 간단한 설명입니다.

principalId  
요청하는 위탁자의 ID입니다.

reason  
'RuleExecutionThrottled' 문자열

ruleName  
트리거할 규칙의 이름.

topicName  
게시된 주제의 이름입니다.

### RuleNotFound 로그 항목
<a name="log-rules-rule-not-found"></a>

 AWS IoT 규칙 엔진이 지정된 이름의 규칙을 찾을 수 없는 경우 `eventType`이 인 로그 항목을 생성합니다`RuleNotFound`.

#### RuleNotFound 로그 항목 예제
<a name="log-rules-rule-not-found.example"></a>

```
{
    "timestamp": "2017-10-04 19:25:46.070",
    "logLevel": "ERROR",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "RuleNotFound",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "$aws/rules/example_rule",
    "ruleName": "example_rule",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "reason": "RuleNotFound",
    "details": "Rule example_rule not found"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`RuleNotFound` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

details  
오류에 대한 간단한 설명입니다.

principalId  
요청하는 위탁자의 ID입니다.

reason  
문자열 "RuleNotFound".

ruleName  
찾을 수 없는 규칙의 이름입니다.

topicName  
게시된 주제의 이름입니다.

### StartingRuleExecution 로그 항목
<a name="log-rules-start-rule-ex"></a>

 AWS IoT 규칙 엔진이 규칙의 작업을 트리거하기 시작하면 `eventType`이 인 로그 항목이 생성됩니다`StartingRuleExecution`.

#### StartingRuleExecution 로그 항목 예제
<a name="log-rules-start-rule-ex.example"></a>

```
{
    "timestamp": "2017-08-10 16:32:46.002",
    "logLevel": "DEBUG",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "StartingRuleExecution",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "rules/test",
    "ruleName": "JSONLogsRule",
    "ruleAction": "RepublishAction",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`rule-` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

principalId  
요청하는 위탁자의 ID입니다.

ruleAction  
트리거된 작업의 이름입니다.

ruleName  
일치하는 규칙의 이름입니다.

topicName  
구독하는 주제의 이름입니다.

## Job 로그 항목
<a name="job-logs"></a>

 AWS IoT 작업 서비스는 다음 이벤트에 대한 로그 항목을 생성합니다. 디바이스로부터 MQTT 또는 HTTP 요청이 수신되면 로그 항목이 생성됩니다.

**Topics**
+ [DescribeJobExecution 로그 항목](#log-job-describe-job-ex)
+ [GetPendingJobExecution 로그 항목](#log-job-get-pending-job-ex)
+ [ReportFinalJobExecutionCount 로그 항목](#log-job-report-final-job-ex-count)
+ [StartNextPendingJobExecution 로그 항목](#log-job-start-next-pending-job-ex)
+ [UpdateJobExecution 로그 항목](#log-job-update-job-ex)

### DescribeJobExecution 로그 항목
<a name="log-job-describe-job-ex"></a>

 AWS IoT 작업 서비스는 서비스가 작업 실행을 설명하라는 요청을 수신할 `DescribeJobExecution` 때 `eventType`이 인 로그 항목을 생성합니다.

#### DescribeJobExecution 로그 항목 예제
<a name="log-job-describe-job-ex.example"></a>

```
{
    "timestamp": "2017-08-10 19:13:22.841",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "DescribeJobExecution",
    "protocol": "MQTT",
    "clientId": "thingOne",
    "jobId": "002",
    "topicName": "$aws/things/thingOne/jobs/002/get",
    "clientToken": "myToken",
    "details": "The request status is SUCCESS."
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`GetJobExecution` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

clientToken  
요청 멱등성을 보장하는 고유한 대/소문자 구분 식별자입니다. 자세한 내용은 [멱등성 보장 방법(How to Ensure Idempotency)](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) 단원을 참조하세요.

details  
작업 서비스의 다른 정보입니다.

jobId  
작업 실행의 작업 ID입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

topicName  
요청에 사용된 주제입니다.

### GetPendingJobExecution 로그 항목
<a name="log-job-get-pending-job-ex"></a>

 AWS IoT 작업 서비스는 서비스가 작업 실행 요청을 수신할 `GetPendingJobExecution` 때 `eventType`이 인 로그 항목을 생성합니다.

#### GetPendingJobExecution 로그 항목 예제
<a name="log-job-get-pending-job-ex.example"></a>

```
{
    "timestamp": "2018-06-13 17:45:17.197",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "GetPendingJobExecution",
    "protocol": "MQTT",
    "clientId": "299966ad-54de-40b4-99d3-4fc8b52da0c5",
    "topicName": "$aws/things/299966ad-54de-40b4-99d3-4fc8b52da0c5/jobs/get",
    "clientToken": "24b9a741-15a7-44fc-bd3c-1ff2e34e5e82",
    "details": "The request status is SUCCESS."
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`GetPendingJobExecution` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

clientToken  
요청 멱등성을 보장하는 고유한 대/소문자 구분 식별자입니다. 자세한 내용은 [멱등성 보장 방법(How to Ensure Idempotency)](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) 단원을 참조하세요.

details  
작업 서비스의 다른 정보입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

topicName  
구독하는 주제의 이름입니다.

### ReportFinalJobExecutionCount 로그 항목
<a name="log-job-report-final-job-ex-count"></a>

 AWS IoT 작업 서비스는 `ReportFinalJobExecutionCount` 작업이 완료되면 `entryType`이 인 로그 항목을 생성합니다.

#### ReportFinalJobExecutionCount 로그 항목 예제
<a name="log-job-report-final-job-ex-count.example"></a>

```
{
    "timestamp": "2017-08-10 19:44:16.776",
    "logLevel": "INFO",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "ReportFinalJobExecutionCount",
    "jobId": "002",
    "details": "Job 002 completed. QUEUED job execution count: 0 IN_PROGRESS job execution count: 0 FAILED job execution count: 0 SUCCEEDED job execution count: 1 CANCELED job execution count: 0 REJECTED job execution count: 0 REMOVED job execution count: 0"
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`ReportFinalJobExecutionCount` 로그 항목에는 다음 속성이 포함됩니다.

details  
작업 서비스의 다른 정보입니다.

jobId  
작업 실행의 작업 ID입니다.

### StartNextPendingJobExecution 로그 항목
<a name="log-job-start-next-pending-job-ex"></a>

대기 중인 다음 작업 실행을 시작하라는 요청을 수신하면 AWS IoT 작업 서비스는 `eventType`이 인 로그 항목을 생성합니다`StartNextPendingJobExecution`.

#### StartNextPendingJobExecution 로그 항목 예제
<a name="log-job-start-next-pending-job-ex.example"></a>

```
{
    "timestamp": "2018-06-13 17:49:51.036",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "StartNextPendingJobExecution",
    "protocol": "MQTT",
    "clientId": "95c47808-b1ca-4794-bc68-a588d6d9216c",
    "topicName": "$aws/things/95c47808-b1ca-4794-bc68-a588d6d9216c/jobs/start-next",
    "clientToken": "bd7447c4-3a05-49f4-8517-dd89b2c68d94",
    "details": "The request status is SUCCESS."
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`StartNextPendingJobExecution` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

clientToken  
요청 멱등성을 보장하는 고유한 대/소문자 구분 식별자입니다. 자세한 내용은 [멱등성 보장 방법(How to Ensure Idempotency)](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) 단원을 참조하세요.

details  
작업 서비스의 다른 정보입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

topicName  
요청에 사용된 주제입니다.

### UpdateJobExecution 로그 항목
<a name="log-job-update-job-ex"></a>

 AWS IoT 작업 서비스는 서비스가 작업 실행 업데이트 요청을 수신할 `UpdateJobExecution` 때 `eventType`이 인 로그 항목을 생성합니다.

#### UpdateJobExecution 로그 항목 예제
<a name="log-job-update-job-ex.example"></a>

```
{
    "timestamp": "2017-08-10 19:25:14.758",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "UpdateJobExecution",
    "protocol": "MQTT",
    "clientId": "thingOne",
    "jobId": "002",
    "topicName": "$aws/things/thingOne/jobs/002/update",
    "clientToken": "myClientToken",
    "versionNumber": "1",
    "details": "The destination status is IN_PROGRESS. The request status is SUCCESS."
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`UpdateJobExecution` 로그 항목에는 다음 속성이 포함됩니다.

clientId  
요청하는 클라이언트의 ID입니다.

clientToken  
요청 멱등성을 보장하는 고유한 대/소문자 구분 식별자입니다. 자세한 내용은 [멱등성 보장 방법(How to Ensure Idempotency)](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) 단원을 참조하세요.

details  
작업 서비스의 다른 정보입니다.

jobId  
작업 실행의 작업 ID입니다.

protocol  
요청에 사용된 프로토콜. 유효한 값은 `MQTT` 또는 `HTTP`입니다.

topicName  
요청에 사용된 주제입니다.

versionNumber  
작업 실행 버전입니다.

## Device provisioning 로그 항목
<a name="provision-logs"></a>

 AWS IoT 디바이스 프로비저닝 서비스는 다음 이벤트에 대한 로그를 생성합니다.

**Topics**
+ [GetDeviceCredentials 로그 항목](#log-provision-get-device-credentials)
+ [ProvisionDevice 로그 항목](#log-provision-provision-device)

### GetDeviceCredentials 로그 항목
<a name="log-provision-get-device-credentials"></a>

 AWS IoT 디바이스 프로비저닝 서비스는 클라이언트가를 호출할 `GetDeviceCredential` 때이 `eventType`인 로그 항목을 생성합니다`GetDeviceCredential`.



#### GetDeviceCredentials 로그 항목 예제
<a name="log-provision-get-device-credentials.example"></a>

```
{
  "timestamp" : "2019-02-20 20:31:22.932",
  "logLevel" : "INFO",
  "traceId" : "8d9c016f-6cc7-441e-8909-7ee3d5563405",
  "accountId" : "123456789101",
  "status" : "Success",
  "eventType" : "GetDeviceCredentials",
  "deviceCertificateId" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "details" : "Additional details about this log."
}
```

[일반적인 CloudWatch Logs 속성](#cwl-common-attributes) 외에도`GetDeviceCredentials` 로그 항목에는 다음 속성이 포함됩니다.

details  
오류에 대한 간단한 설명입니다.

deviceCertificateId  
디바이스 인증서의 ID입니다.

### ProvisionDevice 로그 항목
<a name="log-provision-provision-device"></a>

 AWS IoT 디바이스 프로비저닝 서비스는 클라이언트가를 호출할 `ProvisionDevice` 때이 `eventType`인 로그 항목을 생성합니다`ProvisionDevice`.

#### ProvisionDevice 로그 항목 예제
<a name="log-provision-provision-device.example"></a>

```
{
  "timestamp" : "2019-02-20 20:31:22.932",
  "logLevel" : "INFO",
  "traceId" : "8d9c016f-6cc7-441e-8909-7ee3d5563405",
  "accountId" : "123456789101",
  "status" : "Success",
  "eventType" : "ProvisionDevice",
  "provisioningTemplateName" : "myTemplate",
  "deviceCertificateId" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "details" : "Additional details about this log."
 }
```

외에도 [일반적인 CloudWatch Logs 속성](#cwl-common-attributes) `ProvisionDevice` 로그 항목에는 다음 속성이 포함됩니다.

details  
오류에 대한 간단한 설명입니다.

deviceCertificateId  
디바이스 인증서의 ID입니다.

provisioningTemplateName  
프로비저닝 템플릿의 이름입니다.

## Dynamic thing group 로그 항목
<a name="dynamic-group-logs"></a>

AWS IoT 동적 사물 그룹은 다음 이벤트에 대한 로그를 생성합니다.

**Topics**
+ [AddThingToDynamicThingGroupsFailed 로그 항목](#log-dynthing-add-thing-to-dynamic-thing-groups-failed)

### AddThingToDynamicThingGroupsFailed 로그 항목
<a name="log-dynthing-add-thing-to-dynamic-thing-groups-failed"></a>

 AWS IoT 가 지정된 동적 그룹에 사물을 추가할 수 없는 경우 `eventType`이 인 로그 항목을 생성합니다`AddThingToDynamicThingGroupsFailed`. 사물이 동적 사물 그룹에 추가되기 위한 조건을 충족한 경우 발생하지만 동적 그룹에 추가할 수 없거나 동적 그룹에서 제거되었습니다. 이는 다음과 같은 이유로 발생할 수 있습니다.
+ 사물이 이미 최대 그룹 수에 속합니다.
+ **--override-dynamic-groups** 옵션은 사물을 정적 사물 그룹에 추가하는 데 사용되었습니다. 이를 가능하게 하기 위해 동적 사물 그룹에서 제거되었습니다.

자세한 내용은 [동적 사물 그룹 제한 및 충돌](dynamic-thing-groups.md#dynamic-thing-group-limitations)을 참조하세요.

#### AddThingToDynamicThingGroupsFailed 로그 항목 예제
<a name="log-dynthing-add-thing-to-dynamic-thing-groups-failed.example"></a>

이 예제에서는 `AddThingToDynamicThingGroupsFailed` 오류의 로그 항목을 보여줍니다. 다음 예제에서 *TestThing*은 `dynamicThingGroupNames`에 나열된 동적 사물 그룹에 추가되기 위한 조건을 충족했지만 `reason`에 설명된 대로 해당 동적 그룹에 추가할 수 없습니다.

```
{
 "timestamp": "2020-03-16 22:24:43.804",
 "logLevel": "ERROR",
 "traceId": "70b1f2f5-d95e-f897-9dcc-31e68c3e1a30",
 "accountId": "57EXAMPLE833",
 "status": "Failure",
 "eventType": "AddThingToDynamicThingGroupsFailed",
 "thingName": "TestThing",
 "dynamicThingGroupNames": [
  "DynamicThingGroup11",
  "DynamicThingGroup12",
  "DynamicThingGroup13",
  "DynamicThingGroup14"
 ],
 "reason": "The thing failed to be added to the given dynamic thing group(s) because the thing already belongs to the maximum allowed number of groups."
}
```

외에도 [일반적인 CloudWatch Logs 속성](#cwl-common-attributes) `AddThingToDynamicThingGroupsFailed` 로그 항목에는 다음 속성이 포함됩니다.

dynamicThingGroupNames  
사물을 추가할 수 없는 동적 사물 그룹의 배열입니다.

reason  
사물을 동적 사물 그룹에 추가할 수 없는 이유입니다.

thingName  
동적 사물 그룹에 추가할 수 없는 사물의 이름입니다.

## 플릿 인덱싱 로그 항목
<a name="fleet-indexing-logs"></a>

AWS IoT 플릿 인덱싱은 다음 이벤트에 대한 로그 항목을 생성합니다.

**Topics**
+ [NamedShadowCountForDynamicGroupQueryLimitExceeded 로그 항목](#log-named-shadow-dynamic-group)

### NamedShadowCountForDynamicGroupQueryLimitExceeded 로그 항목
<a name="log-named-shadow-dynamic-group"></a>

동적 그룹에서 특정 데이터 소스가 아닌 쿼리 용어에 대해 사물당 최대 25개의 명명된 섀도우가 처리됩니다. 사물에 대해 이 제한이 위반되면 `NamedShadowCountForDynamicGroupQueryLimitExceeded` 이벤트 유형이 내보내집니다.

#### NamedShadowCountForDynamicGroupQueryLimitExceeded 로그 항목 예제
<a name="log-named-shadow-dynamic-group.example"></a>

이 예에서는 `NamedShadowCountForDynamicGroupQueryLimitExceeded` 오류의 로그 항목을 보여줍니다. 이 예에서는 `reason` 필드에 설명된 대로 모든 값 기반 `DynamicGroup` 결과가 정확하지 않을 수 있습니다.

```
{
"timestamp": "2020-03-16 22:24:43.804",
"logLevel": "ERROR",
"traceId": "70b1f2f5-d95e-f897-9dcc-31e68c3e1a30",
"accountId": "571032923833",
"status": "Failure",
"eventType": "NamedShadowCountForDynamicGroupQueryLimitExceeded",
"thingName": "TestThing",
"reason": "A maximum of 25 named shadows per thing are processed for non-data source specific query terms in dynamic groups."
}
```

## 일반적인 CloudWatch Logs 속성
<a name="cwl-common-attributes"></a>

모든 CloudWatch Logs 로그 항목에는 다음 속성이 포함됩니다.

accountId  
 AWS 계정 ID.

eventType  
로그가 작성된 이벤트 유형입니다. 이벤트 유형의 값은 로그 항목을 생성한 이벤트에 따라 다릅니다. 각 로그 항목 설명에는 해당 로그 항목의 `eventType` 값이 포함됩니다.

logLevel  
사용 중인 로그 수준입니다. 자세한 정보는 [로그 수준](configure-logging.md#log-level)을 참조하십시오.

status  
요청 상태입니다.

timestamp  
클라이언트가 AWS IoT 메시지 브로커에 연결된 시점의 사람이 읽을 수 있는 UTC 타임스탬프입니다.

traceId  
특정 요청에서 모든 로그의 연관성을 나타내는 데 사용할 수 있도록 무작위로 생성되는 식별자입니다.

# 디바이스 측 로그를 Amazon CloudWatch에 업로드합니다.
<a name="upload-device-logs-to-cloudwatch"></a>

기록 디바이스 측 로그를 Amazon CloudWatch에 업로드하여 현장에서의 디바이스 활동을 모니터링하고 분석할 수 있습니다. 디바이스 측 로그에는 시스템, 애플리케이션 및 디바이스 로그 파일이 포함될 수 있습니다. 이 프로세스는 CloudWatch Logs 규칙 작업 파라미터를 사용하여 디바이스 측 로그를 고객이 정의한 [로그 그룹](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)에 게시합니다.

## 작동 방식
<a name="upload-process-overview"></a>

이 프로세스는 AWS IoT 디바이스가 형식이 지정된 로그 파일이 포함된 MQTT 메시지를 AWS IoT 주제에 전송할 때 시작됩니다. AWS IoT 규칙은 메시지 주제를 모니터링하고 사용자가 정의한 CloudWatch Logs 그룹에 로그 파일을 전송합니다. 그런 다음 정보를 검토하고 분석할 수 있습니다.

**Topics**
+ [MQTT 주제](#upload-mqtt-topics-overview)
+ [규칙 작업](#upload-rule-action-overview)

### MQTT 주제
<a name="upload-mqtt-topics-overview"></a>

로그를 게시하는 데 사용할 MQTT 주제 네임스페이스를 선택합니다. 일반 주제 공간에는 `$aws/rules/things/thing_name/logs` 형식을, 오류 주제에는 `$aws/rules/things/thing_name/logs/errors` 형식을 사용하는 것이 좋습니다. 로그 및 오류 주제의 명명 구조는 권장되지만 필수는 아닙니다. 자세한 내용은 [AWS IoT Core에 대한 MQTT 주제 설계](https://docs.aws.amazon.com/whitepapers/latest/designing-mqtt-topics-aws-iot-core/designing-mqtt-topics-aws-iot-core.html)를 참조하세요.

권장 공통 주제 공간을 사용하면 AWS IoT 기본 수집 예약 주제를 활용할 수 있습니다. AWS IoT 기본 수집은 AWS IoT 규칙 작업에서 지원하는 AWS 서비스로 디바이스 데이터를 안전하게 전송합니다. 수집 경로에서 게시/구독 메시지 브로커를 제거해 비용 효율성이 더 커집니다. 자세한 내용은 [Basic Ingest를 사용하여 메시징 비용 절감](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html)을 참조하세요.

BatchMode를 사용하여 로그 파일을 업로드하는 경우 메시지는 UNIX 타임스탬프 및 메시지를 포함하는 특정 형식을 따라야 합니다. 자세한 내용은 [CloudWatch Logs 규칙 작업](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html)의 [BatchMode에 대한 MQTT 메시지 형식 요구 사항](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html#cloudwatch-logs-rule-action-message-format) 주제를 참조하세요.

### 규칙 작업
<a name="upload-rule-action-overview"></a>

가 클라이언트 디바이스에서 MQTT 메시지를 AWS IoT 수신하면 AWS IoT 규칙은 고객 정의 주제를 모니터링하고 사용자가 정의한 CloudWatch 로그 그룹에 콘텐츠를 게시합니다. 이 프로세스에서는 CloudWatch Logs 규칙 작업을 사용하여 MQTT에 로그 파일 배치가 있는지 모니터링합니다. 자세한 내용은 [CloudWatch Logs](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html) AWS IoT 규칙 작업을 참조하세요.

#### BatchMode
<a name="upload-batch-mode-overview"></a>

 `batchMode`는 AWS IoT CloudWatch Logs 규칙 작업 내의 부울 파라미터입니다. 이 파라미터는 선택 사항이며 기본적으로 꺼짐(`false`) 상태입니다. 디바이스 측 로그 파일을 배치로 업로드하려면 AWS IoT 규칙을 생성할 때이 파라미터를 켜야 합니다(`true`). 자세한 내용은 [AWS IoT 규칙 작업](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html) 섹션의 [CloudWatch Logs](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html)를 참조하세요.

# AWS IoT 규칙을 사용하여 디바이스 측 로그 업로드
<a name="uploading-logs-rules-action-procedure"></a>

 AWS IoT 규칙 엔진을 사용하여 기존 디바이스 측 로그 파일(시스템, 애플리케이션 및 디바이스 클라이언트 로그)의 로그 레코드를 Amazon CloudWatch에 업로드할 수 있습니다. 디바이스 측 로그가 MQTT 주제에 게시되면 CloudWatch Logs 규칙 작업이 메시지를 CloudWatch Logs로 전송합니다. 이 프로세스에서는 규칙 작업 `batchMode` 파라미터가 켜진 상태에서(`true`로 설정) 이를 사용하여 디바이스 로그를 일괄적으로 업로드하는 방법을 설명합니다.

CloudWatch에 디바이스 측 로그 업로드를 시작하려면 다음 사전 조건을 완료하세요.

## 사전 조건
<a name="uploading-logs-rules-prerequisites"></a>

시작하기 전에 다음을 수행하십시오.
+ 사물 AWS IoT Core 로에 등록된 대상 IoT 디바이스를 AWS IoT 하나 이상 생성합니다. 자세한 내용은 [사물 객체 생성](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing)을 참조하세요.
+ 수집 및 오류에 대한 MQTT 주제 공간을 결정합니다. MQTT 주제 및 권장 명명 규칙에 대한 자세한 내용은 [Amazon CloudWatch에 디바이스 측 로그 업로드](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch.html)의 [MQTT 주제](upload-device-logs-to-cloudwatch.md#upload-mqtt-topics-overview) [MQTT 주제](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch.html#upload-mqtt-topics-overview) 섹션을 참조하세요.

이 사전 조건에 대한 자세한 내용은 [CloudWatch에 디바이스 측 로그 업로드](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch)를 참조하세요.

## CloudWatch 로그 그룹 생성
<a name="uploading-logs-rules-setup-log-group"></a>

CloudWatch 로그 그룹을 생성하려면 다음 단계를 수행합니다. AWS Management Console 또는 AWS Command Line Interface ()를 통해 단계를 수행할지 여부에 따라 적절한 탭을 선택합니다AWS CLI.

------
#### [ AWS Management Console ]

**를 사용하여 CloudWatch 로그 그룹을 생성하려면 AWS Management Console**

1. 를 열고 [CloudWatch](https://console.aws.amazon.com//cloudwatch)로 AWS Management Console 이동합니다.

1. 탐색 모음에서 **Logs**(로그)를 선택한 다음, **Log groups**(로그 그룹)를 선택합니다.

1. **로그 그룹 생성**을 선택합니다.

1. **Log group name**(로그 그룹 이름)을 업데이트하고 필요에 따라 **Retention setting**(보존 설정) 필드를 업데이트합니다.

1. **생성(Create)**을 선택합니다.

------
#### [ AWS CLI ]

**를 사용하여 CloudWatch 로그 그룹을 생성하려면 AWS CLI**

1. 다음 명령을 실행하여 로그 그룹을 생성합니다. 자세한 내용은 AWS CLI v2 명령 참조` [create-log-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/create-log-group.html) `의 섹션을 참조하세요.

   예제(`uploadLogsGroup`)의 로그 그룹 이름을 원하는 이름으로 바꿉니다.

   ```
   aws logs create-log-group --log-group-name uploadLogsGroup
   ```

1. 로그 그룹이 제대로 생성되었는지 확인하려면 다음 명령을 실행합니다.

   ```
   aws logs describe-log-groups --log-group-name-prefix uploadLogsGroup
   ```

   샘플 출력:

   ```
   {
       "logGroups": [
           {
               "logGroupName": "uploadLogsGroup",
               "creationTime": 1674521804657,
               "metricFilterCount": 0,
               "arn": "arn:aws:logs:us-east-1:111122223333:log-group:uploadLogsGroup:*",
               "storedBytes": 0
           }
       ]
   }
   ```

------

## 주제 규칙 생성
<a name="uploading-logs-rules-setup-topic-rule"></a>

 AWS IoT 규칙을 생성하려면 다음 단계를 완료합니다. AWS Management Console 또는 AWS Command Line Interface ()를 통해 단계를 수행할지 여부에 따라 적절한 탭을 선택합니다AWS CLI.

------
#### [ AWS Management Console ]

**를 사용하여 주제 규칙을 생성하려면 AWS Management Console**

1. 규칙 허브를 엽니다.

   1.  AWS Management Console 을 열고 [AWS IoT](https://console.aws.amazon.com/iot)로 이동합니다.

   1. 탐색 모음에서 **Message routing**(메시지 라우팅)을 선택한 다음 **Rules**(규칙)을 선택합니다.

   1. **규칙 생성**을 선택합니다.

1. 규칙 속성을 입력합니다.

   1. 영숫자 **Rule name**(규칙 이름)을 입력합니다.

   1. (선택 사항) **Rule description**(규칙 설명) 및 **Tags**(태그)를 입력합니다.

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

1. SQL 문을 입력합니다.

   1. 수집을 위해 정의한 MQTT 주제를 사용하여 SQL 문을 입력합니다.

      예: `SELECT * FROM '$aws/rules/things/thing_name/logs' ` 

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

1. 규칙 작업을 입력합니다.

   1. **Actions 1**(작업 1) 메뉴에서 **CloudWatch logs**(CloudWatch 로그)를 선택합니다.

   1. **Log group name**(로그 그룹 이름)을 선택한 다음 생성한 로그 그룹을 선택합니다.

   1. **Use batch mode**(배치 모드 사용)을 선택합니다.

   1. 규칙의 IAM 역할을 지정합니다.

      규칙에 대한 IAM 역할이 있는 경우 다음을 수행합니다.

      1. **IAM role**(IAM 역할) 메뉴에서 IAM 역할을 선택합니다.

      규칙에 대한 IAM 역할이 없는 경우 다음을 수행합니다.

      1. **Create new role**(새 역할 생성)을 선택합니다.

      1. **Role name**(역할 이름)에 고유한 이름을 입력하고 **Create**(생성)를 선택합니다.

      1. **IAM role**(IAM 역할) 필드에서 IAM 역할 이름이 올바른지 확인합니다.

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

1. 템플릿 구성을 검토합니다.

   1. 작업 템플릿의 설정을 검토하여 해당 설정이 올바른지 확인합니다.

   1. 완료했으면 **Create**(생성)를 선택합니다.

------
#### [ AWS CLI ]

**를 사용하여 IAM 역할 및 주제 규칙을 생성하려면 AWS CLI**

1.  AWS IoT 규칙에 권한을 부여하는 IAM 역할을 생성합니다.

   1. IAM 정책을 생성합니다.

      IAM 정책을 생성하려면 다음 명령을 실행합니다. `policy-name` 파라미터 값을 업데이트해야 합니다. 자세한 내용은 AWS CLI v2 명령 참조[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html)의 섹션을 참조하세요.
**참고**  
Microsoft Windows 운영 체제를 사용하는 경우 줄 끝 표시자 (\$1) 기호를 틱(`)이나 다른 문자로 바꿔야 할 수 있습니다.

      ```
      aws iam create-policy \
          --policy-name uploadLogsPolicy \
          --policy-document \
      '{
          "Version": "2012-10-17",		 	 	 
          "Statement": {
              "Effect": "Allow",
              "Action": [
                  "iot:CreateTopicRule",
                  "iot:Publish",
                  "logs:CreateLogGroup",
                  "logs:CreateLogStream",
                  "logs:PutLogEvents",
                  "logs:GetLogEvents"
              ],
              "Resource": "*"
          }
      }'
      ```

   1. 출력의 정책 ARN을 텍스트 편집기에 복사합니다.

      샘플 출력:

      ```
      {
          "Policy": {
              "PolicyName": "uploadLogsPolicy",
              "PermissionsBoundaryUsageCount": 0,
              "CreateDate": "2023-01-23T18:30:10Z",
              "AttachmentCount": 0,
              "IsAttachable": true,
              "PolicyId": "AAABBBCCCDDDEEEFFFGGG",
              "DefaultVersionId": "v1",
              "Path": "/",
              "Arn": "arn:aws:iam::111122223333:policy/uploadLogsPolicy",
              "UpdateDate": "2023-01-23T18:30:10Z"
          }
      }
      ```

   1. IAM 역할 및 신뢰 정책을 생성합니다.

      IAM 정책을 생성하려면 다음 명령을 실행합니다. `role-name` 파라미터 값을 업데이트해야 합니다. 자세한 내용은 AWS CLI v2 명령 참조[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html)의 섹션을 참조하세요.

      ```
      aws iam create-role \
      --role-name uploadLogsRole \
      --assume-role-policy-document \
      '{
          "Version": "2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "iot.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }'
      ```

   1. IAM 정책을 규칙에 연결합니다.

      IAM 정책을 생성하려면 다음 명령을 실행합니다. `role-name` 및 `policy-arn` 파라미터 값을 업데이트해야 합니다. 자세한 내용은 AWS CLI v2 명령 참조[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html)의 섹션을 참조하세요.

      ```
      aws iam attach-role-policy \
      --role-name uploadLogsRole \
      --policy-arn arn:aws:iam::111122223333:policy/uploadLogsPolicy
      ```

   1. 역할을 검토합니다.

      IAM 역할이 제대로 생성되었는지 확인하려면 다음 명령을 실행합니다. `role-name` 파라미터 값을 업데이트해야 합니다. 자세한 내용은 AWS CLI v2 명령 참조[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-role.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-role.html)의 섹션을 참조하세요.

      ```
      aws iam get-role --role-name uploadLogsRole
      ```

      샘플 출력:

      ```
      {
          "Role": {
              "Path": "/",
              "RoleName": "uploadLogsRole",
              "RoleId": "AAABBBCCCDDDEEEFFFGGG",
              "Arn": "arn:aws:iam::111122223333:role/uploadLogsRole",
              "CreateDate": "2023-01-23T19:17:15+00:00",
              "AssumeRolePolicyDocument": {
                  "Version": "2012-10-17",		 	 	 
                  "Statement": [
                      {
                          "Sid": "Statement1",
                          "Effect": "Allow",
                          "Principal": {
                              "Service": "iot.amazonaws.com"
                          },
                          "Action": "sts:AssumeRole"
                      }
                  ]
              },
              "Description": "",
              "MaxSessionDuration": 3600,
              "RoleLastUsed": {}
          }
      }
      ```

1. 에서 AWS IoT 주제 규칙을 생성합니다 AWS CLI.

   1.  AWS IoT 주제 규칙을 생성하려면 다음 명령을 실행합니다. `--rule-name`,`sql` 문, `description``roleARN `및 `logGroupName` 파라미터 값을 업데이트해야 합니다. 자세한 내용은 AWS CLI v2 명령 참조의 [create-topic-rule](https://awscli.amazonaws.com/v2/documentation/api/2.0.34/reference/iot/create-topic-rule.html)을 참조하세요.

      ```
      aws iot create-topic-rule \
      --rule-name uploadLogsRule \
      --topic-rule-payload \
      	'{
      		"sql":"SELECT * FROM 'rules/things/thing_name/logs'",
      		"description":"Upload logs test rule",
      		"ruleDisabled":false,
      		"awsIotSqlVersion":"2016-03-23",
      		"actions":[
      			{"cloudwatchLogs":
      				{"roleArn":"arn:aws:iam::111122223333:role/uploadLogsRole",
      				"logGroupName":"uploadLogsGroup",
      				"batchMode":true}
      				}
      			]
      }'
      ```

   1. 규칙이 제대로 생성되었는지 확인하려면 다음 명령을 실행합니다. `role-name` 파라미터 값을 업데이트해야 합니다. 자세한 내용은 AWS CLI v2 명령 참조의 [get-topic-rule](https://awscli.amazonaws.com/v2/documentation/api/2.0.34/reference/iot/get-topic-rule.html)을 참조하세요.

      ```
      aws iot get-topic-rule --rule-name uploadLogsRule
      ```

      샘플 출력:

      ```
      {
          "ruleArn": "arn:aws:iot:us-east-1:111122223333:rule/uploadLogsRule",
          "rule": {
              "ruleName": "uploadLogsRule",
              "sql": "SELECT * FROM rules/things/thing_name/logs",
              "description": "Upload logs test rule",
              "createdAt": "2023-01-24T16:28:15+00:00",
              "actions": [
                  {
                      "cloudwatchLogs": {
                          "roleArn": "arn:aws:iam::111122223333:role/uploadLogsRole",
                          "logGroupName": "uploadLogsGroup",
                          "batchMode": true
                      }
                  }
              ],
              "ruleDisabled": false,
              "awsIotSqlVersion": "2016-03-23"
          }
      }
      ```

------

## 로 디바이스 측 로그 전송 AWS IoT
<a name="uploading-logs-rules-start-messages"></a>

**디바이스 측 로그를 로 전송하려면 AWS IoT**

1. 기록 로그를 로 보내려면 디바이스와 AWS IoT통신하여 다음을 확인합니다.
   + 로그 정보는 이 절차의 *사전 요구 사항* 섹션에 명시된 것처럼 올바른 주제 네임스페이스로 전송됩니다.

     예: `$aws/rules/things/thing_name/logs` 
   + MQTT 메시지 페이로드 형식이 올바르게 지정되었습니다. MQTT 주제 및 권장 이름 지정 규칙에 대한 자세한 내용은 내의 [MQTT 주제](upload-device-logs-to-cloudwatch.md#upload-mqtt-topics-overview) 섹션을 참조하세요[디바이스 측 로그를 Amazon CloudWatch에 업로드합니다.](upload-device-logs-to-cloudwatch.md).

1. MQTT 클라이언트 내에서 AWS IoT MQTT 메시지가 수신되는지 확인합니다.

   1. 를 AWS Management Console 열고 로 이동합니다[AWS IoT](https://console.aws.amazon.com/iot/home).

   1. **MQTT 테스트 클라이언트**를 보려면 탐색 모음에서 **테스트**, **MQTT 테스트 클라이언트**를 선택합니다.

   1. **주제 구독**, **주제 필터**에 *주제 네임스페이스*를 입력합니다.

   1. **구독**을 선택합니다.

      MQTT 메시지는 다음과 같이 **Subscriptions**(구독) 및 **Topic**(주제) 테이블에 나타납니다. 이 메시지가 표시되려면 최대 5분이 걸릴 수 있습니다.  
![\[MQTT 메시지는 다음과 같이 구독 및 주제 테이블에 나타납니다.\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/images/uploading-logs-rules-start-messages-sample-mqtt.png)

## 로그 데이터 보기
<a name="uploading-logs-rules-review-cloudwatch"></a>

**CloudWatch Logs에서 로그 레코드 검토**

1. 를 열고 [CloudWatch](https://console.aws.amazon.com/cloudwatch)로 AWS Management Console이동합니다.

1. 탐색 모음에서 **로그**, **로그 인사이트를** 선택합니다.

1. **로그 그룹 선택(Select log group)** 메뉴에서 AWS IoT 규칙에 지정한 로그 그룹을 선택합니다.

1. **Logs insights** 페이지에서 **Run query**(쿼리 실행)를 선택합니다.

# 를 사용하여 AWS IoT API 호출 로깅 AWS CloudTrail
<a name="iot-using-cloudtrail"></a>

AWS IoT 는 사용자 AWS CloudTrail, 역할 또는 서비스가 수행한 작업에 대한 레코드를 제공하는 AWS 서비스와 통합됩니다 AWS IoT. CloudTrail은 AWS IoT 콘솔의 호출 및 API에 대한 코드 호출을 포함하여에 대한 모든 API 호출을 이벤트 AWS IoT 로 캡처합니다. AWS IoT APIs 추적을 생성하면 이벤트를 포함하여 CloudTrail 이벤트를 지속적으로 Amazon S3 버킷에 배포할 수 있습니다 AWS IoT. 추적을 구성하지 않은 경우에도 **이벤트 기록**에서 CloudTrail 콘솔의 최신 이벤트를 볼 수 있습니다. CloudTrail에서 수집한 정보를 사용하여 요청이 수행된 AWS IoT IP 주소, 요청이 수행된 사람, 요청이 수행된 시간 및 기타 세부 정보를 확인할 수 있습니다.

CloudTrail에 대한 자세한 설명은 [AWS CloudTrail 사용자 가이드](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하십시오.

## AWS IoT CloudTrail의 정보
<a name="aws-iot-info-in-cloudtrail"></a>

CloudTrail은 계정을 생성할 AWS 계정 때에서 활성화됩니다. 활동이 발생하면 AWS IoT해당 활동은 **이벤트 기록**의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. 에서 최근 이벤트를 보고 검색하고 다운로드할 수 있습니다 AWS 계정. 자세한 설명은 [CloudTrail 이벤트 기록으로 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

 AWS IoT에 대한 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. CloudTrail은 추적을 사용하여 Amazon S3 버킷으로 로그 파일을 전송할 수 있습니다. 기본적으로 콘솔에서 추적을 생성하면 추적이 모든 AWS 리전에 적용됩니다. 추적은 AWS 파티션의 모든 AWS 리전에서 이벤트를 로깅하고 지정한 Amazon S3 버킷으로 로그 파일을 전송합니다. CloudTrail 로그에서 수집된 이벤트 데이터를 추가로 분석하고 조치를 취하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음을 참조하세요.
+  [트레일 생성 개요](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) 
+  [CloudTrail 지원 서비스 및 통합](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations) 
+  [CloudTrail에서 Amazon SNS 알림 구성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html) 
+  [여러 리전으로부터 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 및 [여러 계정으로부터 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html) 

**참고**  
AWS IoT 데이터 영역 작업(디바이스 측)은 CloudTrail에서 로깅되지 않습니다. CloudWatch를 사용하여 이러한 작업을 모니터링합니다.

일반적으로 변경을 수행하는 AWS IoT 컨트롤 플레인 작업은 CloudTrail에서 로깅합니다. **CreateThing**, **CreateKeysAndCertificate** 및 **UpdateCertificate**와 같은 호출은 CloudTrail 항목을 남기지만, **ListThings** 및 **ListTopicRules**와 같은 호출은 그렇지 않습니다.

모든 이벤트 또는 로그 항목에는 요청을 생성했던 사용자에 관한 정보가 포함됩니다. ID 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
+ 요청을 루트로 했는지 아니면 IAM 사용자 자격 증명 정보로 했는지 여부.
+ 역할 또는 페더레이션 사용자의 임시 자격 증명을 사용하여 요청이 생성되었는지 여부.
+ 요청이 다른 AWS 서비스에서 이루어졌는지 여부입니다.

자세한 설명은 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하세요.

AWS IoT 작업은 [AWS IoT API 참조](https://docs.aws.amazon.com/iot/latest/apireference/)에 설명되어 있습니다. AWS IoT 무선 작업은 [AWS IoT 무선 API 참조](https://docs.aws.amazon.com/iot-wireless/latest/apireference/welcome.html)에 설명되어 있습니다.

## AWS IoT 로그 파일 항목 이해
<a name="understanding-aws-iot-entries"></a>

트레일이란 지정한 S3 버킷에 이벤트를 로그 파일로 입력할 수 있게 하는 구성입니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 모든 소스의 단일 요청을 나타내며 요청된 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보를 포함하고 있습니다. CloudTrail 로그 파일은 퍼블릭 API 직접 호출에 대한 순서 지정된 스택 추적이 아니기 때문에 특정 순서로 표시되지 않습니다.

다음은 `AttachPolicy` 작업을 보여주는 CloudTrail 로그 항목이 나타낸 예시입니다.

```
{
    "timestamp":"1460159496",
    "AdditionalEventData":"",
    "Annotation":"",
    "ApiVersion":"",
    "ErrorCode":"",
    "ErrorMessage":"",
    "EventID":"8bff4fed-c229-4d2d-8264-4ab28a487505",
    "EventName":"AttachPolicy",
    "EventTime":"2016-04-08T23:51:36Z",
    "EventType":"AwsApiCall",
    "ReadOnly":"",
    "RecipientAccountList":"",
    "RequestID":"d4875df2-fde4-11e5-b829-23bf9b56cbcd",
    "RequestParamters":{
        "principal":"arn:aws:iot:us-east-1:123456789012:cert/528ce36e8047f6a75ee51ab7beddb4eb268ad41d2ea881a10b67e8e76924d894",
        "policyName":"ExamplePolicyForIoT"
    },
    "Resources":"",
    "ResponseElements":"",
    "SourceIpAddress":"52.90.213.26",
    "UserAgent":"aws-internal/3",
    "UserIdentity":{
        "type":"AssumedRole",
        "principalId":"AKIAI44QH8DHBEXAMPLE",
        "arn":"arn:aws:sts::12345678912:assumed-role/iotmonitor-us-east-1-beta-InstanceRole-1C5T1YCYMHPYT/i-35d0a4b6",
        "accountId":"222222222222",
        "accessKeyId":"access-key-id",
        "sessionContext":{
            "attributes":{
                "mfaAuthenticated":"false",
                "creationDate":"Fri Apr 08 23:51:10 UTC 2016"
            },
            "sessionIssuer":{
                "type":"Role",
                "principalId":"AKIAI44QH8DHBEXAMPLE",
                "arn":"arn:aws:iam::123456789012:role/executionServiceEC2Role/iotmonitor-us-east-1-beta-InstanceRole-1C5T1YCYMHPYT",
                "accountId":"222222222222",
                "userName":"iotmonitor-us-east-1-InstanceRole-1C5T1YCYMHPYT"
            }
        },
        "invokedBy":{
            "serviceAccountId":"111111111111"
        }
    },
    "VpcEndpointId":""
}
```