

# 네트워크 분석기를 사용하여 무선 리소스 플릿 실시간 모니터링
<a name="network-analyzer-overview"></a>

네트워크 분석기는 기본 WebSocket 연결을 사용하여 무선 연결 리소스에 대한 실시간 추적 메시지 로그를 수신합니다. 네트워크 분석기를 사용하여 모니터링하려는 리소스를 추가하고, 추적 메시징 세션을 활성화하고, 실시간으로 추적 메시지 수신을 시작할 수 있습니다.

리소스를 모니터링하기 위해 Amazon CloudWatch를 사용할 수도 있습니다. CloudWatch를 사용하려면 IAM 역할을 설정하여 로깅을 구성한 다음 로그 항목이 콘솔에 표시될 때까지 기다립니다. 네트워크 분석기는 연결을 설정하고 추적 메시지 수신을 시작하는 데 걸리는 시간을 크게 줄여 리소스 플릿에 대한 적시 로그 정보를 제공합니다. CloudWatch를 사용한 모니터링에 대한 자세한 내용은 [Amazon CloudWatch Logs를 사용하여 AWS IoT 무선 리소스 모니터링](monitoring-cloudwatch.md) 섹션을 참조하세요.

설정 시간을 줄이고 추적 메시지의 정보를 사용하여 리소스를 보다 효과적으로 모니터링하고 의미 있는 인사이트를 얻고 오류를 해결할 수 있습니다. LoRaWAN 디바이스와 LoRaWAN 게이트웨이를 모두 모니터링할 수 있습니다. 예를 들어 LoRaWAN 디바이스 중 하나를 온보딩할 때 조인 오류를 빠르게 식별할 수 있습니다. 오류를 디버깅하려면 제공된 추적 메시지 로그의 정보를 사용합니다.

**네트워크 분석기 사용 방법**  
리소스 플릿을 모니터링하고 추적 메시지 수신을 시작하려면 다음 단계를 수행합니다.

1. 

**네트워크 분석기 구성 생성 및 리소스 추가**  
추적 메시징을 활성화하려면 먼저 네트워크 분석기 구성을 생성하고 구성에 리소스를 추가합니다. 먼저 로그 수준 및 무선 디바이스 프레임 정보를 포함하는 구성 설정을 지정합니다. 그런 다음 무선 게이트웨이 및 무선 디바이스 식별자를 사용하여 모니터링할 무선 리소스를 추가합니다.

1. 

**WebSockets를 사용하여 추적 메시지 스트리밍**  
WebSocket 프로토콜로 IAM 역할의 자격 증명을 사용하여 미리 서명된 요청 URL을 생성하여 네트워크 분석기 추적 메시지를 스트리밍할 수 있습니다.

1. 

**추적 메시징 세션 활성화 및 추적 메시지 모니터링**  
추적 메시지 수신을 시작하려면 추적 메시징 세션을 활성화합니다. 추가 비용이 발생하지 않도록 네트워크 분석기 추적 메시징 세션을 비활성화하거나 닫을 수 있습니다.

 다음 동영상에서는 AWS IoT Core for LoRaWAN 네트워크 분석기의 작동 방법에 대해 설명하며 네트워크 분석기를 사용하여 리소스를 추가하고 조인 활동을 추적하는 프로세스를 안내합니다.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/Qk9pkhL8xjc/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/Qk9pkhL8xjc)


다음 주제는 구성을 생성하고 리소스를 추가하고 추적 메시징 세션을 활성화하는 방법을 보여 줍니다.

**Topics**
+ [네트워크 분석기에 필요한 IAM 역할 추가](network-analyzer-iam.md)
+ [네트워크 분석기 구성 생성 및 리소스 추가](network-analyzer-create-resources.md)
+ [WebSocket을 사용하여 네트워크 분석기 추적 메시지 스트리밍](network-analyzer-api.md)
+ [네트워크 분석기 추적 메시지 로그 실시간 보기 및 모니터링](network-analyzer-logs.md)
+ [네트워크 분석기를 사용하여 멀티캐스트 그룹 및 FUOTA 작업 디버깅 및 문제 해결](lorawan-network-analyzer-fuota.md)

# 네트워크 분석기에 필요한 IAM 역할 추가
<a name="network-analyzer-iam"></a>

네트워크 분석기를 사용하는 경우 네트워크 분석기 리소스에 액세스하기 위해 사용자에게 API 작업 [UpdateNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateNetworkAnalyzerConfiguration.html) 및 [GetNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetNetworkAnalyzerConfiguration.html)을 사용할 수 있는 권한을 부여해야 합니다. 다음은 권한을 부여하는 데 사용하는 IAM 정책을 보여줍니다.

## 네트워크 분석기용 IAM 정책
<a name="network-analyzer-policies"></a>

다음 중 하나를 사용하세요.
+ 

**전체 액세스 무선 정책**  
역할에 **AWSIoTWirelessFullAccess** 정책을 연결하여 AWS IoT Core for LoRaWAN에 전체 액세스 정책을 부여합니다. 자세한 내용은 [`AWSIoTWirelessFullAccess` 정책 요약](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTWirelessFullAccess$serviceLevelSummary)을 참조하세요.
+ 

