

# Amazon CloudWatch Logs를 사용하여 AWS IoT 무선 리소스 모니터링
<a name="monitoring-cloudwatch"></a>

모니터링은 AWS IoT Wireless 및 기타 AWS 솔루션의 신뢰성, 가용성 및 성능을 유지하는 데 중요한 부분입니다. LoRaWAN 및 Sidewalk 디바이스 모두에 대한 모니터링을 사용할 수 있으며, AWS IoT 무선에 온보딩된 시점부터 정보성 메시지와 오류를 확인할 수 있습니다.

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

다음 단계에서는 다양한 시간과 다양한 부하 조건에서 성능을 측정하여 환경에서 로깅을 활성화하고 정상적인 AWS IoT Wireless 성능의 기준선을 설정합니다. AWS IoT Wireless을 모니터링할 때 과거 모니터링 데이터를 현재 성능 데이터와 비교할 수 있도록 유지합니다. 이를 통해 정상적인 성능 패턴과 성능 이상을 식별하고 문제 해결 방법을 고안할 수 있습니다.

## 모니터링 도구
<a name="monitoring-tools"></a>

AWS IoT Wireless를 관찰하고, 문제 발생 시 보고하고, 적절한 경우 자동 조치를 취하는 다음과 같은 모니터링 도구를 사용할 수 있습니다.
+ Amazon CloudWatch는 AWS에서 실행하는 AWS 리소스와 애플리케이션을 실시간으로 모니터링합니다. 지표를 수집 및 추적하고, 맞춤 대시보드를 생성할 수 있으며, 지정된 지표가 지정한 임계값에 도달하면 사용자에게 알리거나 조치를 취하도록 경보를 설정할 수 있습니다. 예를 들어 CloudWatch에서 Amazon EC2 인스턴스의 CPU 사용량 또는 기타 지표를 추적하고 필요할 때 자동으로 새 인스턴스를 시작할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)를 참조하십시오.
+ 네트워크 분석기는 LoRaWAN 디바이스 및 게이트웨이를 포함한 LoRaWAN 리소스를 모니터링할 수 있습니다. 따라서 추적 메시지 수신을 시작하여 적시에 로그 정보를 받기 위해 연결을 설정하는 데 걸리는 시간이 줄어듭니다. 자세한 내용은 [네트워크 분석기를 사용하여 무선 리소스 플릿 실시간 모니터링](network-analyzer-overview.md) 단원을 참조하십시오.

## Amazon CloudWatch를 사용하여 리소스를 모니터링하는 방법
<a name="monitoring-how"></a>

원시 데이터를 수집하여 읽기 가능한 실시간에 가까운 지표로 처리하는 CloudWatch를 사용하여 AWS IoT Wireless를 모니터링할 수 있습니다. 이러한 통계는 15개월간 보관되므로 기록 정보에 액세스하고 웹 애플리케이션 또는 서비스가 어떻게 실행되고 있는지 전체적으로 더 잘 파악할 수 있습니다. 특정 임계값을 주시하다가 해당 임계값이 충족될 때 알림을 전송하거나 조치를 취하도록 경보를 설정할 수도 있습니다. 자세한 내용은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)를 참조하십시오.

AWS IoT 무선 리소스를 로깅하고 모니터링하려면 다음 단계를 수행하세요.

1. 로깅 역할을 생성하여 [AWS IoT 무선에 대한 로깅 역할 및 정책 생성](create-logging-role-policy.md)에 설명된 대로 AWS IoT 무선 리소스를 로깅합니다.

1. CloudWatch Logs 콘솔의 로그 메시지는 기본 로그 수준이 `ERROR`이며, 이는 오류 정보만 포함하는 요약된 정보입니다. 더 상세한 메시지를 보려면 CLI를 사용하여 [AWS IoT 무선 리소스에 대한 로깅 구성](configure-resource-logging.md)에 설명된 대로 로깅을 먼저 구성하는 것이 좋습니다.

1. 그런 다음 CloudWatch Logs 콘솔에서 로그 항목을 확인하여 리소스를 모니터링할 수 있습니다. 자세한 내용은 [CloudWatch AWS IoT 무선 로그 항목 보기](cwl-format.md) 단원을 참조하십시오.

1. **로그 그룹**을 사용하여 필터 표현식을 만들 수 있지만, 먼저 간단한 필터를 생성하고 로그 그룹에서 로그 항목을 확인한 다음 CloudWatch Insights로 이동하여 모니터링 중인 리소스 또는 이벤트에 따라 로그 항목을 필터링하는 쿼리를 생성하는 것이 좋습니다. 자세한 내용은 [CloudWatch 인사이트를 사용하여 AWS IoT 무선의 로그 필터링](cwl-insights.md) 단원을 참조하십시오.

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

AWS IoT 활동을 모니터링 및 로그하기 전에 먼저 CLI 또는 API를 사용하여 AWS IoT 무선 리소스에 대한 로깅을 활성화합니다.

AWS IoT 무선 로깅 구성 방법을 고려할 때 달리 지정하지 않는 한, 기본 로깅 구성에 따라 AWS IoT 활동이 기록되는 방식이 결정됩니다. 시작할 때 기본 로그 수준이 `INFO`인 자세한 로그를 얻고 싶을 수 있습니다.

초기 로그를 검토한 후 기본 로그 수준을 (요약된 정보인) `ERROR`로 변경하고, 더 많은 주의가 필요할 수 있는 리소스에는 더 상세한 리소스별 로그 수준을 설정할 수 있습니다. 로그 수준은 언제든 변경할 수 있습니다.

다음 주제에서는 AWS IoT 무선 리소스에 대한 로깅을 구성하는 방법을 보여줍니다.

**Topics**
+ [AWS IoT 무선에 대한 로깅 역할 및 정책 생성](create-logging-role-policy.md)
+ [AWS IoT 무선 리소스에 대한 로깅 구성](configure-resource-logging.md)

# AWS IoT 무선에 대한 로깅 역할 및 정책 생성
<a name="create-logging-role-policy"></a>

