빠른 시작: 디바이스에서 IoT 허브로 원격 분석 보내기 및 Azure CLI를 사용하여 모니터링

IoT Hub는 스토리지 또는 처리를 위해 IoT 디바이스에서 클라우드로 다량의 원격 분석 데이터를 수집할 수 있게 해주는 Azure 서비스입니다. 코드리스 빠른 시작에서 Azure CLI를 사용하여 IoT 허브 및 시뮬레이트된 디바이스를 만듭니다. 허브에 디바이스 원격 분석을 보내고 디바이스에서 메시지, 호출 메서드 및 업데이트 속성을 보냅니다. 또한 Azure Portal를 사용하여 디바이스 메트릭을 시각화할 수 있습니다. 이 문서에서는 CLI를 사용하여 IoT Hub 애플리케이션과 상호 작용하는 개발자를 위한 기본 워크플로를 보여 줍니다.

필수 조건

  • Azure 구독이 아직 없는 경우 시작하기 전에 무료 구독을 만듭니다.
  • Azure CLI 브라우저 또는 Windows 터미널과 같은 앱에서 실행되는 대화형 CLI 셸인 Azure Cloud Shell을 사용하여 이 빠른 시작의 모든 명령을 실행할 수 있습니다. Cloud Shell을 사용하는 경우에는 아무 것도 설치할 필요가 없습니다. CLI를 로컬로 사용하려면 이 빠른 시작에 Azure CLI 버전 2.36 이상이 필요합니다. az --version을 실행하여 버전을 찾습니다. 설치하거나 업그레이드하려면 Azure CLI 설치를 참조하세요.

Azure Portal에 로그인

Azure Portal에 로그인합니다.

CLI를 로컬로 실행하든, Cloud Shell에서 실행하든 관계없이, 브라우저에서 포털을 열어 둡니다. 나중에 빠른 시작에서 사용할 예정입니다.

Cloud Shell 시작

이 섹션에서는 Azure Cloud Shell의 인스턴스를 시작합니다. CLI를 로컬로 사용하는 경우 두 CLI 세션 준비 섹션으로 건너뜁니다.

Cloud Shell을 시작하려면 다음을 수행합니다.

  1. Azure Portal 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다.

    Azure portal Cloud Shell button

    참고 항목

    Cloud Shell을 처음 사용하는 경우 Cloud Shell을 사용하는 데 필요한 스토리지를 만들라는 메시지가 표시됩니다. 구독을 선택하여 스토리지 계정 및 Microsoft Azure Files 공유를 만듭니다.

  2. 환경 선택 드롭다운에서 원하는 CLI 환경을 선택합니다. 이 빠른 시작에서는 Bash 환경을 사용합니다. PowerShell 환경을 사용해도 됩니다.

    참고 항목

    일부 명령의 경우 BashPowerShell 환경에서는 다른 구문이나 서식이 필요합니다. 자세한 내용은 Azure CLI를 성공적으로 사용하기 위한 팁을 참조하세요.

    Select CLI environment

두 CLI 세션 준비

다음으로, 두 Azure CLI 세션을 준비합니다. Cloud Shell을 사용하는 경우 별도의 Cloud Shell 탭에서 이러한 세션을 실행합니다. 로컬 CLI 클라이언트를 사용하는 경우 개별 CLI 인스턴스를 실행합니다. 다음 작업에는 별도의 CLI 세션을 사용합니다.

  • 첫 번째 세션은 IoT Hub와 통신하는 IoT 디바이스를 시뮬레이트합니다.
  • 두 번째 세션은 첫 번째 세션에서 디바이스를 모니터링하거나 메시지, 명령 및 속성 업데이트를 보냅니다.

명령을 실행하려면 복사를 선택하여 이 빠른 시작의 코드 블록을 복사한 후 셸 세션에 붙여 넣고 실행합니다.