**가져오기 및 업데이트 API에 대한 범위가 지정된 IAM 정책**  
IAM 콘솔의 [정책 생성(Create policy)](https://console.aws.amazon.com/iam/home#/policies$new?step=edit)으로 이동하여 **시각적 편집기(Visual editor)** 탭에서 다음 IAM 정책을 생성합니다.

  1. **서비스(Service)**에 **IoTWireless**를 선택합니다.

  1. **액세스 수준(Access level)**에서 **읽기(Read)**를 확장하고 **GetNetworkAnalyzerConfiguration**을 선택한 후 **쓰기(Write)**를 확장하고 **UpdateNetworkAnalyzerConfiguration**을 선택합니다.

  1. **다음:태그(Next:Tags)**를 선택하고 정책의 **이름(Name)**을 입력합니다(예: **IoTWirelessNetworkAnalyzerPolicy**. **정책 생성**을 선택합니다.

  다음은 생성한 **IoTWirelessNetworkAnalyzerPolicy** 정책을 보여줍니다. IAM 정책 생성에 대한 자세한 내용은 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create)을 참조하세요.

  ```
  {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Sid": "VisualEditor0",
              "Effect": "Allow",
              "Action": [
                  "iotwireless:GetNetworkAnalyzerConfiguration",
                  "iotwireless:UpdateNetworkAnalyzerConfiguration"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

**특정 리소스에 액세스할 수 있도록 범위가 지정된 정책**  
보다 세분화된 액세스 제어를 구성하려면 무선 게이트웨이와 디바이스를 **리소스(Resource)** 필드에 추가해야 합니다. 다음 정책은 와일드카드 ARN을 사용하여 모든 게이트웨이 및 디바이스에 대한 액세스 권한을 부여합니다. `WirelessGatewayId` 및 `WirelessDeviceId`를 사용하여 특정 게이트웨이 및 디바이스에 대한 액세스를 제어할 수 있습니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "iotwireless:GetNetworkAnalyzerConfiguration",
                "iotwireless:UpdateNetworkAnalyzerConfiguration"
            ],
            "Resource": [
                "arn:aws:iotwireless:*:{accountId}:WirelessDevice/*", 
                "arn:aws:iotwireless:*:{accountId}:WirelessGateway/*", 
                "arn:aws:iotwireless:*:{accountId}:NetworkAnalyzerConfiguration/*"
            ]
        }
    ]
}
```

사용자에게 네트워크 분석기를 사용할 수 있지만 무선 게이트웨이나 디바이스는 사용할 수 없는 권한을 부여하려면 다음 정책을 사용합니다. 달리 지정하지 않는 한 리소스 사용 권한은 암시적으로 거부됩니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "iotwireless:GetNetworkAnalyzerConfiguration",
                "iotwireless:UpdateNetworkAnalyzerConfiguration"
            ],
            "Resource": [                
                "arn:aws:iotwireless:*:{accountId}:NetworkAnalyzerConfiguration/*"
            ]
        }
    ]
}
```

## 다음 단계
<a name="network-analyzer-iam-next"></a>

정책을 만들었으므로 네트워크 분석기 구성에 리소스를 추가하고 해당 리소스에 대한 추적 메시징 정보를 받을 수 있습니다. 자세한 내용은 [네트워크 분석기 구성 생성 및 리소스 추가](network-analyzer-create-resources.md) 단원을 참조하십시오.

# 네트워크 분석기 구성 생성 및 리소스 추가
<a name="network-analyzer-create-resources"></a>

추적 메시징을 스트리밍하려면 먼저 네트워크 분석기 구성을 생성하고 모니터링하려는 리소스를 이 구성에 추가합니다. 구성을 생성할 때 다음을 수행할 수 있습니다.
+ 구성 이름을 지정하고 선택적으로 설명을 입력합니다.
+ 로그 메시지의 프레임 정보 및 세부 수준 등의 구성 설정을 사용자 지정합니다.
+ 모니터링하기를 원하는 리소스를 추가합니다. 리소스는 무선 디바이스 또는 무선 게이트웨이 또는 둘 다일 수 있습니다.

지정하는 구성 설정에 따라 구성에 추가하는 리소스에 대해 수신할 추적 메시징 정보가 결정됩니다. 모니터링 사용 사례에 따라 여러 구성을 만들 수도 있습니다.

다음은 구성을 생성하고 리소스를 추가하는 방법을 보여줍니다.

**Topics**
+ [네트워크 분석기 구성 생성](network-analyzer-create.md)
+ [리소스 추가 및 네트워크 분석기 구성 업데이트](network-analyzer-resources.md)

# 네트워크 분석기 구성 생성
<a name="network-analyzer-create"></a>

무선 게이트웨이 또는 무선 디바이스를 모니터링하려면 먼저 네트워크 분석기 구성을 만들어야 합니다. 구성을 생성할 때 구성 이름만 지정하면 됩니다. 구성 설정을 생성한 후에도 구성 설정을 사용자 지정하고 모니터링할 리소스를 구성에 추가할 수 있습니다. 구성 설정에 따라 해당 리소스에 대해 수신할 추적 메시징 정보가 결정됩니다.

모니터링할 리소스와 해당 리소스에 대해 수신하려는 정보 수준에 따라 여러 구성을 만들 수 있습니다. 예를 들어, AWS 계정에 있는 특정 게이트웨이 집합에 대한 오류 정보만 표시하는 구성을 만들 수 있습니다. 모니터링할 무선 디바이스에 대한 모든 정보를 표시하는 구성을 만들 수도 있습니다.

다음 섹션에서는 다양한 구성 설정과 구성을 생성하는 방법을 보여줍니다.

## 구성 설정
<a name="network-analyzer-config-settings"></a>

네트워크 분석기 구성을 생성하거나 업데이트할 때 다음 파라미터를 사용자 지정하여 로그 스트림 정보를 필터링할 수도 있습니다.
+ 

**프레임 정보(Frame info)**  
이 설정은 추적 메시지의 무선 디바이스 리소스에 대한 프레임 정보입니다. 프레임 정보는 네트워크 서버와 최종 디바이스 간의 통신을 디버깅하는 데 사용할 수 있습니다. 기본적으로 활성화됩니다.
+ 

**로그 수준**  
정보 또는 오류 로그를 보거나 로깅을 해제할 수 있습니다.
  + 

**정보**  
로그 수준이 **정보(Info)**인 로그는 더 상세하며 오류 로그 스트림과 정보 로그 스트림을 모두 포함합니다. 정보 로그를 사용하여 디바이스 또는 게이트웨이 상태의 변경 사항을 볼 수 있습니다.
**참고**  
자세한 로그 스트림을 수집하면 추가 비용이 발생할 수 있습니다. 요금에 대한 자세한 내용은 [AWS IoT Core 요금](https://aws.amazon.com/iot-core/pricing/)을 참조하십시오.
  + 

**오류**  
로그 수준이 **오류(Error)**인 로그는 덜 상세하고 오류 정보만 표시합니다. 애플리케이션에 디바이스 연결 오류와 같은 오류가 있는 경우 이러한 로그를 사용할 수 있습니다. 로그 스트림의 정보를 사용하여 플릿의 리소스에 대한 오류를 식별하고 문제를 해결할 수 있습니다.

## 콘솔을 사용하여 구성 생성
<a name="network-analyzer-create-configuration-console"></a>

AWS IoT 콘솔 또는 AWS IoT 무선 API를 사용하여 네트워크 분석기 구성을 생성하고 선택적으로 파라미터를 사용자 지정할 수 있습니다. 또한 여러 구성을 생성하고 나중에 사용하지 않는 구성을 삭제할 수 있습니다.

**네트워크 분석기 구성 생성**  


1. [AWS IoT 콘솔의 네트워크 분석기 허브](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer)를 열고 **Create configuration**(구성 생성)을 선택합니다.

1. 구성 설정을 지정합니다.
   + 

**이름, 설명 및 태그**  
문자, 숫자, 하이픈 또는 밑줄만 포함하는 고유한 **Configuration name**(구성 이름)을 지정합니다. 선택 사항인 **설명(Description)** 필드를 사용하여 구성에 대한 정보를 제공하고 **태그(Tags)** 필드를 사용하여 구성에 대한 메타데이터의 키 값 쌍을 추가합니다. 리소스 이름 지정 및 설명에 대한 자세한 내용은 [AWS IoT 무선 리소스 설명](iotwireless-describe-resources.md) 단원을 참조하세요.
   + 

**구성 설정**  
프레임 정보를 사용 중지할지 여부를 선택하고 **로그 수준 선택(Select log levels)**을 사용하여 추적 메시지 로그에 사용할 로그 수준을 선택합니다. **다음**을 선택합니다.

1. 구성에 리소스 추가 지금 리소스를 추가하거나 **생성(Create)**을 선택한 후 나중에 리소스를 추가합니다. 나중에 리소스를 추가하려면 **생성(Create)**을 선택합니다.

   **네트워크 분석기 허브(Network Analyzer hub)** 페이지에서 생성한 구성과 설정을 볼 수 있습니다. 새 구성의 세부 정보를 보려면 구성 이름을 선택합니다.

**네트워크 분석기 구성 삭제**  


모니터링할 리소스와 해당 리소스에 대해 수신하려는 추적 메시징 정보 수준에 따라 여러 개의 네트워크 분석기 구성을 만들 수 있습니다.

**콘솔에서 구성을 제거하는 방법**

1. [AWS IoT 콘솔의 네트워크 분석기 허브](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer)로 이동하여 제거할 구성을 선택합니다.

1. **작업**을 선택한 후 **삭제**를 선택합니다.

## API를 사용하여 구성 생성
<a name="network-analyzer-create-configuration-api"></a>

API를 사용하여 네트워크 분석기 구성을 만들려면 [CreateNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateNetworkAnalyzerConfiguration.html) API 작업 또는 [create-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-network-analyzer-configuration.html) CLI 명령을 사용합니다.

구성을 생성할 때 구성 이름만 지정하면 됩니다. 또한 이 API 작업을 사용하여 구성 설정을 지정하고 구성을 생성할 때 리소스를 추가할 수 있습니다. 또는 나중에 [UpdateNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateNetworkAnalyzerConfiguration.html) API 작업 또는 [pdate-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-network-analyzer-configuration.html) CLI 명령을 사용하여 지정할 수 있습니다.
+ 

**구성 생성**  
구성을 생성할 때 구성 이름을 지정해야 합니다. 예를 들어, 다음 명령은 이름과 선택적으로 설명만 제공하여 구성을 생성합니다. 기본적으로 구성에는 프레임 정보가 활성화되어 있으며 `INFO` 로그 수준을 사용합니다.

  ```
  aws iotwireless create-network-analyzer-configuration \ 
      --configuration-name My_Network_Analyzer_Config \ 
      --description "My first network analyzer configuration"
  ```

  이 명령을 실행하면 네트워크 분석기 구성의 ARN 및 ID가 표시됩니다.

  ```
  {
      "Arn": "arn:aws:iotwireless:us-east-1:123456789012:NetworkAnalyzerConfiguration/12345678-a1b2-3c45-67d8-e90fa1b2c34d",
      "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d"
  }
  ```
+ 

**리소스로 구성 생성**  
구성 설정을 사용자 지정하려면 `trace-content` 파라미터를 사용하세요. 리소스를 추가하려면 `WirelessDevices` 및 `WirelessGateways` 파라미터를 사용하여 구성에 추가할 게이트웨이, 디바이스 또는 둘 다를 지정하세요. 예를 들어, 다음 명령은 구성 설정을 사용자 지정하고 구성에 `WirelessGatewayID` 및 `WirelessDeviceID`로 지정된 무선 리소스를 추가합니다.

  ```
  aws iotwireless create-network-analyzer-configuration \ 
      --configuration-name My_NetworkAnalyzer_Config \ 
      --trace-content WirelessDeviceFrameInfo=DISABLED,LogLevel="ERROR" \ 
      --wireless-gateways "12345678-a1b2-3c45-67d8-e90fa1b2c34d" "90123456-de1f-2b3b-4c5c-bb1112223cd1"   
      --wireless-devices "1ffd32c8-8130-4194-96df-622f072a315f"
  ```

  다음 예에서는 명령 실행의 출력을 보여줍니다.

  ```
  {
      "Arn": "arn:aws:iotwireless:us-east-1:123456789012:NetworkAnalyzerConfiguration/12345678-a1b2-3c45-67d8-e90fa1b2c34d",
      "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d"
  }
  ```

**네트워크 분석기 구성 나열**  
모니터링할 리소스와 해당 리소스에 대해 수신하려는 추적 메시징 정보의 세부 수준에 따라 여러 개의 네트워크 분석기 구성을 만들 수 있습니다. 이러한 구성을 만든 후 [ListNetworkAnalyzerConfigurations](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListNetworkAnalyzerConfigurations.html) API 작업 또는 [list-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-network-analyzer-configuration.html) CLI 명령을 사용하여 해당 구성 목록을 가져옵니다.

```
aws iotwireless list-network-analyzer-configurations
```

이 명령을 실행하면 AWS 계정에 있는 모든 네트워크 분석기 구성이 표시됩니다. `max-results` 파라미터를 사용하여 표시할 구성의 개수를 지정할 수도 있습니다. 다음은 이 명령 실행의 출력을 보여줍니다.

```
{
   "NetworkAnalyzerConfigurationList": [ 
      { 
         "Arn": "arn:aws:iotwireless:us-east-1:123456789012:NetworkAnalyzerConfiguration/12345678-a1b2-3c45-67d8-e90fa1b2c34d",
         "Name": "My_Network_Analyzer_Config1"
      },
      { 
         "Arn": "arn:aws:iotwireless:us-east-1:123456789012:NetworkAnalyzerConfiguration/90123456-a1a2-9a87-65b4-c12bf3c2d09a",
         "Name": "My_Network_Analyzer_Config2"
      }
   ]
}
```

**네트워크 분석기 구성 삭제**  
[DeleteNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteNetworkAnalyzerConfiguration.html) API 작업 또는 [delete-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-network-analyzer-configuration.html) CLI 명령을 사용하여 더 이상 사용하지 않는 구성을 삭제할 수 있습니다.

```
aws iotwireless delete-network-analyzer-configuration \ 
    --configuration-name My_NetworkAnalyzer_Config