다음은 AWS IoT 무선 리소스에 대해서만 로깅 역할을 생성하는 방법을 보여줍니다. AWS IoT Core에 대한 로깅 역할을 만들려는 경우 [https://docs.aws.amazon.com/iot/latest/developerguide/create-logging-role.html](https://docs.aws.amazon.com/iot/latest/developerguide/create-logging-role.html)을(를) 참조하세요.

## AWS IoT 무선에 대한 로깅 역할 생성
<a name="logging-role"></a>

로깅을 사용하려면 먼저 사용자를 대신하여 AWS IoT 무선 활동을 모니터링할 수 있는 권한을 AWS에 부여하는 IAM 역할과 정책을 생성해야 합니다.

**로깅을 위한 IAM 역할 생성**  
AWS IoT 무선에 대한 로깅 역할을 생성하려면 [IAM의 역할 허브(Roles hub of the IAM) 콘솔](https://console.aws.amazon.com/iam/home#/roles)을 열고 **역할 생성(Create role)**을 선택합니다.

1. **Select type of trusted entity(신뢰할 수 있는 엔터티 유형 선택)** 아래에서 **다른 Another AWS account (AWS 계정)**를 선택합니다.

1. **계정 ID**에서 AWS계정 ID를 입력한 후 **다음: 권한**을 선택합니다.

1. 검색 상자에 **AWSIoTWirelessLogging**을(를) 입력합니다.

1. **AWSIoTWirelessLogging**이라는 정책 옆에 있는 확인란을 선택한 후 **다음: 태그**를 선택합니다.

1. **다음: 검토**를 선택합니다.

1. **역할 이름**에 **IoTWirelessLogsRole**을 입력한 다음 **역할 생성**을 선택합니다.

**IAM 역할의 신뢰 관계 편집**  
이전 단계를 실행한 후 표시되는 확인 메시지에서, 생성한 역할 이름인 **IoTWirelessLogsRole**을 선택합니다. 그런 다음 역할을 편집하여 다음 신뢰 관계를 추가합니다.

1. **IoTWirelessLogsRole** 역할의 **요약** 섹션에서 **신뢰 관계** 탭을 선택한 다음**신뢰 관계 편집**을 선택합니다.

1. **정책 문서**에서 `Principal` 속성을 다음 예시처럼 변경합니다.

   ```
   "Principal": { 
       "Service": "iotwireless.amazonaws.com" 
   },
   ```

   `Principal` 속성을 변경한 후 전체 정책 문서가 다음 예시와 같은 형식이어야 합니다.

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

1. 변경 사항을 저장하고 종료하려면 **신뢰 정책 업데이트(Update Trust Policy)**를 선택합니다.

## AWS IoT 무선에 대한 로깅 정책
<a name="logging-policy"></a>

다음 정책 문서는 AWS IoT 무선이 사용자 대신 CloudWatch에 로그 항목을 제출하도록 허용하는 역할 정책 및 신뢰 정책을 제공합니다.

**참고**  
이 AWS 관리형 정책 문서는 로깅 역할인 **IoTWirelessLogsRole**을 생성할 때 자동으로 생성되었습니다.

**역할 정책**  
다음은 역할 정책 문서를 보여줍니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/iotwireless*"
        }
    ]
}
```

**AWS IoT 무선 활동만 로깅하는 신뢰 정책**  
다음은 AWS IoT 무선 활동만 로깅하는 신뢰 정책을 보여줍니다.

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

AWS IoT Core 활동도 로그하는 IAM 역할을 생성한 경우 정책 문서를 사용하여 두 활동을 모두 로깅할 수 있습니다. AWS IoT Core에 대한 로깅 역할 생성에 대한 자세한 내용은 [https://docs.aws.amazon.com/iot/latest/developerguide/create-logging-role.html](https://docs.aws.amazon.com/iot/latest/developerguide/create-logging-role.html)을(를) 참조하세요.

## 다음 단계
<a name="logging-role-next-steps"></a>

AWS IoT 무선 리소스를 로깅할 로깅 역할을 생성하는 방법을 배웠습니다. 기본적으로 로그의 로그 수준은 `ERROR`이므로 오류 정보만 보려면 [CloudWatch AWS IoT 무선 로그 항목 보기](cwl-format.md)(으)로 이동해서 로그 항목 조회를 통해 무선 리소스를 모니터링할 수 있습니다.

로그 항목에서 자세한 정보를 보려는 경우 리소스 또는 다른 이벤트 유형에 대한 기본 로그 수준을 구성할 수 있습니다(예: 로그 수준을 `INFO`로 설정). 리소스 로깅 구성에 대한 자세한 내용은 [AWS IoT 무선 리소스에 대한 로깅 구성](configure-resource-logging.md)을(를) 참조하세요.

# AWS IoT 무선 리소스에 대한 로깅 구성
<a name="configure-resource-logging"></a>

AWS IoT 무선 리소스에 대한 로깅을 구성하려면 API 또는 CLI를 사용합니다. AWS IoT 무선 리소스 모니터링을 시작할 때 기본 구성을 사용할 수 있습니다. 이렇게 하려면 이 주제를 건너뛰고 [CloudWatch Logs를 사용한 AWS IoT 무선 모니터링](cloud-watch-logs.md)(으)로 이동하여 로그를 모니터링할 수 있습니다.

로그 모니터링을 시작한 후 CLI를 사용하여 로그 수준을 더 상세한 옵션으로 변경할 수 있습니다(예: `INFO` 및 `ERROR` 정보를 제공하고 더 많은 리소스에 대한 로깅 활성화).

## AWS IoT 무선 및 로그 수준
<a name="log-levels-resources"></a>

API 또는 CLI를 사용하기 전에 다음 표를 사용하여 로깅을 구성할 수 있는 다양한 로그 수준과 리소스에 대해 알아보세요. 이 표에서는 리소스를 모니터링할 때 CloudWatch Logs에 표시되는 파라미터를 보여줍니다. 리소스에 대한 로깅을 구성하는 방법은 콘솔에 표시되는 로그를 결정합니다.

샘플 CloudWatch Logs가 어떤 모습인지, 그리고 이러한 파라미터를 사용하여 AWS IoT 무선 리소스에 대한 유용한 정보를 로깅할 수 있는 방법에 대한 자세한 내용은 [CloudWatch AWS IoT 무선 로그 항목 보기](cwl-format.md) 섹션을 참조하세요.


**로그 수준 및 리소스**  

| 명칭 | 가능한 값 | 설명 | 
| --- | --- | --- | 
| logLevel |  `INFO`,`ERROR` 또는 `DISABLED`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-wireless/latest/developerguide/configure-resource-logging.html)  | 
| resource |  `WirelessGateway` 또는 `WirelessDevice`  |  리소스 유형(`WirelessGateway` 또는 `WirelessDevice`)입니다.  | 
| wirelessGatewayType | LoRaWAN | resource이(가) WirelessGateway일 때 무선 게이트웨이의 유형(항상 LoRaWAN)입니다. | 
| wirelessDeviceType | LoRaWAN 또는 Sidewalk | resource이(가) WirelessDevice일 때 무선 디바이스의 유형(LoRaWAN 또는 Sidewalk)입니다. | 
| wirelessGatewayId | - | resource이(가) WirelessGateway일 때 무선 게이트웨이의 식별자입니다. | 
| wirelessDeviceId | - | resource이(가) WirelessDevice일 때 무선 디바이스의 식별자입니다. | 
| event | Join, Rejoin, Registration, Uplink\$1data, Downlink\$1data, CUPS\$1Request 및 Certificate | 로그하려는 리소스가 무선 디바이스인지 또는 무선 게이트웨이인지에 따라, 로그되는 이벤트의 유형입니다. 자세한 내용은 [CloudWatch AWS IoT 무선 로그 항목 보기](cwl-format.md) 단원을 참조하십시오. | 

## AWS IoT 무선 로깅 API
<a name="logging-api-roles"></a>

다음 API 작업을 통해 리소스 로깅을 구성할 수 있습니다. 이 표에서는 API 작업을 사용하기 위해 생성해야 하는 샘플 IAM 정책도 보여 줍니다. 다음 섹션에서는 API를 사용하여 리소스의 로그 수준을 구성하는 방법에 대해 설명합니다.


**API 작업 로깅**  

| API 이름 | 설명 | 샘플 IAM 정책 | 
| --- | --- | --- | 
|  [GetLogLevelsByResourceTypes](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetLogLevelsByResourceTypes.html)  |  현재 기본 로그 수준 또는 리소스 유형별 로그 수준을 반환합니다. 여기에는 무선 디바이스 또는 무선 게이트웨이에 대한 로그 옵션이 포함될 수 있습니다.  | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:GetLogLevelsByResourceTypes"            <br />            ],            <br />            "Resource": [                <br />                "*"            <br />            ]        <br />        }<br />    ]<br />}</pre>  | 
|  [GetResourceLogLevel](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetResourceLogLevel.html)  | 지정된 리소스 식별자 및 리소스 유형에 대한 로그 수준 재정의를 반환합니다. 리소스는 무선 디바이스 또는 무선 게이트웨이일 수 있습니다.  | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:GetResourceLogLevel"            <br />            ],            <br />            "Resource": [                <br />                 "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a",           <br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [PutResourceLogLevel](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_PutResourceLogLevel.html)  | 지정된 리소스 식별자 및 리소스 유형에 대한 로그 수준 재정의를 설정합니다. 리소스는 무선 게이트웨이 또는 무선 디바이스일 수 있습니다.  이 API는 계정당 200개의 로그 수준 재정의로 제한됩니다.   | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:PutResourceLogLevel"            <br />            ],            <br />            "Resource": [                <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a",            <br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [ResetAllResourceLogLevels](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ResetAllResourceLogLevels.html)  |  무선 게이트웨이와 무선 디바이스를 모두 포함하는 모든 리소스에 대한 로그 수준 재정의를 제거합니다.  이 API는 `UpdateLogLevelsByResourceTypes` API를 사용하여 설정된 로그 수준에 영향을 주지 않습니다   | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:ResetAllResourceLogLevels"            <br />            ],            <br />            "Resource": [                <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/*", <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessGateway/*<br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [ResetResourceLogLevel](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ResetResourceLogLevel.html)  |  지정된 리소스 식별자 및 리소스 유형에 대한 로그 수준 재정의를 제거합니다. 리소스는 무선 게이트웨이 또는 무선 디바이스일 수 있습니다.  | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:ResetResourceLogLevel"            <br />            ],            <br />            "Resource": [                <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a",            <br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [UpdateLogLevelsByResourceTypes](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateLogLevelsByResourceTypes.html)  |  기본 로그 수준 또는 리소스 유형별 로그 수준을 설정합니다. 무선 디바이스 또는 무선 게이트웨이에 대한 로그 옵션에 대해 이 API를 사용하고 CloudWatch에 표시될 로그 메시지를 제어할 수 있습니다.  이벤트는 선택 사항이며 이벤트 유형은 리소스 유형에 연결됩니다. 자세한 내용은 [이벤트 및 리소스 유형](cwl-format.md#cwl-format-events-resources) 단원을 참조하십시오.   | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:UpdateLogLevelsByResourceTypes"            <br />            ],            <br />            "Resource": [                <br />                "*"            <br />            ]        <br />        }<br />    ]<br />}</pre> | 

## CLI를 사용하여 리소스의 로그 수준 구성
<a name="configure-logging-api"></a>

이 섹션에서는 API 또는 AWS CLI를 사용하여 AWS IoT 무선 리소스에 대한 로그 수준을 구성하는 방법에 대해 설명합니다.

**CLI를 사용하기 전에 다음을 수행하세요.**
+ 앞에서 설명한 대로 CLI 명령을 실행할 API에 대한 IAM 정책을 생성했는지 확인합니다.
+ 사용하려는 역할의 Amazon 리소스 이름(ARN)이 필요합니다. 로깅에 사용할 역할을 만들어야 하는 경우 계속하기 전에 [AWS IoT 무선에 대한 로깅 역할 및 정책 생성](create-logging-role-policy.md) 단원을 참조하세요.

**AWS CLI를 사용하는 이유**  
기본적으로 [AWS IoT 무선에 대한 로깅 역할 및 정책 생성](create-logging-role-policy.md)에 설명된 대로 IAM 역할 `IoTWirelessLogsRole`을 생성하는 경우 AWS Management Console에서 기본 로그 수준이 `ERROR`인 CloudWatch Logs가 표시됩니다. 모든 리소스 또는 특정 리소스에 대한 기본 로그 수준을 변경하려면 AWS IoT 무선 로깅 API 또는 CLI를 사용합니다.

**AWS CLI 사용 방법**  
API 작업은 모든 리소스에 대해 로그 수준을 구성할지 또는 특정 리소스에 대한 로그 수준을 구성할지에 따라 다음 유형으로 분류할 수 있습니다.
+ API 작업 `GetLogLevelsByResourceTypes` 및 `UpdateLogLevelsByResourceTypes`는 계정에서 특정 유형의 모든 리소스(예: 무선 게이트웨이, LoRaWAN 또는 Sidewalk 디바이스)에 대한 로그 수준을 검색하고 업데이트할 수 있습니다.
+ API 작업 `GetResourceLogLevel`, `PutResourceLogLevel` 및 `ResetResourceLogLevel`은 리소스 식별자를 사용하여 지정한 개별 리소스의 로그 수준을 검색, 업데이트 및 재설정할 수 있습니다.
+ API 작업 `ResetAllResourceLogLevels`는 `PutResourceLogLevel` API를 사용하여 로그 수준 재정의를 지정한 모든 리소스에 대해 로그 수준 재정의를 `null`로 재설정합니다. 

**CLI를 사용하여 AWS IoT에 대한 리소스별 로그인을 구성하려면**
**참고**  
여기에 표시된 CLI 명령에 해당하는 AWS API의 메서드를 사용하여 API로 이 절차를 수행할 수도 있습니다.

1. 기본적으로 모든 리소스의 로그 수준은 `ERROR`로 설정됩니다. 계정의 모든 리소스에 대해 기본 로그 수준 또는 리소스 유형별 로그 수준을 설정하려면 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/update-log-levels-by-resource-types.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/update-log-levels-by-resource-types.html) 명령을 사용합니다. 다음 예제에서는 JSON 파일 `Input.json`을 생성해서 CLI 명령에 대한 입력으로 제공하는 방법을 보여줍니다. 이 명령을 사용하여 로깅을 선택적으로 비활성화하거나 특정 유형의 리소스 및 이벤트에 대한 기본 로그 수준을 재정의할 수 있습니다.

   ```
   {
       "DefaultLogLevel": "INFO",
       "WirelessDeviceLogOptions": 
        [
           {
            "Type": "Sidewalk",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                 "Event": "Registration",
                 "LogLevel": "DISABLED"
               }
             ]
           }, 
           {
            "Type": "LoRaWAN",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                "Event": "Join",
                "LogLevel": "DISABLED"
               }, 
               {
                "Event": "Rejoin",
                "LogLevel": "ERROR"
               }
             ]
           }
         ]
        "WirelessGatewayLogOptions": 
         [
           {
            "Type": "LoRaWAN",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                "Event": "CUPS_Request",
                "LogLevel": "DISABLED"
               }, 
               {
                 "Event": "Certificate",
                 "LogLevel": "ERROR"
               }
             ]
           }
         ]
   }
   ```

   여기서 각 항목은 다음과 같습니다.  
**WirelessDeviceLogOptions**  
무선 디바이스에 대한 로그 옵션 목록입니다. 각 로그 옵션에는 무선 디바이스 유형(Sidewalk 또는 LoRaWAN)과 무선 디바이스 이벤트 로그 옵션 목록이 포함됩니다. 각 무선 디바이스 이벤트 로그 옵션에는 선택적으로 이벤트 유형 및 해당 로그 수준이 포함될 수 있습니다.  
**WirelessGatewayLogOptions**  
무선 게이트웨이에 대한 로그 옵션 목록입니다. 각 로그 옵션에는 무선 게이트웨이 유형(LoRaWAN)과 무선 게이트웨이 이벤트 로그 옵션 목록이 포함됩니다. 각 무선 게이트웨이 이벤트 로그 옵션에는 선택적으로 이벤트 유형 및 해당 로그 수준이 포함될 수 있습니다.  
**DefaultLogLevel**  
모든 리소스에 사용할 로그 수준입니다. 유효 값은 `ERROR`, `INFO` 및 `DISABLED`입니다. 기본 값은 `INFO`입니다.  
**LogLevel**  
개별 리소스 유형 및 이벤트에 사용할 로그 수준입니다. 이러한 로그 수준은 기본 로그 수준(예: LoRaWAN 게이트웨이의 경우 로그 수준 `INFO`, 두 이벤트 유형의 경우 로그 수준 `DISABLED` 및 `ERROR`)을 재정의합니다.

   다음 명령을 실행하여 `Input.json` 파일을 명령에 대한 입력으로 제공하세요. 이 명령은 출력을 생성하지 않습니다.

   ```
   aws iotwireless update-log-levels-by-resource-types \ 
       --cli-input-json Input.json
   ```

   무선 디바이스 및 무선 게이트웨이에 대한 로그 옵션을 제거하려면 다음 명령을 실행합니다.

   ```
   {
       "DefaultLogLevel":"DISABLED",
       "WirelessDeviceLogOptions": [],
       "WireslessGatewayLogOptions":[]
   }
   ```

1. **update-log-levels-by-resource-types** 명령은 출력을 반환하지 않습니다. [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-log-levels-by-resource-types.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-log-levels-by-resource-types.html) 명령을 사용하여 리소스별 로깅 정보를 검색할 수 있습니다. 이 명령은 기본 로그 수준과 무선 디바이스 및 무선 게이트웨이 로그 옵션을 반환합니다.
**참고**  
**get-log-levels-by-resource-types** 명령은 CloudWatch 콘솔에서 로그 수준을 직접 검색할 수 없습니다. **get-log-levels-by-resource-types** 명령을 사용하면 **update-log-levels-by-resource-types** 명령을 통해 리소스에 대해 지정한 최신 로그 수준 정보를 가져올 수 있습니다.

   ```
   aws iotwireless get-log-levels-by-resource-types 
   ```

   다음 명령을 실행하면 **update-log-levels-by-resource-types**로 지정한 최신 로깅 정보를 반환합니다. 예를 들어, 무선 디바이스 로그 옵션을 제거한 경우 **get-log-levels-by-resource-types**를 실행하면 이 값이 `null`로 반환됩니다.

   ```
   {
       "DefaultLogLevel": "INFO",
       "WirelessDeviceLogOptions": null,
        "WirelessGatewayLogOptions": 
         [
           {
            "Type": "LoRaWAN",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                "Event": "CUPS_Request",
                "LogLevel": "DISABLED"
               }, 
               {
                 "Event": "Certificate",
                 "LogLevel": "ERROR"
               }
             ]
           }
         ]
   }
   ```

1. 개별 무선 게이트웨이 또는 무선 디바이스 리소스에 대한 로그 수준을 제어하려면 다음 CLI 명령을 사용합니다.
   + [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/put-resource-log-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/put-resource-log-level.html)
   + [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-resource-log-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-resource-log-level.html)
   + [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-resource-log-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-resource-log-level.html)

   이러한 CLI를 사용하는 경우를 예로 들어 계정에서 많은 수의 무선 디바이스 또는 게이트웨이가 로그되고 있다고 가정해 보겠습니다. 일부 무선 디바이스에 대해서만 오류를 해결하려면 `DefaultLogLevel`을 `DISABLED`로 설정하여 모든 무선 디바이스에 대한 로깅을 비활성화하고 **put-resource-log-level**을 사용하여 계정에 있는 해당 디바이스에 대해서만 `LogLevel`을 `ERROR`로 설정할 수 있습니다.

   ```
   aws iotwireless put-resource-log-level \ 
       --resource-identifier 
       --resource-type WirelessDevice
       --log-level ERROR
   ```

   이 예에서 명령은 지정된 무선 디바이스 리소스에 대해서만 로그 수준을 `ERROR`로 설정하고 다른 모든 리소스에 대한 로그는 비활성화됩니다. 이 명령은 출력을 생성하지 않습니다. 이 정보를 검색하고 로그 수준이 설정되었는지 확인하려면 **get-resource-log-level** 명령을 사용하세요.

1. 이전 단계에서 문제를 디버깅하고 오류를 해결한 후 **reset-resource-log-level** 명령을 실행하여 해당 리소스의 로그 수준을 `null`로 재설정할 수 있습니다. `put-resource-log-level` 명령을 사용하여 여러 디바이스에 대한 오류 문제 해결과 같이 둘 이상의 무선 디바이스 또는 게이트웨이 리소스에 대한 로그 수준 재정의를 설정한 경우 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-all-resource-log-levels.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-all-resource-log-levels.html) 명령을 사용하여 해당 모든 리소스에 대해 로그 수준 재정의를 다시 `null`로 재설정할 수 있습니다.

   ```
   aws iotwireless reset-all-resource-log-levels
   ```

   이 명령은 출력을 생성하지 않습니다. 리소스에 대한 로깅 정보를 검색하려면 **get-resource-log-level** 명령을 실행합니다.

## 다음 단계
<a name="configure-logging-next-steps"></a>

로깅 역할을 생성하고 AWS IoT 무선 API를 사용하여 AWS IoT Core for LoRaWAN 리소스에 대한 로깅을 구성하는 방법을 배웠습니다. 그런 다음 로그 항목 모니터링에 대해 알아보려면 [CloudWatch Logs를 사용한 AWS IoT 무선 모니터링](cloud-watch-logs.md)(으)로 이동하세요.

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

AWS IoT Core for LoRaWAN에서 기본적으로 활성화된 CloudWatch 로그 항목은 50개 이상입니다. 각 로그 항목은 이벤트 유형, 로그 수준 및 리소스 유형을 설명합니다. 자세한 내용은 [AWS IoT 무선 및 로그 수준](configure-resource-logging.md#log-levels-resources) 단원을 참조하십시오.

**AWS IoT 무선 리소스 모니터링 방법**  
AWS IoT 무선에 대해 로깅이 활성화되면 AWS IoT 무선은 각 메시지가 디바이스에서 AWS IoT를 통해 전달될 때 각 메시지에 대한 진행 이벤트를 전송합니다. 기본적으로 AWS IoT 무선 로그 항목의 기본 로그 수준은 오류(error)입니다. [AWS IoT 무선에 대한 로깅 역할 및 정책 생성](create-logging-role-policy.md)에 설명된 대로 로깅을 활성화하면 CloudWatch 콘솔에 기본 로그 수준이 `ERROR`인 메시지가 표시됩니다. 이 로그 수준을 사용하면 사용 중인 모든 무선 디바이스 및 게이트웨이 리소스에 대한 오류 정보만 메시지에 표시됩니다.

로그에서 로그 수준 `INFO` 등으로 추가 정보를 표시하게 하거나 일부 디바이스에 대한 로그를 비활성화하고 일부 디바이스에 대해서만 로그 메시지를 표시하려는 경우 AWS IoT 무선 로깅 API를 사용할 수 있습니다. 자세한 내용은 [CLI를 사용하여 리소스의 로그 수준 구성](configure-resource-logging.md#configure-logging-api) 단원을 참조하십시오.

필터 표현식을 만들어 필요한 메시지만 표시할 수도 있습니다.

**콘솔에서 AWS IoT 무선 로그를 보기 전에**  
**/aws/iotwireless** 로그 그룹이 CloudWatch 콘솔에 나타나도록 하려면 다음을 수행해야 합니다.
+ AWS IoT 무선에서 로깅 가능. AWS IoT 무선에서 로깅을 활성화하는 방법에 대한 자세한 내용은 [AWS IoT 무선의 로깅 구성](configure-logging.md) 섹션을 참조하세요.
+ AWS IoT 무선 작업을 수행하여 일부 로그 항목 작성.

필터 표현식을 보다 효과적으로 생성하고 사용하려면 다음 항목에 설명된 대로 CloudWatch 인사이트를 사용해 보는 것이 좋습니다. 또한 여기에 제시된 순서대로 주제를 따르는 것이 좋습니다. 그러면 먼저 CloudWatch **Log 그룹**을 사용하여 콘솔에서 로그 항목을 보는 데 사용할 수 있는 다양한 리소스 유형, 해당 이벤트 유형 및 로그 수준에 대해 알아볼 수 있습니다. 그런 다음 CloudWatch Insights를 사용하여 리소스에서 더 많은 유용한 정보를 얻는 방법으로 필터 표현식을 만드는 방법을 배울 수 있습니다.

**Topics**
+ [CloudWatch AWS IoT 무선 로그 항목 보기](cwl-format.md)
+ [CloudWatch 인사이트를 사용하여 AWS IoT 무선의 로그 필터링](cwl-insights.md)

# CloudWatch AWS IoT 무선 로그 항목 보기
<a name="cwl-format"></a>

[AWS IoT 무선에 대한 로깅 역할 및 정책 생성](create-logging-role-policy.md)에 설명된 대로 AWS IoT 무선에 대한 로깅을 구성하고 일부 로그 항목을 작성한 후 다음 단계를 수행하여 CloudWatch 콘솔에서 로그 항목을 볼 수 있습니다.

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

[CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)에서 CloudWatch Logs는 **/aws/iotwireless**라는 로그 그룹에 나타납니다. CloudWatch Logs에 대한 자세한 내용은 [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)를 참조하세요.

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

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

1. **필터** 텍스트 상자에 **/aws/iotwireless**를 입력한 다음 `/aws/iotwireless` 로그 그룹을 선택합니다.

1. 계정에 대해 생성된 AWS IoT Core for LoRaWAN 로그의 전체 목록을 보려면 **모두 검색(Search all)**을 선택합니다. 개별 로그 스트림을 보려면 확장 아이콘을 선택합니다.

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

      이 필터를 사용하여 로그 수준이 `ERROR`인 모든 로그를 찾고 개별 오류 스트림을 확장하여 오류 메시지를 읽을 수 있습니다. 그러면 오류를 해결하는 데 도움이 됩니다.
   + `{ $.resource = "WirelessGateway" }` 

      로그 수준에 관계없이 `WirelessGateway` 리소스에 대한 모든 로그를 찾습니다.
   + `{ $.event = "CUPS_Request" && $.logLevel = "ERROR" }`

      이벤트 유형이 `CUPS_Request`이고, 로그 수준이 `ERROR`인 로그를 모두 찾습니다.

## 이벤트 및 리소스 유형
<a name="cwl-format-events-resources"></a>

다음 표에서는 로그 항목을 볼 수 있는 다양한 유형의 이벤트를 보여 줍니다. 이벤트 유형은 리소스 유형이 무선 디바이스인지 또는 무선 게이트웨이인지에 따라 달라집니다. 리소스 및 이벤트 유형에 대해 기본 로그 수준을 사용하거나 각각에 대해 로그 수준을 지정하여 기본 로그 수준을 재정의할 수 있습니다.


**사용된 리소스를 기반으로 하는 이벤트 유형**  

| Resource | 리소스 유형 | 이벤트 유형 | 
| --- | --- | --- | 
| 무선 게이트웨이 | LoRaWAN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-wireless/latest/developerguide/cwl-format.html)  | 
| 무선 디바이스 | LoRaWAN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-wireless/latest/developerguide/cwl-format.html)  | 
| 무선 디바이스 | Sidewalk |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-wireless/latest/developerguide/cwl-format.html)  | 

다음 주제에서는 이러한 이벤트 유형 및 무선 게이트웨이 및 무선 디바이스의 로그 항목에 대한 자세한 정보를 제공합니다.

**Topics**
+ [CloudWatch Logs 그룹에서 AWS IoT 로그 보기](#viewing-logs)
+ [이벤트 및 리소스 유형](#cwl-format-events-resources)
+ [무선 게이트웨이 및 무선 디바이스 리소스에 대한 로그 항목](wireless-log-entries.md)

# 무선 게이트웨이 및 무선 디바이스 리소스에 대한 로그 항목
<a name="wireless-log-entries"></a>

로깅을 활성화한 후에는 무선 게이트웨이 및 무선 디바이스에 대한 로그 항목을 볼 수 있습니다. 다음 섹션에서는 리소스 및 이벤트 유형에 따라 다양한 종류의 로그 항목에 대해 설명합니다.

## 무선 게이트웨이 로그 항목
<a name="gateway-log-entries"></a>

이 섹션에서는 [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)에 표시되는 무선 게이트웨이 리소스에 대한 샘플 로그 항목 중 일부를 보여줍니다. 이러한 로그 메시지는 이벤트 유형이 `CUPS_Request` 또는 `Certificate`일 수 있으며 리소스 수준 또는 이벤트 수준에서 `INFO`, `ERROR`, 또는 `DISABLED`의 로그 수준을 표시하도록 구성할 수 있습니다. 오류 정보만 보려면 로그 수준을 `ERROR`로 설정합니다. `ERROR` 로그 항목의 메시지에는 실패한 이유에 대한 정보가 포함됩니다.

무선 게이트웨이 리소스의 로그 항목은 다음 이벤트 유형에 따라 분류할 수 있습니다.
+ 

**CUPS\$1Request**  
게이트웨이에서 실행되는 LoRa Basic Station은 주기적으로 CUPS(Configuration and Update Server)에 업데이트 요청을 전송합니다. 이 이벤트 유형의 경우 무선 게이트웨이 리소스에 대한 CLI를 구성할 때 로그 수준을 `INFO`로 설정하면 로그에 다음과 같은 내용이 표시됩니다.
  + 이벤트가 성공하면 `logLevel`이 `INFO`인 로그 메시지가 표시됩니다. 메시지에는 게이트웨이에 전송된 CUPS 응답에 대한 세부 정보와 게이트웨이 세부 정보가 포함됩니다. 다음 예제는 이 로그 항목을 보여 줍니다. 로그 항목의 `logLevel` 및 기타 필드에 대한 자세한 내용은 [AWS IoT 무선 및 로그 수준](configure-resource-logging.md#log-levels-resources) 단원을 참조하세요.

    ```
    {
        "timestamp": "2021-05-13T16:56:08.853Z",
        "resource": "WirelessGateway",
        "wirelessGatewayId": "5da85cc8-3361-4c79-8be3-3360fb87abda",
        "wirelessGatewayType": "LoRaWAN",
        "gatewayEui": "feffff00000000e2",
        "event": "CUPS_Request",
        "logLevel": "INFO",
        "message": "Sending CUPS response of total length 3213 to GatewayEui: feffff00000000e2 with  TC Credentials,"
    }
    ```
  + 오류가 있는 경우 `logLevel`이 `ERROR`인 로그 항목이 표시되고 메시지에 오류 세부 정보가 포함됩니다. `CUPS_Request` 이벤트에 대해 오류가 발생할 수 있는 경우의 예로는 CUPS CRC 누락, AWS IoT Core for LoRaWAN에서 게이트웨이의 TC Uri 불일치, `IoTWirelessGatewayCertManagerRole` 누락 또는 무선 게이트웨이 레코드를 가져올 수 없음 등이 있습니다. 다음 예제는 CRC 누락 로그 항목을 보여 줍니다. 이 오류를 해결하려면 게이트웨이 설정을 확인하여 올바른 CUPS CRC를 입력했는지 확인하세요.

    ```
    {
        "timestamp": "2021-05-13T16:56:08.853Z",
        "resource": "WirelessGateway",
        "wirelessGatewayId": "5da85cc8-3361-4c79-8be3-3360fb87abda",
        "wirelessGatewayType": "LoRaWAN",
        "gatewayEui": "feffff00000000e2",
        "event": "CUPS_Request",
        "logLevel": "ERROR",
        "message": "The CUPS CRC is missing from the request. Check your gateway setup and enter the CUPS CRC,"
    }
    ```
+ 

**인증서**  
이 로그 항목은 무선 게이트웨이가 AWS IoT에 대한 연결을 인증하기 위한 올바른 인증서를 제공했는지 여부를 확인하는 데 도움이 됩니다. 이 이벤트 유형의 경우 무선 게이트웨이 리소스에 대한 CLI를 구성할 때 로그 수준을 `INFO`로 설정하면 로그에 다음과 같은 내용이 표시됩니다.
  + 이벤트가 성공하면 `logLevel`이 `INFO`인 로그 메시지가 표시됩니다. 메시지에는 인증서 ID 및 무선 게이트웨이 식별자에 대한 세부 정보가 포함됩니다. 다음 예제는 이 로그 항목을 보여 줍니다. 로그 항목의 `logLevel` 및 기타 필드에 대한 자세한 내용은 [AWS IoT 무선 및 로그 수준](configure-resource-logging.md#log-levels-resources) 단원을 참조하세요.

    ```
    {
        "resource": "WirelessGateway",
        "wirelessGatewayId": "5da85cc8-3361-4c79-8be3-3360fb87abda",
        "wirelessGatewayType": "LoRaWAN",
        "event": "Certificate",
        "logLevel": "INFO",
        "message": "Gateway connection authenticated. 
        (CertificateId: b5942a7aee973eda24314e416889227a5e0aa5ed87e6eb89239a83f515dea17c, WirelessGatewayId: 5da85cc8-3361-4c79-8be3-3360fb87abda)"
    }
    ```
  + 오류가 있는 경우 `logLevel`이 `ERROR`인 로그 항목이 표시되고 메시지에 오류 세부 정보가 포함됩니다. `Certificate` 이벤트에 대해 오류가 발생할 수 있는 경우의 예로는 잘못된 인증서 ID, 무선 게이트웨이 식별자 또는 무선 게이트웨이 식별자와 인증서 ID 간의 불일치 등이 있습니다. 다음 예는 잘못된 무선 게이트웨이 식별자로 인한 `ERROR`를 보여줍니다. 오류를 해결하려면 게이트웨이 식별자를 확인합니다.

    ```
    {
        "resource": "WirelessGateway",
        "wirelessGatewayId": "5da85cc8-3361-4c79-8be3-3360fb87abda",
        "wirelessGatewayType": "LoRaWAN",
        "event": "Certificate",
        "logLevel": "INFO",
        "message": "The gateway connection couldn't be authenticated because a provisioned gateway associated with the certificate couldn't be found. 
        (CertificateId: 729828e264810f6fc7134daf68056e8fd848afc32bfe8082beeb44116d709d9e)"
    }
    ```

## 무선 디바이스 로그 항목
<a name="device-log-entries"></a>

이 섹션에서는 [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)에 표시되는 무선 디바이스 리소스에 대한 샘플 로그 항목 중 일부를 보여줍니다. 이러한 로그 메시지의 이벤트 유형은 LoRaWAN 또는 Sidewalk 디바이스를 사용하는지 여부에 따라 다릅니다. 각 무선 디바이스 리소스 또는 이벤트 유형은 `INFO`, `ERROR`, 또는 `DISABLED`의 로그 수준을 표시하도록 구성할 수 있습니다.

**참고**  
요청에 LoRaWAN 및 Sidewalk 무선 메타데이터가 동시에 포함되어서는 안 됩니다. 이 시나리오에서 `ERROR` 로그 항목을 방지하려면 LoRaWAN 또는 Sidewalk 무선 데이터를 지정하세요.

### LoRaWAN 디바이스 로그 항목
<a name="lorawan-log-entries"></a>

LoRaWAN 무선 디바이스의 로그 항목은 다음 이벤트 유형에 따라 분류할 수 있습니다.
+ 

**`Join` 및 `Rejoin`**  
LoRaWAN 디바이스를 추가하고 AWS IoT Core for LoRaWAN에 연결할 때 디바이스에서 업링크 데이터를 전송하기 전에 `activation` 또는 `join procedure`라는 프로세스를 완료해야 합니다. 자세한 내용은 [AWS IoT Core for LoRaWAN에 무선 디바이스 추가](lorawan-end-devices-add.md) 단원을 참조하십시오.

  이 이벤트 유형의 경우 무선 게이트웨이 리소스에 대한 CLI를 구성할 때 로그 수준을 `INFO`로 설정하면 로그에 다음과 같은 내용이 표시됩니다.
  + 이벤트가 성공하면 `logLevel`이 `INFO`인 로그 메시지가 표시됩니다. 메시지에는 조인 또는 리조인 요청의 상태에 대한 세부 정보가 포함됩니다. 다음 예제는 이 로그 항목을 보여 줍니다. 로그 항목의 `logLevel` 및 기타 필드에 대한 자세한 내용은 [AWS IoT 무선 및 로그 수준](configure-resource-logging.md#log-levels-resources) 단원을 참조하세요.

    ```
    {
        "timestamp": "2021-05-13T16:56:08.853Z",
        "resource": "WirelessDevice",
        "wirelessDeviceType": "LoRaWAN",
        "WirelessDeviceId": "5da85cc8-3361-4c79-8be3-3360fb87abda",    
        "devEui": "feffff00000000e2",
        "event": "Rejoin",
        "logLevel": "INFO",
        "message": "Rejoin succeeded"
    }
    ```
  + 오류가 있는 경우 `logLevel`이 `ERROR`인 로그 항목이 표시되고 메시지에 오류 세부 정보가 포함됩니다. `Join` 및 `Rejoin` 이벤트에 대해 오류가 발생할 수 있는 경우의 예로는 잘못된 LoRaWAN 리전 설정 또는 잘못된 MIC(메시지 무결성 코드) 검사 등이 있습니다. 다음 예제에서는 MIC 검사로 인한 조인 오류를 보여줍니다. 오류를 해결하려면 올바른 루트 키를 입력했는지 확인하세요.

    ```
    {
        "timestamp": "2020-11-24T01:46:50.883481989Z",
        "resource": "WirelessDevice",
        "wirelessDeviceType": "LoRaWAN",
        "WirelessDeviceId": "cb4c087c-1be5-4990-8654-ccf543ee9fff",
        "devEui": "58a0cb000020255c",
        "event": "Join",
        "logLevel": "ERROR",
        "message": "invalid MIC. It's most likely caused by wrong root keys."
    }
    ```
+ 

**Uplink\$1Data 및 Downlink\$1Data**  
이벤트 유형 `Uplink_Data`는 페이로드가 LoRaWAN 또는 Sidewalk 디바이스에서 AWS IoT로 전송될 때 AWS IoT 무선가 생성하는 메시지에 사용됩니다. 이벤트 유형 `Downlink_Data`는 AWS IoT에서 무선 디바이스로 전송되는 다운링크 메시지와 관련된 메시지에 사용됩니다.

  이 이벤트 유형의 경우 무선 디바이스에 대한 CLI를 구성할 때 로그 수준을 `INFO`로 설정하면 로그에 다음과 같은 내용이 표시됩니다.
  + 이벤트가 성공하면 `logLevel`이 `INFO`인 로그 메시지가 표시됩니다. 메시지에는 전송된 업링크 또는 다운링크 메시지의 상태 및 무선 디바이스 식별자에 대한 세부 정보가 포함됩니다. 다음은 Sidewalk 디바이스에 대한 이 로그 항목의 예를 보여 줍니다. 로그 항목의 `logLevel` 및 기타 필드에 대한 자세한 내용은 [AWS IoT 무선 및 로그 수준](configure-resource-logging.md#log-levels-resources) 단원을 참조하세요.

    ```
    {
        "resource": "WirelessDevice",
        "wirelessDeviceId": "5371db88-d63d-481a-868a-e54b6431845d",
        "wirelessDeviceType": "Sidewalk",
        "event": "Downlink_Data",
        "logLevel": "INFO",
        "messageId": "8da04fa8-037d-4ae9-bf67-35c4bb33da71",
        "message": "Message delivery succeeded.  MessageId: 8da04fa8-037d-4ae9-bf67-35c4bb33da71. AWS IoT Core: {\"message\":\"OK\",\"traceId\":\"038b5b05-a340-d18a-150d-d5a578233b09\"}"
    }
    ```
  + 오류가 있는 경우 `logLevel`이 `ERROR`인 로그 항목이 표시되고 메시지에 오류 세부 정보가 포함되어 오류를 해결하는 데 도움이 됩니다. `Registration` 이벤트에 대해 오류가 발생할 수 있는 경우의 예로는 인증 문제, 유효하지 않거나 너무 많은 요청, 페이로드를 암호화하거나 해독할 수 없는 경우, 지정된 ID를 사용하여 무선 디바이스를 찾을 수 없는 경우 등이 있습니다. 다음 예는 메시지를 처리하는 동안 발생하는 권한 오류를 보여줍니다.

    ```
    {
        "resource": "WirelessDevice",
        "wirelessDeviceId": "cb4c087c-1be5-4990-8654-ccf543ee9fff",
        "wirelessDeviceType": "LoRaWAN",
        "event": "Uplink_Data",
        "logLevel": "ERROR",
        "message": "Cannot assume role MessageId: ef38877f-3454-4c99-96ed-5088c1cd8dee. 
        Access denied: User: arn:aws:sts::005196538709:assumed-role/DataRoutingServiceRole/6368b35fd48c445c9a14781b5d5890ed is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::400232685877:role/ExecuteRules_Role\tstatus code: 403, request id: 471c3e35-f8f3-4e94-b734-c862f63f4edb"
    }
    ```

### Sidewalk 디바이스 로그 항목
<a name="sidewalk-log-entries"></a>

Sidewalk 디바이스의 로그 항목은 다음 이벤트 유형에 따라 분류할 수 있습니다.
+ 

**`Registration`**  
이 로그 항목은 AWS IoT 무선에 등록하는 모든 Sidewalk 디바이스의 상태를 모니터링하는 데 도움이 됩니다. 이 이벤트 유형의 경우 무선 디바이스 리소스에 대한 CLI를 구성할 때 로그 수준을 `INFO`로 설정하면 `logLevel`이 `INFO` 및 `ERROR`인 로그 메시지가 표시됩니다. 메시지에는 시작부터 완료까지 등록 진행에 대한 세부 정보가 포함됩니다. `ERROR` 로그 메시지에는 디바이스 등록 관련 문제를 해결하는 방법에 대한 정보가 포함됩니다.

  다음은 로그 수준이 `INFO`인 로그 메시지에 대한 예를 보여줍니다. 로그 항목의 `logLevel` 및 기타 필드에 대한 자세한 내용은 [AWS IoT 무선 및 로그 수준](configure-resource-logging.md#log-levels-resources) 단원을 참조하세요.

  ```
  {
      "resource": "WirelessDevice",
      "wirelessDeviceId": "8d0b2775-e19b-4b2a-a351-cb8a2734a504",
      "wirelessDeviceType": "Sidewalk",
      "event": "Registration",
      "logLevel": "INFO",
      "message": "Successfully completed device registration. Amazon SidewalkId = 2000000002"
  }
  ```
+ 

**Uplink\$1Data 및 Downlink\$1Data**  
Sidewalk 디바이스의 이벤트 유형 `Uplink_Data` 및 `Downlink_Data`는 LoRaWAN 디바이스의 해당 이벤트 유형과 유사합니다. 자세한 내용은 LoRaWAN 디바이스 로그 항목에 대해 앞서 설명한 **Uplink\$1Data 및 Downlink\$1Data** 단원을 참조하세요.

### 다음 단계
<a name="cwl-format-next-steps"></a>

리소스에 대한 로그 항목을 보는 방법과, AWS IoT 무선에 대한 로깅을 활성화한 후 CloudWatch 콘솔에서 볼 수 있는 다양한 로그 항목을 보는 방법을 배웠습니다. **로그 그룹**을 사용하여 필터 스트림을 생성할 수 있지만 CloudWatch Insights를 사용하여 필터 스트림을 생성 및 사용하는 것이 좋습니다. 자세한 내용은 [CloudWatch 인사이트를 사용하여 AWS IoT 무선의 로그 필터링](cwl-insights.md) 단원을 참조하십시오.

# CloudWatch 인사이트를 사용하여 AWS IoT 무선의 로그 필터링
<a name="cwl-insights"></a>

CloudWatch Logs를 사용하여 필터 표현식을 생성할 수 있지만 CloudWatch 인사이트를 사용하여 애플리케이션에 따라 필터 표현식을 보다 효과적으로 생성하고 사용하는 것이 좋습니다.

먼저 CloudWatch **로그 그룹**을 사용하여 콘솔에서 로그 항목을 보는 데 사용할 수 있는 다양한 리소스 유형, 해당 이벤트 유형 및 로그 수준에 대해 알아보는 것이 좋습니다. 그런 다음 이 페이지에 있는 일부 필터 표현식의 예를 참조로 사용하여 AWS IoT 무선 리소스에 대한 고유한 필터를 생성할 수 있습니다.

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

[CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)에서 CloudWatch Logs는 **/aws/iotwireless**라는 로그 그룹에 나타납니다. CloudWatch Logs에 대한 자세한 내용은 [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)를 참조하세요.

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

[CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)로 이동하여 탐색 창에서 **로그 인사이트**를 선택합니다.

1. **필터** 텍스트 상자에 **/aws/iotwireless**를 입력한 다음 `/aws/iotwireless` 로그 인사이트를 선택합니다.

1. 로그 그룹의 전체 목록을 보려면 **로그 그룹 선택**을 선택합니다. AWS IoT 무선에 대한 로그 그룹을 보려면 `/aws/iotwireless`를 선택합니다.

이제 쿼리 입력을 시작하여 로그 그룹을 필터링할 수 있습니다. 다음 섹션에는 리소스 지표에 대한 인사이트를 얻는 데 도움이 되는 몇 가지 유용한 쿼리가 포함되어 있습니다.

## 필터링할 유용한 쿼리를 만들고 AWS IoT 무선을 위한 인사이트 확보
<a name="insights-resource-filter"></a>

필터 표현식을 사용하여 CloudWatch 인사이트를 통해 유용한 로그 정보를 추가로 표시할 수 있습니다. 다음은 몇 가지 샘플 쿼리를 보여줍니다

### 특정 리소스 유형에 대한 로그만 표시
<a name="insights-gateway-filter"></a>

LoRaWAN 게이트웨이 또는 Sidewalk 디바이스와 같은 특정 리소스 유형에 대한 로그만 표시하는 데 도움이 되는 쿼리를 만들 수 있습니다. 예를 들어 Sidewalk 디바이스에 대한 메시지만 표시하도록 로그를 필터링하려면 다음 쿼리를 입력하고 **쿼리 실행**을 선택합니다. 이 쿼리를 저장하려면 **저장**을 선택합니다.

```
fields @message
| filter @message like /Sidewalk/
```

쿼리가 실행된 후, 결과는 **로그** 탭에서 볼 수 있고, 여기서 계정의 Sidewalk 디바이스와 관련된 로그의 타임스탬프가 표시됩니다. 이전에 Sidewalk 디바이스와 관련된 이벤트가 발생한 경우 이벤트가 발생한 시간을 표시하는 막대 그래프도 표시됩니다. 다음은 **로그** 탭의 결과 중 하나를 확장하는 경우의 예를 보여줍니다. 또는 Sidewalk 디바이스와 관련된 오류를 해결하려는 경우 로그 수준을 `ERROR`로 설정하는 다른 필터를 추가하여 오류 정보만 표시할 수 있습니다.

```
Field	          Value
@ingestionTime      1623894967640
@log	             954314929104:/aws/iotwireless
@logStream	   WirelessDevice-Downlink_Data-715adccfb34170214ec2f6667ddfa13cb5af2c3ddfc52fbeee0e554a2e780bed
@message	     {                    
                    "resource": "WirelessDevice",
                    "wirelessDeviceId": "3b058d05-4e84-4e1a-b026-4932bddf978d",
                    "wirelessDeviceType": "Sidewalk",
                    "devEui": "feffff000000011a",
                    "event": "Downlink_Data",
                    "logLevel": "INFO",
                    "messageId": "7e752a10-28f5-45a5-923f-6fa7133fedda",
                    "message": "Successfully sent downlink message. Amazon SidewalkId = 2000000006, Sequence number = 0"
                    }