Azure CLI를 사용하려면 Azure 계정에 로그인해야 합니다. Azure CLI 셸 세션과 IoT Hub 간의 모든 통신을 인증하고 암호화합니다. 따라서 이 빠른 시작에는 연결 문자열과 같은 실제 디바이스에서 사용하는 추가 인증이 필요하지 않습니다.

  • 첫 번째 CLI 세션에서 az extension add 명령을 실행합니다. 이 명령은 Azure CLI용 Microsoft Azure IoT 확장을 CLI 셸에 추가합니다. IOT 확장은 Azure CLI에 IoT Hub, IoT Edge 및 IoT DPS(Device Provisioning Service) 고유의 명령을 추가합니다.

    az extension add --name azure-iot
    

    Azure IOT 확장을 설치한 후에는 Cloud Shell 세션에서 다시 설치할 필요가 없습니다.

    참고 항목

    이 문서에서는 azure-iot라는 최신 버전의 Azure IoT 확장이 사용됩니다. 레거시 버전은 azure-cli-iot-ext라고 합니다. 한 번에 하나의 버전만 설치해야 합니다. az extension list 명령을 사용하여 현재 설치된 확장의 유효성을 검사할 수 있습니다.

    az extension remove --name azure-cli-iot-ext를 사용하여 레거시 버전의 확장을 제거합니다.

    az extension add --name azure-iot를 사용하여 새 버전의 확장을 추가합니다.

    설치한 확장을 확인하려면 az extension list를 사용합니다.

  • 두 번째 CLI 세션을 엽니다. 브라우저에서 Cloud Shell을 사용하는 경우 새 세션 열기 단추를 사용합니다. CLI를 로컬로 사용하는 경우 두 번째 CLI 인스턴스를 엽니다.

    Open new Cloud Shell session

IoT Hub 만들기

이 섹션에서는 Azure CLI를 사용하여 리소스 그룹 및 IoT 허브를 만듭니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. IoT 허브는 IoT 애플리케이션과 디바이스 간의 양방향 통신을 위한 중앙 메시지 허브 역할을 합니다.

필요에 따라 Azure Portal, Visual Studio Code 또는 기타 프로그래밍 방법을 사용하여 Azure 리소스 그룹, IoT 허브 및 기타 리소스를 만들 수 있습니다.

  1. 첫 번째 CLI 세션에서 az group create를 실행하여 리소스 그룹을 만듭니다. 다음 명령은 eastus 위치에 MyResourceGroup이라는 리소스 그룹을 만듭니다.

    az group create --name MyResourceGroup --location eastus
    
  2. 첫 번째 CLI 세션에서 Az PowerShell module iot hub create 명령을 실행하여 IoT Hub를 만듭니다. IoT Hub를 만드는 데 몇 분이 걸립니다.

    YourIotHubName. IoT 허브에 대해 선택한 이름을 사용하여 다음 명령에서 이 자리 표시자와 주변 중괄호를 바꿉니다. IoT Hub 이름은 Azure에서 전역적으로 고유해야 합니다. 자리 표시자가 표시될 때마다 이 빠른 시작의 나머지 부분에서 IoT 허브 이름을 사용합니다.

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

디바이스 만들기 및 모니터링

이 섹션에서는 첫 번째 CLI 세션에서 시뮬레이트된 디바이스를 만듭니다. 시뮬레이트된 디바이스는 IoT Hub에 디바이스 원격 분석을 보냅니다. 두 번째 CLI 세션에서 이벤트 및 원격 분석을 모니터링합니다.

시뮬레이트된 디바이스를 만들고 시작 하려면 다음을 실행합니다.

  1. 첫 번째 CLI 세션에서 az iot hub device-identity create 명령을 실행합니다. 이 명령은 시뮬레이트된 디바이스 ID를 만듭니다.

    YourIotHubName. 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.

    simDevice. 이 빠른 시작의 나머지 부분에서 시뮬레이트된 디바이스에 대해 이 이름을 직접 사용할 수 있습니다. 필요에 따라 다른 이름을 사용합니다.

    az iot hub device-identity create -d simDevice -n {YourIoTHubName} 
    
  2. 첫 번째 CLI 세션에서 az iot device simulate 명령을 실행합니다. 이 명령은 시뮬레이트된 디바이스를 시작합니다. 이 디바이스는 IoT Hub에 원격 분석을 보내고 메시지를 수신합니다.

    YourIotHubName. 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.

    az iot device simulate -d simDevice -n {YourIoTHubName}
    