```

이 명령을 실행하면 출력을 생성하지 않습니다. 사용 가능한 구성을 보려면 `ListNetworkAnalyzerConfigurations` API 작업을 사용하면 됩니다.

## 다음 단계
<a name="network-analyzer-create-next"></a>

네트워크 분석기 구성을 만들었으므로 구성에 리소스를 추가하거나 구성 설정을 업데이트할 수 있습니다. 자세한 내용은 [리소스 추가 및 네트워크 분석기 구성 업데이트](network-analyzer-resources.md) 단원을 참조하십시오.

# 리소스 추가 및 네트워크 분석기 구성 업데이트
<a name="network-analyzer-resources"></a>

추적 메시징을 활성화하려면 먼저 구성에 리소스를 추가해야 합니다. 하나의 기본 네트워크 분석기 구성만 사용할 수 있습니다. AWS IoT Core for LoRaWAN은 **NetworkAnalyzerConfig\$1Default**라는 이름을 이 구성에 할당하며 이 필드는 편집할 수 없습니다. 이 구성은 콘솔에서 네트워크 분석기를 사용할 때 자동으로 AWS 계정에 추가됩니다.

이 기본 구성에 모니터링할 리소스를 추가할 수 있습니다. 리소스는 LoRaWAN 디바이스와 LoRaWAN 게이트웨이 중 하나 또는 둘 모두일 수 있습니다. 구성에 각 개별 리소스를 추가하려면 무선 게이트웨이 및 무선 디바이스 식별자를 사용합니다.

## 구성 설정
<a name="resources-config-settings"></a>

설정을 구성하려면 먼저 기본 구성에 리소스를 추가하고 추적 메시징을 활성화합니다. 추적 메시지 로그를 수신한 후 다음 파라미터를 사용자 지정하여 기본 구성을 업데이트하고 로그 스트림을 필터링할 수도 있습니다.
+ 

**프레임 정보(Frame info)**  
이 설정은 추적 메시지의 무선 디바이스 리소스의 프레임 정보입니다. 프레임 정보는 기본적으로 사용되며 네트워크 서버와 종단 디바이스 간의 통신을 디버깅하는 데 사용할 수 있습니다.
+ 

**로그 수준**  
정보 또는 오류 로그를 보거나 로깅을 해제할 수 있습니다.
  + 

**정보**  
로그 수준이 **정보(Info)**인 로그는 더 상세하며 자세한 정보를 제공하고 오류가 들어 있는 로그 스트림을 포함합니다. 정보 로그를 사용하여 디바이스 또는 게이트웨이 상태의 변경 사항을 볼 수 있습니다.
**참고**  
자세한 로그 스트림을 수집하면 추가 비용이 발생할 수 있습니다. 요금에 대한 자세한 내용은 [AWS IoT Core 요금](https://aws.amazon.com/iot-core/pricing/)을 참조하십시오.
  + 

**오류**  
로그 수준이 **오류(Error)**인 로그는 덜 상세하고 오류 정보만 표시합니다. 애플리케이션에 디바이스 연결 오류와 같은 오류가 있는 경우 이러한 로그를 사용할 수 있습니다. 로그 스트림의 정보를 사용하여 플릿의 리소스에 대한 오류를 식별하고 문제를 해결할 수 있습니다.

## 필수 조건
<a name="resources-prereq"></a>

리소스를 추가하려면 먼저 모니터링할 게이트웨이 및 디바이스를 AWS IoT Core for LoRaWAN에 온보딩해야 합니다. 자세한 내용은 [AWS IoT Core for LoRaWAN에 게이트웨이 및 디바이스 연결](lorawan-getting-started.md) 단원을 참조하십시오.

## 콘솔을 사용하여 리소스 추가 및 네트워크 분석기 구성 업데이트
<a name="add-resources-console"></a>

AWS IoT 콘솔 또는 AWS IoT 무선 API를 사용하여 리소스를 추가하고 선택적 파라미터를 사용자 지정할 수 있습니다. 리소스 외에도 구성 설정을 편집하고 업데이트된 구성을 저장할 수도 있습니다.

**구성에 리소스를 추가하려면(콘솔)**  


1. [AWS IoT 콘솔의 네트워크 분석기 허브](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer)를 열고 네트워크 분석기 구성인 **NetworkAnalyzerConfig\$1Default**를 선택합니다.

1. **리소스 추가(Add resources)**를 선택합니다.

1. 무선 게이트웨이 및 무선 디바이스 식별자를 사용하여 모니터링할 리소스를 추가합니다. 최대 250개의 무선 게이트웨이 또는 무선 디바이스를 추가할 수 있습니다. 리소스를 추가하려면

   1. **게이트웨이 보기(View gateways)** 또는 **디바이스 보기(View devices)** 탭을 사용하여 AWS 계정에 추가한 게이트웨이 및 디바이스 목록을 봅니다.

   1. 모니터링하려는 디바이스나 게이트웨이의 `WirelessDeviceID` 또는 `WirelessGatewayID`를 복사하여 해당 리소스의 식별자 값을 입력합니다.

   1. 리소스를 계속 추가하려면 **게이트웨이 추가(Add gateway)** 또는 **디바이스 추가(Add device)**를 선택하고 무선 게이트웨이 또는 디바이스를 추가합니다. 더 이상 모니터링하지 않을 리소스를 추가한 경우 **리소스 제거(Remove resource)**를 선택합니다.

1. 리소스를 모두 추가한 다음 **추가(Add)**를 선택합니다.

   **네트워크 분석기 허브 페이지(Network Analyzer hub page)**에서 추가한 게이트웨이 및 디바이스 수를 확인할 수 있습니다. 추적 메시징 세션을 활성화할 때까지 게이트웨이와 디바이스를 계속 추가할 수 있습니다. 세션이 활성화된 후 리소스를 추가하려면 세션을 비활성화해야 합니다.

**네트워크 분석기 구성을 편집하려면(콘솔)**  
네트워크 분석기 구성을 편집하고 추적 메시지 로그에 대한 프레임 정보 및 로그 수준을 사용 중지할지 여부를 선택할 수도 있습니다.

1. [AWS IoT 콘솔의 네트워크 분석기 허브](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer)를 열고 네트워크 분석기 구성인 **NetworkAnalyzerConfig\$1Default**를 선택합니다.

1. **편집**을 선택합니다.

1. 프레임 정보를 사용 중지할지 여부를 선택하고 **로그 수준 선택(Select log levels)**을 사용하여 추적 메시지 로그에 사용할 로그 수준을 선택합니다. **Save**(저장)를 선택합니다.

   네트워크 분석기 구성의 세부 정보 페이지에 지정한 구성 설정이 표시됩니다.

## API를 사용하여 리소스 추가 및 네트워크 분석기 구성 업데이트
<a name="network-analyzer-add-resources-api"></a>

[AWS IoT 무선 API 작업](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/) 또는 [AWS IoT 무선 CLI 명령](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html)을 사용하여 리소스를 추가하고 네트워크 분석기 구성에 대한 구성 설정을 업데이트할 수 있습니다.
+ 리소스를 추가하고 네트워크 분석기 구성을 업데이트하려면 [UpdateNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateNetworkAnalyzerConfiguration.html) API 또는 [update-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-network-analyzer-configuration.html) CLI를 사용합니다.
  + 

**리소스 추가**  
추가하려는 무선 디바이스의 경우 `WirelessDevicesToAdd`를 사용하여 디바이스의 `WirelessDeviceID`를 문자열 배열로 입력합니다. 추가하려는 무선 게이트웨이의 경우 `WirelessGatewaysToAdd`를 사용하여 게이트웨이의 `WirelessGatewayID`를 문자열 배열로 입력합니다.
  + 

**구성 편집**  
네트워크 분석기 구성을 편집하려면 `TraceContent` 파라미터를 사용하여 `WirelessDeviceFrameInfo`가 `ENABLED` 또는 `DISABLED`여야 하는지 여부와 `LogLevel` 파라미터가 `INFO`, `ERROR` 또는 `DISABLED`여야 하는지 여부를 지정합니다.

  ```
  {
     "TraceContent": { 
        "LogLevel": "string",
        "WirelessDeviceFrameInfo": "string"
     },
     "WirelessDevicesToAdd": [ "string" ],
     "WirelessDevicesToRemove": [ "string" ],
     "WirelessGatewaysToAdd": [ "string" ],
     "WirelessGatewaysToRemove": [ "string" ]
  }
  ```
+ 추가한 구성 및 리소스에 대한 정보를 보려면 [GetNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateNetworkAnalyzerConfiguration.html) API 작업 또는 [get-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-network-analyzer-configuration.html) 명령을 사용합니다. 네트워크 분석기 구성의 이름 `NetworkAnalyzerConfig_Default`를 입력으로 제공합니다.

## 다음 단계
<a name="network-analyzer-resources-next"></a>

리소스를 추가하고 구성에 대한 선택적 구성 설정을 지정했으므로 이제 WebSocket 프로토콜을 사용하여 네트워크 분석기를 사용하는 AWS IoT Core for LoRaWAN과의 연결을 설정할 수 있습니다. 그런 다음 추적 메시징을 활성화하고 리소스에 대한 추적 메시지 수신을 시작할 수 있습니다. 자세한 내용은 [WebSocket을 사용하여 네트워크 분석기 추적 메시지 스트리밍](network-analyzer-api.md) 단원을 참조하십시오.

# WebSocket을 사용하여 네트워크 분석기 추적 메시지 스트리밍
<a name="network-analyzer-api"></a>

WebSocket 프로토콜을 사용하면 실시간으로 네트워크 분석기 추적 메시지를 스트리밍할 수 있습니다. 요청을 전송하면 서비스가 JSON 구조로 응답합니다. 추적 메시징을 활성화한 후 메시지 로그를 사용하여 리소스에 대한 정보를 보고 오류를 해결할 수 있습니다. 자세한 내용은 [WebSocket 프로토콜](https://tools.ietf.org/html/rfc6455)을 참조하세요.

다음은 WebSocket을 사용하여 네트워크 분석기 추적 메시지를 스트리밍하는 방법을 보여줍니다.

**Topics**
+ [WebSocket 라이브러리를 사용하여 미리 서명된 요청 생성](network-analyzer-generate-request.md)
+ [WebSocket 메시지 및 상태 코드](network-analyer-messages-status.md)

# WebSocket 라이브러리를 사용하여 미리 서명된 요청 생성
<a name="network-analyzer-generate-request"></a>

다음은 WebSocket 라이브러리를 사용하여 서비스에 요청을 전송할 수 있도록 미리 서명된 요청을 생성하는 방법을 보여줍니다.

## IAM 역할에 WebSocket 요청에 대한 정책 추가
<a name="network-analyzer-iam"></a>

WebSocket 프로토콜을 사용하여 네트워크 분석기를 호출하려면 이 요청을 하는 AWS Identity and Access Management(IAM) 역할에 다음 정책을 연결합니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iotwireless:StartNetworkAnalyzerStream",
            "Resource": "*"
        }
    ]
}
```