@timestamp          1623894967640
devEui	           feffff000000011a
event	        Downlink_Data
logLevel            INFO
message	          Successfully sent downlink message. Amazon SidewalkId = 2000000006, Sequence number = 0
messageId	    7e752a10-28f5-45a5-923f-6fa7133fedda
resource	     WirelessDevice
wirelessDeviceId    3b058d05-4e84-4e1a-b026-4932bddf978d
wirelessDeviceType  Sidewalk
```

### 특정 메시지 또는 이벤트 표시
<a name="insights-gateway-filter"></a>

특정 메시지를 표시하고 이벤트가 발생한 시기를 관찰하는 데 도움이 되는 쿼리를 만들 수 있습니다. 예를 들어 LoRaWAN 무선 디바이스에서 다운링크 메시지가 전송된 시기를 확인하려면 다음 쿼리를 입력하고 **쿼리 실행**을 선탣합니다. 이 쿼리를 저장하려면 **저장**을 선택합니다.

```
filter @message like /Downlink message sent/
```

쿼리가 실행되면 다운링크 메시지가 무선 디바이스에 성공적으로 전송되었을 때의 타임스탬프를 보여주는 결과가 **로그** 탭에 표시됩니다. 이전에 무선 디바이스에 전송된 다운링크 메시지가 있는 경우 다운링크 메시지가 전송된 시간을 표시하는 막대 그래프도 표시됩니다. 다음은 **로그** 탭의 결과 중 하나를 확장하는 경우의 예를 보여줍니다. 또는 다운링크 메시지가 전송되지 않은 경우 문제를 디버깅할 수 있도록 메시지가 전송되지 않은 경우에 대한 결과만 표시하도록 쿼리를 수정할 수 있습니다.

```
Field	          Value
@ingestionTime      1623884043676
@log	             954314929104:/aws/iotwireless
@logStream	   WirelessDevice-Downlink_Data-42d0e6d09ba4d7015f4e9756fcdc616d401cd85fe3ac19854d9fbd866153c872
@message	     {
                    "timestamp": "2021-06-16T22:54:00.770493863Z",
                    "resource": "WirelessDevice",
                    "wirelessDeviceId": "3b058d05-4e84-4e1a-b026-4932bddf978d",
                    "wirelessDeviceType": "LoRaWAN",
                    "devEui": "feffff000000011a",
                    "event": "Downlink_Data",
                    "logLevel": "INFO",
                    "messageId": "7e752a10-28f5-45a5-923f-6fa7133fedda",
                    "message": "Downlink message sent. MessageId: 7e752a10-28f5-45a5-923f-6fa7133fedda"
                    }