디바이스를 모니터링하려면 다음을 수행합니다.

  1. 두 번째 CLI 세션에서 az iot hub monitor-events 명령을 실행합니다. 이 명령은 시뮬레이트된 디바이스를 지속적으로 모니터링합니다. 출력은 시뮬레이트된 디바이스가 IoT Hub로 보내는 이벤트 및 속성 상태 변경과 같은 원격 분석을 보여 줍니다.

    YourIotHubName. 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.

    az iot hub monitor-events --output table -p all -n {YourIoTHubName}
    

    Screenshot of monitoring events on a simulated device.

  2. 두 번째 CLI 세션에서 시뮬레이트된 디바이스를 모니터링한 후 Ctrl+C를 눌러 모니터링을 중지합니다. 이후 단계에서 사용하기 위해 두 번째 CLI 세션을 열어 둡니다.

CLI를 사용하여 메시지 보내기

이 세션에서 시뮬레이트된 디바이스에 메시지를 보냅니다.

  1. 첫 번째 CLI 세션에서 시뮬레이트된 디바이스가 아직 실행 중인지 확인합니다. 디바이스를 중지한 경우 다음 명령을 실행하여 다시 시작합니다.

    YourIotHubName. 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.

    az iot device simulate -d simDevice -n {YourIoTHubName}
    
  2. 두 번째 CLI 세션에서 az iot device c2d-message send 명령을 실행합니다. 이 명령은 IoT Hub에서 시뮬레이트된 디바이스로 클라우드-디바이스 메시지를 보냅니다. 이 메시지에는 문자열 1개와 키-값 쌍 2개가 포함됩니다.

    YourIotHubName. 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.

    az iot device c2d-message send -d simDevice --data "Hello World" --props "key0=value0;key1=value1" -n {YourIoTHubName}
    

    필요에 따라 Azure Portal을 사용하여 클라우드-디바이스 메시지를 보낼 수 있습니다. 이렇게 하려면 IoT Hub에 대한 개요 페이지로 이동하고, IoT 디바이스를 선택하고, 시뮬레이트된 디바이스를 선택한 후 , 디바이스에 메시지 전송을 선택합니다.

  3. 첫 번째 CLI 세션에서 시뮬레이트된 디바이스가 메시지를 받았는지 확인합니다.

    Screenshot of a simulated device receiving a message.

CLI를 사용하여 디바이스 메서드 호출

이 섹션에서는 시뮬레이트된 디바이스에서 직접 메서드를 호출합니다.

  1. 앞서 수행한 것처럼 첫 번째 CLI 세션에서 시뮬레이트된 디바이스가 실행 중인지 확인합니다. 그렇지 않은 경우 다시 시작합니다.

  2. 두 번째 CLI 세션에서 az iot hub invoke-device-method 명령을 실행합니다. 이 예제에서는 디바이스에 대한 기존 메서드가 없습니다. 이 명령은 시뮬레이트된 디바이스에서 예제 메서드 이름을 호출하고 페이로드를 반환합니다.

    YourIotHubName. 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.

    az iot hub invoke-device-method --mn MySampleMethod -d simDevice -n {YourIoTHubName}
    
  3. 첫 번째 CLI 세션에서 출력에 메서드 호출이 표시되는지 확인합니다.

    Screenshot of a simulated device displaying output after a method was invoked.

CLI를 사용하여 디바이스 속성 업데이트

이 섹션에서는 속성 값을 설정하여 시뮬레이트된 디바이스의 상태를 업데이트합니다.

  1. 앞서 수행한 것처럼 첫 번째 CLI 세션에서 시뮬레이트된 디바이스가 실행 중인지 확인합니다. 그렇지 않은 경우 다시 시작합니다.

  2. 두 번째 CLI 세션에서 az iot hub device-twin update 명령을 실행합니다. 이 명령은 시뮬레이트된 디바이스에 해당하는 IoT Hub 디바이스 쌍의 속성을 원하는 상태로 업데이트합니다. 이 경우 이 명령은 예제 온도 조건 속성을 설정합니다.

    Important

    CLI 셸에서 PowerShell을 사용하는 경우 아래 명령의 PowerShell 버전을 사용합니다. PowerShell의 경우 JSON 페이로드의 문자를 이스케이프해야 합니다.

    YourIotHubName. 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.

    az iot hub device-twin update -d simDevice --desired '{"conditions":{"temperature":{"warning":98, "critical":107}}}' -n {YourIoTHubName}
    
    az iot hub device-twin update -d simDevice --desired '{\"conditions\":{\"temperature\":{\"warning\":98, \"critical\":107}}}' -n {YourIoTHubName}
    
  3. 첫 번째 CLI 세션에서 시뮬레이트된 디바이스가 속성 업데이트를 출력하는지 확인합니다.

    Screenshot that shows how to update properties on a device.

  4. 두 번째 CLI 세션에서 az iot hub device-twin show 명령을 실행합니다. 이 명령은 디바이스 속성의 변경 내용을 보고합니다.

    YourIotHubName. 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.

    az iot hub device-twin show -d simDevice --query properties.reported -n {YourIoTHubName}
    

    Screenshot that shows the updated properties on a device twin.