## 미리 서명된 URL 생성
<a name="network-analyzer-presigned-url"></a>

애플리케이션과 네트워크 분석기 간에 통신을 설정하는 데 필요한 정보가 포함되어 있는 WebSocket 요청에 대한 URL을 생성합니다. 요청의 자격 증명을 확인하려면 WebSocket 스트리밍에서는 Amazon 서명 버전 4 프로세스를 사용하여 요청에 서명합니다. 서명 버전 4에 대한 자세한 내용은 *Amazon Web Services 일반 참조*의 [AWS API 요청에 서명](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)을 참조하세요.

네트워크 분석기를 호출하려면 `StartNetworkAnalyzerStream` 요청 URL을 사용합니다. 요청은 앞에서 언급한 IAM 역할의 자격 증명을 사용하여 서명됩니다. URL은 가독성을 위해 줄 바꿈이 추가된 다음 형식입니다.

```
GET wss://api.iotwireless.<region>.amazonaws.com/start-network-analyzer-stream?X-Amz-Algorithm=AWS4-HMAC-SHA256
   &X-Amz-Credential=Signature Version 4 credential scope
   &X-Amz-Date=date
   &X-Amz-Expires=time in seconds until expiration
   &X-Amz-Security-Token=security-token
   &X-Amz-Signature=Signature Version 4 signature 
   &X-Amz-SignedHeaders=host
```