@timestamp          1623884040858
devEui	           feffff000000011a
event	        Downlink_Data
logLevel            INFO
message	          Downlink message sent. MessageId: 7e752a10-28f5-45a5-923f-6fa7133fedda
messageId	    7e752a10-28f5-45a5-923f-6fa7133fedda
resource	     WirelessDevice
timestamp	    2021-06-16T22:54:00.770493863Z
wirelessDeviceId    3b058d05-4e84-4e1a-b026-4932bddf978d
wirelessDeviceType  LoRaWAN
```

## 다음 단계
<a name="insights-next-steps"></a>

CloudWatch Insights를 사용하여 로그 메시지를 필터링하는 쿼리를 생성하여 유용한 정보를 얻는 방법을 배웠습니다. 앞서 설명한 필터 중 일부를 결합하고 모니터링 중인 리소스에 따라 고유한 필터를 디자인할 수 있습니다. CloudWatch Insights 사용에 대한 자세한 내용은 [CloudWatch Insights로 로그 데이터 분석](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData)을 참조하세요.

CloudWatch Insights를 사용하여 쿼리를 생성한 후 저장한 경우 필요에 따라 저장된 쿼리를 로드하고 실행할 수 있습니다. 또는 CloudWatch **Logs Insights** 콘솔에서 **기록(History)** 버튼을 클릭하면 이전에 실행한 쿼리를 보고 필요에 따라 다시 실행하거나 추가 쿼리를 생성하여 추가로 수정할 수 있습니다.