포털에서 메시징 메트릭 보기

Azure Portal을 사용하여 IoT 허브 및 디바이스의 모든 측면을 관리할 수 있습니다. 디바이스에서 원격 분석을 수집하는 일반적인 IoT Hub 애플리케이션에서는 디바이스를 모니터링하거나 디바이스 원격 분석에서 메트릭을 볼 수 있습니다.

Azure Portal에서 메시징 메트릭을 시각화하려면 다음을 수행합니다.

  1. 포털의 왼쪽 탐색 메뉴에서 모든 리소스를 선택합니다. 이 탭에는 만든 IoT hub를 비롯하여 구독의 모든 리소스가 나열됩니다.

  2. 만든 IoT hub에서 링크를 선택합니다. 포털에서 허브에 대한 개요 페이지가 표시됩니다.

  3. IoT Hub의 왼쪽 창에서 메트릭을 선택합니다.

    IoT Hub messaging metrics

  4. 범위 필드에 IoT Hub 이름을 입력합니다.

  5. 메트릭 네임스페이스 필드에서 Iot Hub 표준 메트릭을 선택합니다.

  6. 메트릭 필드에서 사용된 총 메시지 수를 선택합니다.

  7. 디바이스가 메시지를 보낸 타임라인 영역 위로 마우스 포인터를 가져갑니다. 특정 시점의 총 메시지 수가 타임라인의 왼쪽 아래 모서리에 나타납니다.

    View Azure IoT Hub metrics

  8. 필요에 따라 메트릭 드롭다운을 사용하여 시뮬레이트된 디바이스에 대한 다른 메트릭을 표시합니다. C2d 메시지 배달 완료됨 또는 전체 디바이스(미리 보기)를 예로 들 수 있습니다.

리소스 정리

이 빠른 시작에서 만든 Azure 리소스가 더 이상 필요하지 않은 경우 Azure CLI를 사용하여 삭제할 수 있습니다.

그 다음 권장 문서를 계속 진행하려는 경우 이미 만든 리소스를 다시 사용할 수 있습니다.

Important

리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹 및 그 안에 포함된 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 해야 합니다.

리소스 그룹을 이름으로 삭제하려면:

  1. az group delete 명령을 실행합니다. 이 명령을 실행하면 만든 리소스 그룹, IoT 허브 및 디바이스 등록이 제거됩니다.

    az group delete --name MyResourceGroup
    
  2. az group list 명령을 실행하여 리소스 그룹을 삭제했는지 확인합니다.

    az group list
    

다음 단계

이 빠른 시작에서는 Azure CLI를 사용하여 IoT Hub를 만들고, 시뮬레이트된 디바이스를 만들고, 원격 분석을 전송하고 모니터링하고, 메서드를 호출하고, 원하는 속성을 설정하고, 리소스를 정리했습니다. Azure Portal를 사용하여 디바이스에서 메시징 메트릭을 시각화했습니다.

디바이스 개발자인 경우 권장되는 다음 단계는 C용 Azure IoT 디바이스 SDK를 사용하는 원격 분석 빠른 시작을 확인하는 것입니다. 필요에 따라 기본 설정 언어 또는 SDK에서 사용 가능한 Azure IoT Hub 원격 분석 빠른 시작 문서 중 하나를 참조하세요.

백 엔드 애플리케이션에서 시뮬레이션된 디바이스를 제어하는 방법을 알아보려면 다음 빠른 시작을 계속합니다.