서명 버전 4 파라미터에 대해 다음 값을 사용합니다.
+ **X-Amz-Algorithm** – 서명 프로세스에서 사용하는 알고리즘입니다. 유일한 유효 값은 `AWS4-HMAC-SHA256`입니다.
+ **X-Amz-Credential** – 사용자의 액세스 키 ID와 자격 증명 범위 구성 요소를 연결해 형성한, 슬래시('/')로 구분한 문자열입니다. 자격 증명 범위에는 YYYYMMDD 형식의 날짜, AWS 리전, 서비스 이름, 종료 문자열(aws4\$1request)이 포함됩니다.
+ **X-Amz-Date** – 서명이 생성된 날짜 및 시간입니다. *Amazon Web Services 일반 참조*의 [서명 버전 4에서 날짜 처리](https://docs.aws.amazon.com/general/latest/gr/sigv4-date-handling.html)의 지침에 따라 날짜와 시간을 생성합니다.
+ **X-Amz-Expires** – 자격 증명이 만료될 때까지의 기간(초)입니다. 최대값은 300초(5분)입니다.
+ **X-Amz-Security-Token** – (선택 사항) 임시 자격 증명을 위한 서명 버전 4 토큰입니다. 이 파라미터를 지정하는 경우 표준 요청에 포함합니다. 자세한 내용은 [AWS Identity and Access Management 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)의 *임시 보안 자격 증명 요청* 섹션을 참조하세요.
+ **X-Amz-Signature** – 요청에 대해 생성한 서명 버전 4 서명입니다.
+ **X-Amz-SignedHeaders** – 요청에 대한 서명을 생성할 때 서명한 헤더입니다. 유일한 유효 값은 `host`입니다.

## 요청 URL 구성 및 서명 버전 4 서명 생성
<a name="connect-iot-network-analyzer-construct-url-sign"></a>

요청에 대한 URL과 서명 버전 4 서명을 생성하려면 다음 단계를 따르십시오. 유사 코드의 예제입니다.

### 작업 1: 표준 요청 생성
<a name="canonical-request"></a>

요청의 정보가 포함된 문자열을 표준화된 형식으로 생성합니다. 그러면 AWS에서 요청을 수신할 때 사용자가 [작업 3: 서명 계산](#calculate-signature)에서 계산한 것과 동일한 서명을 계산할 수 있습니다. 자세한 내용은 *Amazon Web Services 일반 참조*의 [서명 버전 4에 대한 표준 요청 생성](https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html)을 참조하세요.

1. 애플리케이션의 요청에 대한 변수를 정의합니다.

   ```
   # HTTP verb
   method = "GET"
   # Service name
   service = "iotwireless"
   # AWS 리전
   region = "AWS 리전"
   # Service streaming endpoint
   endpoint = "wss://api.iotwireless.region.amazonaws.com"
   # Host
   host = "api.iotwireless.<region>.amazonaws.com"
   # Date and time of request
   amz-date = YYYYMMDD'T'HHMMSS'Z'
   # Date without time for credential scope
   datestamp = YYYYMMDD
   ```

1. 정식 URI(Uniform Resource Identifier)를 생성합니다. 표준 URI는 도메인과 쿼리 문자열 간의 URI 부분입니다.

   ```
   canonical_uri = "/start-network-analyzer-stream"
   ```

1. 표준 헤더 및 서명된 헤더를 생성합니다. 표준 헤더의 후행 `\n`에 유의하세요.
   + 소문자 헤더 이름과 콜론을 차례대로 추가합니다.
   + 헤더에 대한 쉼표로 구분된 값 목록을 추가합니다. 여러 값을 가진 헤더에서 값을 정렬하지 마세요.
   + 새 줄(`\n`)을 추가합니다.

   ```
   canonical_headers = "host:" + host + "\n"
   signed_headers = "host"
   ```

1. 이 알고리즘을 해싱 알고리즘과 일치시킵니다. 이때 SHA-256을 사용해야 합니다.

   ```
   algorithm = "AWS4-HMAC-SHA256"
   ```

1. 생성된 키의 범위를 요청이 수행된 날짜, 리전 및 서비스로 지정하는 자격 증명 범위를 생성합니다.

   ```
   credential_scope = datestamp + "/" + region + "/" + service + "/" + "aws4_request"
   ```

1. 표준 쿼리 문자열을 생성합니다. 쿼리 문자열 값은 URL로 인코딩되어야 하며 이름을 기준으로 정렬되어야 합니다.
   + 문자 코드 포인트를 기준으로 파라미터 이름을 오름차순으로 정렬합니다. ​중복된 이름을 가진 파라미터는 값별로 정렬해야 합니다. 예를 들어 대문자 F로 시작하는 파라미터 이름 앞에 소문자 b로 시작하는 파라미터 이름이 옵니다.
   + 예약되지 않은 문자는 URI로 인코딩하지 않습니다. [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986)에 정의된 예약되지 않은 문자는 A-Z, a-z, 0-9, 하이픈( - ), 밑줄( \$1 ), 마침표( . ) 및 물결표( \$1 )입니다.
   + %XY와 같이 모든 기타 문자를 퍼센트 인코딩합니다. 여기서 X 및 Y는 16진 문자(0 \$1 9 및 대문자 A \$1 F)입니다. 예를 들어 공백 문자는 %20(일부 인코딩 구조인 \$1가 아님)로 인코딩되고, 확장 UTF-8 문자는 %XY%ZA%BC 형식이어야 합니다.
   + 매개변수 값에서 등호(=) 문자를 두 번 인코딩합니다.

   ```
   canonical_querystring  = "X-Amz-Algorithm=" + algorithm
   canonical_querystring += "&X-Amz-Credential="+ URI-encode(access key + "/" + credential_scope)
   canonical_querystring += "&X-Amz-Date=" + amz_date 
   canonical_querystring += "&X-Amz-Expires=300"
   canonical_querystring += "&X-Amz-Security-Token=" + token
   canonical_querystring += "&X-Amz-SignedHeaders=" + signed_headers
   canonical_querystring += "&language-code=en-US&media-encoding=pcm&sample-rate=16000"
   ```

1. 페이로드의 해시를 생성합니다. GET 요청의 경우 페이로드는 빈 문자열입니다.

   ```
   payload_hash = HashSHA256(("").Encode("utf-8")).HexDigest()
   ```

1. 모든 요소를 결합하여 표준 요청을 생성합니다.

   ```
   canonical_request = method + '\n' 
      + canonical_uri + '\n' 
      + canonical_querystring + '\n' 
      + canonical_headers + '\n' 
      + signed_headers + '\n' 
      + payload_hash
   ```

### 작업 2: 서명할 문자열 생성
<a name="create-urlsign"></a>

서명할 문자열에는 요청에 대한 메타 정보가 포함되어 있습니다. 요청 서명을 계산할 때 다음 단계의 서명할 문자열을 사용합니다. 자세한 내용은 *Amazon Web Services 일반 참조*의 [서명 버전 4에 대한 서명할 문자열 생성](https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html)을 참조하세요.

```
string_to_sign=algorithm + "\n"
   + amz_date + "\n"
   + credential_scope + "\n"
   + HashSHA256(canonical_request.Encode("utf-8")).HexDigest()
```

### 작업 3: 서명 계산
<a name="calculate-signature"></a>

AWS 보안 액세스 키에서 서명 키를 생성합니다. 생성된 키는 더 높은 수준의 보호를 위해 날짜, 서비스 및 AWS 리전에 고유합니다. 생성된 키를 사용하여 요청에 서명합니다. 자세한 내용은 *Amazon Web Services 일반 참조*의 [AWS 서명 버전 4에 대한 서명 계산](https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html)을 참조하세요.

이 코드는 `GetSignatureKey` 함수를 구현하여 서명 키를 생성했다고 가정합니다. 자세한 내용과 예제 함수는 [Amazon Web Services 일반 참조](https://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html)의 *서명 버전 4에 대한 서명 키 생성 방법을 보여주는 예*를 참조하세요.

`HMAC(key, data)` 함수는 결과를 이진 형식으로 반환하는 HMAC-SHA256 함수를 나타냅니다.

```
#Create the signing key
signing_key = GetSignatureKey(secret_key, datestamp, region, service)
                
# Sign the string_to_sign using the signing key
signature = HMAC.new(signing_key, (string_to_sign).Encode("utf-8"), Sha256()).HexDigest
```

### 작업 4: 요청에 서명 정보 추가 및 요청 URL 생성
<a name="sign-request"></a>

서명을 계산한 후 쿼리 문자열에 추가합니다. 자세한 내용은 [Amazon Web Services 일반 참조](https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html)의 *요청에 서명 추가*를 참조하세요.

```
#Add the authentication information to the query string
canonical_querystring += "&X-Amz-Signature=" + signature
                
# Sign the string_to_sign using the signing key
request_url = endpoint + canonical_uri + "?" + canonical_querystring
```

## 다음 단계
<a name="network-analyzer-request-next"></a>

이제 WebSocket 라이브러리와 함께 요청 URL을 사용하여 서비스에 요청하고 메시지를 관찰할 수 있습니다. 자세한 내용은 [WebSocket 메시지 및 상태 코드](network-analyer-messages-status.md) 단원을 참조하십시오.

# WebSocket 메시지 및 상태 코드
<a name="network-analyer-messages-status"></a>

미리 서명된 요청을 생성한 후 WebSocket 라이브러리 또는 프로그래밍 언어에 적합한 라이브러리와 함께 요청 URL을 사용하여 서비스에 요청할 수 있습니다. 이 미리 서명된 요청을 생성하는 방법에 대한 자세한 내용은 [WebSocket 라이브러리를 사용하여 미리 서명된 요청 생성](network-analyzer-generate-request.md) 섹션을 참조하세요.

## WebSocket 메시지
<a name="network-analyer-messages"></a>

WebSocket 프로토콜을 사용하여 양방향 연결을 설정할 수 있습니다. 메시지는 클라이언트에서 서버로, 서버에서 클라이언트로 전송될 수 있습니다. 그러나 네트워크 분석기는 서버에서 클라이언트로 전송하는 메시지만 지원합니다. 클라이언트로부터 받은 모든 메시지는 예상치 못한 것이며 클라이언트로부터 메시지를 받으면 서버는 자동으로 WebSocket 연결을 닫습니다.

요청이 수신되고 추적 메시징 세션이 시작되면 서버는 페이로드인 JSON 구조로 응답합니다. 페이로드 및 AWS Management Console에서 추적 메시징을 활성화하는 방법에 대한 자세한 내용은 [네트워크 분석기 추적 메시지 로그 실시간 보기 및 모니터링](network-analyzer-logs.md) 섹션을 참조하세요.

## WebSocket 상태 코드
<a name="network-analyer-status-codes"></a>

다음은 서버에서 클라이언트로의 통신을 위한 WebSocket 상태 코드를 보여줍니다. WebSocket 상태 코드는 [연결의 정상 폐쇄에 대한 RFC 표준](https://datatracker.ietf.org/doc/html/rfc6455#section-7.3)을 따릅니다.

다음은 지원되는 상태 코드를 보여줍니다.
+ 

**1000**  
이 상태 코드는 정상적인 폐쇄를 나타내며, 이는 WebSocket 연결이 설정되고 요청이 이행되었음을 의미합니다. 세션이 유휴 상태여서 연결 시간 초과가 발생할 때 이 상태가 관찰될 수 있습니다.
+ 

**1002**  
이 상태 코드는 프로토콜 오류로 인해 엔드포인트가 연결을 종료하고 있음을 나타냅니다.
+ 

**1003**  
이 상태 코드는 엔드포인트가 수락할 수 없는 형식의 데이터를 수신하여 연결을 종료한 오류 상태를 나타냅니다. 엔드포인트는 텍스트 데이터만 지원하며 지원되지 않는 형식을 사용하는 클라이언트로부터 이진 메시지 또는 메시지를 수신하는 경우 이 상태 코드를 표시할 수 있습니다.
+ 

**1008**  
이 상태 코드는 엔드포인트가 정책을 위반하는 메시지를 수신하여 연결을 종료한 오류 상태를 나타냅니다. 이 상태는 일반적이며 1003 또는 1009와 같은 다른 상태 코드가 적용되지 않을 때 표시됩니다. 정책을 숨겨야 하거나 만료된 서명과 같은 권한 부여 실패가 있는 경우에도 이 상태가 표시됩니다.
+ 

**1011**  
이 상태 코드는 서버가 요청을 이행하지 못하게 하는 예기치 않은 조건이나 내부 오류가 발생하여 연결을 종료하는 오류 상태를 나타냅니다.

## 다음 단계
<a name="network-analyzer-websockets-next"></a>

미리 서명된 요청을 생성하는 방법과 WebSocket 연결을 사용하여 서버에서 메시지를 관찰하는 방법을 배웠으므로 이제 추적 메시징을 활성화하고 무선 게이트웨이 및 무선 디바이스 리소스에 대한 메시지 로그 수신을 시작할 수 있습니다. 자세한 내용은 [네트워크 분석기 추적 메시지 로그 실시간 보기 및 모니터링](network-analyzer-logs.md) 단원을 참조하십시오.

# 네트워크 분석기 추적 메시지 로그 실시간 보기 및 모니터링
<a name="network-analyzer-logs"></a>

네트워크 분석기 구성에 리소스를 추가한 경우 추적 메시징을 활성화하여 리소스에 대한 추적 메시지 수신을 시작할 수 있습니다. AWS Management Console, AWS IoT 무선 API 또는 AWS CLI를 사용할 수 있습니다.

## 필수 조건
<a name="network-analyzer-logs-prereq"></a>

네트워크 분석기를 사용하여 추적 메시징을 활성화하려면 먼저 다음을 수행해야 합니다.
+ 이 기본 네트워크 분석기 구성에 모니터링할 리소스를 추가합니다. 자세한 내용은 [리소스 추가 및 네트워크 분석기 구성 업데이트](network-analyzer-resources.md) 단원을 참조하십시오.
+ `StartNetworkAnalyzerStream` 요청 URL을 사용하여 미리 서명된 요청을 생성합니다. 이 요청을 하는 AWS Identity and Access Management 역할의 자격 증명을 사용하여 요청이 서명됩니다. 자세한 내용은 [미리 서명된 URL 생성](network-analyzer-generate-request.md#network-analyzer-presigned-url) 단원을 참조하십시오.

## 콘솔을 사용하여 추적 메시지 활성화
<a name="network-analyzer-activate-console"></a>

추적 메시징을 활성화하려면

1. [AWS IoT 콘솔의 네트워크 분석기 허브](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer)를 열고 네트워크 분석기 구성인 **NetworkAnalyzerConfig\$1Default**를 선택합니다.

1. 네트워크 분석기 구성의 세부 정보 페이지에서 **추적 메시징 활성화(Activate trace messaging)**를 선택한 다음 **활성화(Activate)**를 선택합니다.

   최신 추적 메시지가 콘솔에서 가장 먼저 나타나는 추적 메시지 수신을 시작합니다.
**참고**  
메시징 세션이 시작된 후 추적 메시지를 수신하면 세션을 비활성화하거나 추적 세션에서 나갈 때까지 추가 비용이 발생할 수 있습니다. 요금에 대한 자세한 내용은 [AWS IoT Core 요금](https://aws.amazon.com/iot-core/pricing/)을 참조하십시오.

## 추적 메시지 보기 및 모니터링
<a name="network-analyzer-view-trace"></a>

추적 메시징을 활성화하면 WebSocket 연결이 설정되고 추적 메시지가 실시간으로 최신 항목부터 나타나기 시작합니다. 각 페이지에 표시할 추적 메시지 수를 지정하고 각 메시지에 대한 관련 필드만 표시하도록 기본 설정을 사용자 지정할 수 있습니다. 예를 들어, **로그 수준(Log level)**이 `ERROR`로 설정된 무선 게이트웨이 리소스에 대한 로그만 표시하도록 추적 메시지 로그를 사용자 지정할 수 있으므로 게이트웨이의 오류를 빠르게 식별하고 디버그할 수 있습니다. 추적 정보 메시지에는 다음 정보가 포함됩니다.
+ **메시지 번호(Message Number)**: 가장 먼저 수신된 마지막 메시지를 표시하는 고유 번호입니다.
+ **리소스 ID(Resource ID)**: 리소스의 무선 게이트웨이 또는 무선 디바이스 ID입니다.
+ **타임스탬프(Timestamp)**: 메시지가 수신된 시간입니다.
+ **메시지 ID**: AWS IoT Core for LoRaWAN이 수신된 각 메시지에 할당하는 식별자입니다.
+ **FPort**: WebSocket 연결을 사용하여 디바이스와 통신하기 위한 주파수 포트입니다.
+ **DevEui**: 무선 디바이스의 확장 고유 식별자(EUI)입니다.
+ **리소스(Resource)**: 모니터링되는 리소스가 무선 디바이스인지 또는 무선 게이트웨이인지 여부입니다.
+ **이벤트**: 무선 디바이스에 대한 로그 메시지의 이벤트로 **조인(Join)**, **리조인(Rejoin)**, **Uplink\$1Data**, **Downlink\$1Data** 또는 **등록(Registration)**일 수 있습니다.
+ **로그 수준(Log level)**: 디바이스의 `INFO` 또는 `ERROR` 로그 스트림에 대한 정보입니다.

## 네트워크 분석기 JSON 로그 메시지
<a name="connect-iot-network-analyzer-trace-logs"></a>

한 번에 하나의 추적 메시지를 선택하여 해당 메시지에 대한 JSON 페이로드를 볼 수도 있습니다. 추적 메시지 로그에서 선택한 메시지에 따라 **CustomerLog** 및 **LoRaFrame**의 두 부분이 포함되어 있음을 나타내는 정보가 JSON 페이로드에 표시됩니다.

**CustomerLog**  
JSON의 **CustomerLog** 부분은 메시지를 수신한 리소스의 유형 및 식별자, 로그 수준 및 메시지 내용을 표시합니다. 다음 예제에서는 **CustomerLog** 로그 메시지를 보여줍니다. JSON의 `message` 필드를 사용하여 오류 및 해결 방법에 대한 자세한 정보를 얻을 수 있습니다.

**LoRaFrame**  
JSON의 **LoRaFrame** 부분에는 **메시지 ID(Message ID)**가 있으며 디바이스의 물리적 페이로드 및 무선 메타데이터에 대한 정보가 포함되어 있습니다.

다음은 추적 정보 메시지의 구조를 보여줍니다.

```
export type TraceMessage = {
  ResourceId: string;
  Timestamp: string;
  LoRaFrame: 
  {
    MessageId: string;
    PhysicalPayload: any;
    WirelessMetadata: 
    {
      fPort: number;
      dataRate: number;
      devEui: string;
      frequency: number,
      timestamp: string;
    },
  }
  CustomerLog: 
  {
    resource: string;
    wirelessDeviceId: string;
    wirelessDeviceType: string;
    event: string;
    logLevel: string;
    messageId: string;
    message: string;
  },
};
```

## 검토 및 다음 단계
<a name="network-analyzer-review"></a>

이 섹션에서는 추적 메시지를 보고 정보를 사용하여 오류를 디버깅하는 방법을 배웠습니다. 모든 메시지를 본 후 다음 작업을 수행할 수 있습니다.
+ 

**추적 메시징 비활성화**  
추가 비용이 발생하지 않도록 네트워크 분석기 추적 메시징 세션을 비활성화할 수 있습니다. 세션을 비활성화하면 WebSocket 연결이 끊어지므로 추가 추적 메시지가 수신되지 않습니다. 콘솔에서 기존 메시지를 계속 볼 수 있습니다.
+ 

**구성에 대한 프레임 정보 편집**  
네트워크 분석기 구성을 편집하고 프레임 정보를 비활성화할지 여부를 선택하고 메시지의 로그 수준을 선택할 수 있습니다. 구성을 업데이트하기 전에 추적 메시징 세션을 비활성화하는 것이 좋습니다. 이렇게 편집하려면 [AWS IoT 콘솔의 네트워크 분석기 세부 정보 페이지](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer/details/NetworkAnalyzerConfig_Default)를 열고 **편집(Edit)**을 선택합니다. 그런 다음 새 구성 설정으로 구성을 업데이트하고 추적 메시징을 활성화하여 업데이트된 메시지를 볼 수 있습니다.
+ 

**구성에 리소스 추가**  
또한 더 많은 리소스를 추가하고 네트워크 분석기 구성에 실시간으로 모니터링할 수 있습니다. 총 250개의 무선 게이트웨이 및 무선 디바이스 리소스를 결합하여 추가할 수 있습니다. 리소스를 추가하려면 [AWS IoT 콘솔의 네트워크 분석기 세부 정보 페이지](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer/details/NetworkAnalyzerConfig_Default)에서 **리소스(Resources)** 탭을 선택하고 **리소스 추가(Add resources)**를 선택합니다. 그런 다음 새 리소스로 구성을 업데이트하고 추적 메시징을 활성화하여 추가 리소스에 대한 업데이트된 메시지를 볼 수 있습니다.

구성 설정을 편집하고 리소스를 추가하여 네트워크 분석기 구성을 업데이트하는 방법에 대한 자세한 내용은 [리소스 추가 및 네트워크 분석기 구성 업데이트](network-analyzer-resources.md) 섹션을 참조하세요.

# 네트워크 분석기를 사용하여 멀티캐스트 그룹 및 FUOTA 작업 디버깅 및 문제 해결
<a name="lorawan-network-analyzer-fuota"></a>

모니터링할 수 있는 무선 리소스에는 LoRaWAN 디바이스, LoRaWAN 게이트웨이 및 멀티캐스트 그룹이 포함됩니다. 또한 네트워크 분석기를 사용하여 FUOTA 작업과 관련된 문제를 디버깅하고 해결할 수 있습니다. 또한 FUOTA 작업이 진행 중일 때 설정, 데이터 전송 및 상태 쿼리와 관련된 메시지를 모니터링하고 추적할 수 있습니다.

FUOTA 작업을 모니터링하려면 작업에 멀티캐스트 그룹이 포함된 경우 멀티캐스트 그룹과 그룹 내 디바이스를 모두 네트워크 분석기 구성에 추가해야 합니다. 또한 FUOTA 태스크가 진행되는 동안 멀티캐스트 그룹 및 디바이스와 교환되는 유니캐스트 및 멀티캐스트 업링크 및 다운링크 메시지를 추적하려면 프레임 정보와 멀티캐스트 프레임 정보를 활성화해야 합니다.

멀티캐스트 그룹을 모니터링하려면 네트워크 분석기 구성에 그룹을 추가하고 멀티캐스트 프레임 정보를 사용하여 이러한 그룹으로 전송되는 멀티캐스트 다운링크 메시지 문제를 해결할 수 있습니다. 유니캐스트 통신이 사용되는 그룹에 조인하려는 디바이스의 문제를 해결하려면 이러한 디바이스도 네트워크 분석기 구성에 포함해야 합니다. 그룹 내 디바이스와의 유니캐스트 통신만 모니터링하려면 무선 디바이스의 프레임 정보를 활성화하세요. 이 접근 방식을 사용하면 멀티캐스트 그룹과 그룹에 조인하는 디바이스 모두에 대한 포괄적인 모니터링 및 진단이 가능합니다.

다음 섹션에서는 네트워크 분석기를 사용하여 멀티캐스트 그룹 및 FUOTA 작업을 디버깅하고 문제를 해결하는 방법을 설명합니다.

**Topics**
+ [디바이스만 포함된 FUOTA 태스크 디버깅](#lorawan-network-analyzer-fuota-devices)
+ [멀티캐스트 그룹을 사용하여 FUOTA 작업 디버깅](#lorawan-network-analyzer-fuota-multicast)
+ [멀티캐스트 그룹에 조인하려는 디바이스 디버깅](#lorawan-network-analyzer-fuota-multicast)
+ [멀티캐스트 그룹 세션 디버깅](#lorawan-network-analyzer-fuota-multicastsession)

## 디바이스만 포함된 FUOTA 태스크 디버깅
<a name="lorawan-network-analyzer-fuota-devices"></a>

네트워크 분석기를 사용하여 LoRaWAN 디바이스만 작업에 추가된 FUOTA 작업을 디버깅할 수 있습니다. FUOTA 작업에 디바이스를 추가하는 방법에 대한 자세한 내용은 [FUOTA 태스크에 디바이스 및 멀티캐스트 그룹 추가 및 FUOTA 세션 예약](lorawan-fuota-add-devices.md) 섹션을 참조하세요. FUOTA 작업을 디버깅하려면 다음 단계를 수행하세요.

1. 태스크가 진행되는 동안 디바이스와 교환되는 FUOTA 업링크 및 다운링크 메시지를 모니터링할 수 있도록 무선 디바이스의 프레임 정보를 활성화하여 네트워크 분석기 구성을 생성합니다.

1. 무선 디바이스 식별자를 사용하여 FUOTA 작업의 디바이스를 네트워크 분석기 구성에 추가합니다.

1. 추적 메시징을 활성화하여 네트워크 분석기 구성에 있는 디바이스에 대한 추적 메시지 수신을 시작합니다.

추적 메시지 정보 `applicationCommandType` 열에서 데이터 전송 및 조각화 설정과 관련된 유니캐스트 다운링크 메시지 수신을 시작합니다.

**참고**  
추적 메시지 표에 `applicationCommandType` 열이 표시되지 않는 경우 테이블 설정을 조정하여 이 열을 표시할 수 있습니다.

**WirelessMetadata > ApplicationInfo**의 JSON 로그 메시지에서 `applicationCommandType` 및 기타 세부 메시지를 볼 수도 있습니다.

## 멀티캐스트 그룹을 사용하여 FUOTA 작업 디버깅
<a name="lorawan-network-analyzer-fuota-multicast"></a>

네트워크 분석기를 사용하여 멀티캐스트 그룹 및 LoRaWAN 디바이스가 그룹에 추가된 FUOTA 작업을 디버깅할 수 있습니다. FUOTA 작업에 디바이스를 추가하는 방법에 대한 자세한 내용은 [FUOTA 태스크에 디바이스 및 멀티캐스트 그룹 추가 및 FUOTA 세션 예약](lorawan-fuota-add-devices.md) 섹션을 참조하세요. FUOTA 작업을 디버깅하려면 다음 단계를 수행하세요.

1. 무선 디바이스 및 멀티캐스트 그룹의 프레임 정보 및 멀티캐스트 프레임 정보 설정을 활성화하여 네트워크 분석기 구성을 생성합니다.

1. 멀티캐스트 그룹 식별자를 사용하여 FUOTA 작업의 멀티캐스트 그룹을 네트워크 분석기 구성에 추가합니다. 멀티캐스트 프레임 정보를 활성화하면 FUOTA 작업이 진행되는 동안 그룹에 전송되는 펌웨어 데이터 메시지와 FUOTA 상태 쿼리 메시지를 디버깅할 수 있습니다.

1. 무선 디바이스 식별자를 사용하여 멀티캐스트 그룹의 디바이스를 네트워크 분석기 구성에 추가합니다. 프레임 정보를 활성화하면 FUOTA 작업이 진행되는 동안 디바이스와 직접 교환되는 업링크 및 다운링크 메시지를 모니터링할 수 있습니다.

1. 추적 메시징을 활성화하여 네트워크 분석기 구성에 있는 디바이스 및 멀티캐스트 그룹에 대한 추적 메시지 수신을 시작합니다.

그런 다음 추적 메시지 표의 `applicationCommandType` 열과 [디바이스만 포함된 FUOTA 태스크 디버깅](#lorawan-network-analyzer-fuota-devices)에 설명된 JSON 로그 메시지의 세부 정보를 사용하여 추적 메시지를 보고 디버깅할 수 있습니다.

## 멀티캐스트 그룹에 조인하려는 디바이스 디버깅
<a name="lorawan-network-analyzer-fuota-multicast"></a>

네트워크 분석기를 사용하여 멀티캐스트 그룹에 조인하려는 디바이스를 디버깅할 수 있습니다. 멀티캐스트 그룹에 디바이스를 추가하는 방법에 대한 자세한 내용은 [멀티캐스트 그룹 생성 및 그룹에 디바이스 추가](lorawan-create-multicast-groups.md) 섹션을 참조하세요. 멀티캐스트 그룹을 디버깅하려면 다음 단계를 수행하세요.

1. 무선 디바이스의 프레임 정보를 활성화하여 네트워크 분석기 구성을 생성합니다.

1. 무선 디바이스 식별자를 사용하여 모니터링할 디바이스를 네트워크 분석기 구성에 추가합니다.

1. 추적 메시징을 활성화하여 네트워크 분석기 구성에 있는 디바이스에 대한 추적 메시지 수신을 시작합니다.

1. 그룹 내 디바이스에 대해 추적 메시징이 활성화된 후 멀티캐스트 그룹에 디바이스를 연결하기 시작합니다.

## 멀티캐스트 그룹 세션 디버깅
<a name="lorawan-network-analyzer-fuota-multicastsession"></a>

네트워크 분석기를 사용하여 멀티캐스트 그룹 세션을 디버깅할 수 있습니다. 자세한 내용은 [멀티캐스트 그룹의 디바이스로 전송하도록 다운링크 메시지 예약](lorawan-multicast-schedule-downlink.md) 단원을 참조하십시오. 멀티캐스트 그룹 세션을 디버깅하려면 다음 단계를 수행하세요.

1. 멀티캐스트 그룹의 멀티캐스트 프레임 정보를 활성화하여 네트워크 분석기 구성을 생성합니다.

1. 멀티캐스트 그룹 식별자를 사용하여 모니터링할 멀티캐스트 그룹을 네트워크 분석기 구성에 추가합니다.

1. 멀티캐스트 세션이 시작되기 전에 추적 메시징을 활성화하여 멀티캐스트 그룹 세션에 대한 추적 메시지 수신을 시작합니다.

1. 멀티캐스트 그룹 세션을 시작하고 추적 메시지 테이블에 표시된 메시지와 JSON 로그 메시지를 확인하여 상태를 모니터링합니다.

추적 메시지 테이블의 `DevAddr` 열에 `MulticastAddr`이 표시됩니다. JSON 로그 메시지의 **WirelessMetadata > ApplicationInfo**에서 `MulticastGroupId`와 같은 세부 메시지를 볼 수도 있습니다.