자습서: Azure Stream Analytics를 IoT Edge 모듈로 배포

적용 대상:IoT Edge 1.4 checkmark IoT Edge 1.4

Important

IoT Edge 1.4는 지원되는 릴리스입니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.

이 자습서에서는 Azure Portal에서 Azure Stream Analytics 작업을 만든 다음, 추가 코드 없이 IoT Edge 모듈로 배포합니다.

다음 방법에 대해 설명합니다.

  • 에지에서 데이터를 처리하는 Azure Stream Analytics 작업을 만듭니다.
  • 다른 IoT Edge 모듈을 사용하여 새 Azure Stream Analytics 작업을 커넥트.
  • Azure Portal에서 IoT Edge 디바이스에 Azure Stream Analytics 작업을 배포합니다.

Diagram of stream architecture, showing the staging and deploying of an Azure Stream Analytics job.

이 자습서의 Stream Analytics 모듈은 롤링 30초 기간 동안의 평균 온도를 계산합니다. 평균이 70에 도달하면 모듈은 디바이스가 작업을 수행하도록 경고를 보냅니다. 이 경우 해당 작업은 시뮬레이션된 온도 센서를 다시 설정하는 것입니다. 프로덕션 환경에서는 이 기능을 사용하여 컴퓨터를 차단하거나 온도가 위험한 수준에 도달하면 예방 조치를 취할 수 있습니다.

IoT Edge에서 Azure Stream Analytics를 사용하는 이유는 무엇인가요?

많은 IoT 솔루션에서 분석 서비스를 사용하여 IoT 디바이스에서 클라우드에 도착하는 대로 데이터에 대한 인사이트를 가져옵니다. Azure IoT Edge를 사용하면 Azure Stream Analytics 논리를 가져와서 디바이스 자체로 이동할 수 있습니다. 에지에서 원격 분석 스트림을 처리하여 업로드된 데이터의 양을 줄이고 실행 가능한 인사이트에 대응하는 데 걸리는 시간을 줄일 수 있습니다. Azure IoT Edge 및 Azure Stream Analytics가 통합되어 워크로드 개발을 간소화합니다.

Azure Stream Analytics는 클라우드와 IoT Edge 디바이스 모두에서 데이터 분석을 위한 다양한 정형 쿼리 구문을 제공합니다. 자세한 내용은 Azure Stream Analytics 설명서를 참조하세요.

필수 조건

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

  • Azure IoT Edge 디바이스.

    Linux 또는 Windows 디바이스의 빠른 시작에 설명된 단계에 따라 Azure 가상 머신을 IoT Edge 디바이스로 사용할 수 있습니다.

  • Azure의 무료 또는 표준 계층 IoT Hub .

Azure Stream Analytics 작업 만들기

이 섹션에서는 다음 단계를 수행하는 Azure Stream Analytics 작업을 만듭니다.

  • IoT Edge 디바이스에서 데이터를 받습니다.
  • 설정된 범위를 벗어난 값에 대한 원격 분석 데이터를 쿼리합니다.
  • 쿼리 결과에 따라 IoT Edge 디바이스에 대한 작업을 수행합니다.

스토리지 계정 만들기

IoT Edge 디바이스에서 실행할 Azure Stream Analytics 작업을 만들 때 디바이스에서 호출할 수 있는 방식으로 저장해야 합니다. 기존 Azure Storage 계정을 사용하거나 새 계정을 만들 수 있습니다.

  1. Azure Portal에서 리소스>스토리지 스토리지>계정 만들기로 이동합니다.

  2. 스토리지 계정을 만들려면 다음 값을 제공합니다.

    필드
    구독 IoT Hub와 동일한 구독을 선택합니다.
    Resource group IoT Edge 빠른 시작 및 자습서를 위해 모든 테스트 리소스에 동일한 리소스 그룹을 사용하는 것이 좋습니다. 예를 들어 IoTEdgeResources입니다.
    이름 스토리지 계정의 고유한 이름을 제공합니다.
    위치 가까운 위치를 선택합니다.
  3. 다른 필드의 기본값을 유지하고 검토 + 만들기를 선택합니다.

  4. 설정을 검토한 다음 만들기를 선택합니다.

새 작업 만들기

  1. Azure Portal에서 다음을 선택합니다.

    1. 리소스 만들기
    2. 왼쪽 메뉴의 사물 인터넷
    3. 검색 창에 Stream Analytics를 입력하여 Marketplace에서 찾습니다.
    4. 만들기를 선택한 다음 드롭다운 메뉴에서 Stream Analytics 작업을 선택합니다.

    Screenshot showing where to find the Stream Analytics job service in the Marketplace and where to create a new job.

  2. 새 Stream Analytics 작업을 만들려면 다음 값을 제공합니다.

    필드
    속성 작업의 이름을 입력합니다. 예: IoTEdgeJob
    구독 IoT Hub와 동일한 구독을 선택합니다.
    Resource group IoT Edge 빠른 시작 및 자습서 중에 만드는 모든 테스트 리소스에 동일한 리소스 그룹을 사용하는 것이 좋습니다. 예를 들어 IoTEdgeResources라는 리소스입니다.
    지역 가까운 위치를 선택합니다.
    호스팅 환경 Edge를 선택합니다. 이 옵션은 배포가 클라우드에서 호스트되는 대신 IoT Edge 디바이스로 이동합니다.
  3. 검토 + 만들기를 선택합니다.

  4. 옵션을 확인한 다음 만들기를 선택합니다.

작업 구성

Azure Portal에서 Stream Analytics 작업이 만들어지면 전달되는 데이터에서 실행할 입력, 출력쿼리를 사용하여 구성할 수 있습니다.

이 섹션에서는 IoT Edge 디바이스에서 온도 데이터를 받는 작업을 만듭니다. 롤링 30초 창에서 해당 데이터를 분석합니다. 해당 창의 평균 온도가 70도를 초과하면 경고가 IoT Edge 디바이스로 전송됩니다.

참고 항목

작업을 배포할 때 데이터의 원본 위치를 정확히 지정하고 다음 섹션인 IoT Edge 설정 구성에서 이동합니다.

입력 및 출력 설정

  1. Azure Portal에서 Stream Analytics 작업으로 이동합니다.

  2. 작업 토폴로지에서 입력을 선택한 다음 입력을 추가합니다.

    Screenshot showing where to add stream input in the Azure portal.

  3. 드롭다운 목록에서 Edge Hub를 선택합니다.

    목록에 Edge Hub 옵션이 표시되지 않으면 Stream Analytics 작업을 클라우드 호스팅 작업으로 만들었을 수 있습니다. 새 작업을 만들고 Edge를 호스팅 환경으로 선택해야 합니다.

  4. 새 입력 창에서 입력 별칭으로 온도입력합니다.

  5. 다른 필드의 기본값을 그대로 두고 저장을 선택합니다.

  6. 작업 토폴로지에서 출력을다음 추가를 선택합니다.

    Screenshot showing where to add stream output in the Azure portal.

  7. 드롭다운 목록에서 Edge Hub를 선택합니다.

  8. 새 출력 창에서 출력 별칭으로 경고를 입력합니다.

  9. 다른 필드의 기본값을 그대로 두고 저장을 선택합니다.

쿼리 만들기

  1. 작업 토폴로지에서 쿼리를 선택합니다.

  2. 기본 텍스트를 다음 쿼리로 바꿉다.

    SELECT  
        'reset' AS command
    INTO
       alert
    FROM
       temperature TIMESTAMP BY timeCreated
    GROUP BY TumblingWindow(second,30)
    HAVING Avg(machine.temperature) > 70
    

    이 쿼리에서 SQL 코드는 30초 창의 평균 컴퓨터 온도가 70도에 도달하면 다시 설정 명령을 경고 출력으로 보냅니다. 초기화 명령은 수행할 수 있는 작업으로 센서에 미리 프로그래밍되었습니다.

  3. 쿼리 저장을 선택합니다.

IoT Edge 설정 구성

IoT Edge 디바이스에 배포할 Stream Analytics 작업을 준비하려면 Azure Stream Analytics 작업을 스토리지 계정과 연결해야 합니다. 작업을 배포하면 작업 정의가 컨테이너 형식으로 스토리지 계정으로 내보내집니다.

  1. Stream Analytics 서비스의 설정 메뉴에서 Storage 계정 설정을 선택합니다.

  2. 구독 옵션에서 Blob Storage/ADLS Gen 2 선택 옵션을 선택합니다.

  3. Azure Storage 계정이 페이지에 자동으로 표시됩니다. 표시되지 않으면 스토리지를 만들어야 합니다. 또는 Storage 계정 필드에 나열된 스토리지와 다른 스토리지를 선택해야 하는 경우 드롭다운 메뉴에서 선택합니다.

  4. 변경해야 하는 경우 저장을 선택합니다.

    Screenshot of where to add a storage account in your Stream Analytics job in the Azure portal.

작업 배포

이제 IoT Edge 디바이스에 Azure Stream Analytics 작업을 배포할 준비가 되었습니다.

이 섹션에서는 Azure Portal의 모듈 설정 마법사를 사용하여 배포 매니페스트를 만듭니다. 배포 매니페스트는 디바이스에 배포되는 모든 모듈을 설명하는 JSON 파일입니다. 또한 매니페스트는 모듈 이미지를 저장하는 컨테이너 레지스트리, 모듈을 관리하는 방법 및 모듈이 서로 통신하는 방법을 보여 줍니다. IoT Edge 디바이스는 IoT Hub에서 해당 배포 매니페스트를 검색한 다음 해당 정보를 사용하여 할당된 모든 모듈을 배포하고 구성합니다.

이 자습서에서는 두 개의 모듈을 배포합니다. 첫 번째는 온도 및 습도 센서를 시뮬레이션하는 모듈인 SimulatedTemperatureSensor입니다. 두 번째는 Stream Analytics 작업입니다. 센서 모듈은 작업 쿼리에서 분석하는 데이터 스트림을 제공합니다.

  1. Azure Portal에서 IoT Hub로 이동합니다.

  2. 디바이스 관리 메뉴에서 디바이스선택한 다음 IoT Edge 디바이스를 선택하여 엽니다.

  3. 모듈 설정을 선택합니다.

  4. 이전에 이 디바이스에 SimulatedTemperatureSensor 모듈을 배포한 경우 자동으로 채워질 수 있습니다. 그렇지 않은 경우 다음 단계를 사용하여 모듈을 추가합니다.

    1. + 추가를 선택하고 IoT Edge 모듈을 선택합니다.
    2. 이름에 SimulatedTemperatureSensor를 입력합니다.
    3. 이미지 URI의 경우 mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.4 입력합니다.
    4. 다른 기본 설정을 그대로 두고 추가를 선택합니다.
  5. 다음 단계를 사용하여 Azure Stream Analytics Edge 작업을 추가합니다.

    1. + 추가를 선택하고 Azure Stream Analytics 모듈을 선택합니다.
    2. 구독 및 사용자가 만든 Azure Stream Analytics Edge 작업을 선택합니다.
    3. 저장을 선택합니다.

    변경 내용이 저장되면 Stream Analytics 작업의 세부 정보가 생성된 스토리지 컨테이너에 게시됩니다.

  6. Stream Analytics 추가가 배포를 완료한 후 두 개의 새 모듈이 모듈 설정 페이지에 표시되는지 확인합니다 .

    Screenshot confirming that two new modules are on your device. The screenshot also shows where the Review + create button is located.

  7. 검토 + 만들기를 선택합니다. 배포 매니페스트가 나타납니다.

  8. 만들기를 실행합니다.

  9. 디바이스의 모듈 설정 페이지에서 몇 분 후에 나열되고 실행되는 모듈이 표시됩니다. 모듈이 표시되지 않으면 페이지를 새로 고치거나 몇 분 더 기다린 다음 다시 새로 고칩니다.

    Screenshot that shows your modules list of your device in the Azure portal.

두 개의 새 모듈 이해

  1. 디바이스의 모듈 설정 탭에서 Stream Analytics 모듈 이름을 선택하여 업데이트 IoT Edge 모듈 페이지로 이동합니다. 여기서 설정을 업데이트할 수 있습니다.

    설정 탭에는 표준 Azure Stream Analytics 이미지를 가리키는 이미지 URI가 있습니다. 이 단일 이미지는 IoT Edge 디바이스에 배포되는 모든 Stream Analytics 모듈에 사용됩니다.

    모듈 쌍 설정 탭에서는 ASAJobInfo라는 ASA(Azure Stream Analytics) 속성을 정의하는 JSON을 보여 줍니다. 해당 속성의 값은 스토리지 컨테이너의 작업 정의를 가리킵니다. 이 속성은 Stream Analytics 이미지를 특정 작업 세부 정보로 구성하는 방법입니다.

    기본적으로 Stream Analytics 모듈은 기반으로 하는 작업과 동일한 이름을 사용합니다. 원하는 경우 이 페이지에서 모듈 이름을 변경할 수 있지만 필요하지는 않습니다.

  2. 변경한 경우 적용을 선택하거나 변경하지 않은 경우 취소를 선택합니다.

모듈에 경로 할당

  1. device:<your-device-name> 페이지의 모듈 설정 페이지에서 다음: 경로를 선택합니다.

  2. 경로 탭에서 모듈과 IoT Hub 간에 메시지를 전달하는 방법을 정의합니다. 메시지는 이름 및 값 쌍을 사용하여 생성됩니다.

    다음 표에 표시된 쌍을 사용하여 경로 이름 및 값을 추가합니다. 인스턴스 {moduleName} 를 Azure Stream Analytics 모듈의 이름으로 바꿉니다. 이 모듈은 Azure Portal에 표시된 것처럼 모듈 설정 페이지의 디바이스 모듈 목록에 표시되는 이름과 동일해야 합니다.

    Screenshot showing the name of your Stream Analytics modules in your I o T Edge device in the Azure portal.

    속성
    telemetryToCloud FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
    alertsToCloud FROM /messages/modules/{moduleName}/* INTO $upstream
    alertsToReset FROM /messages/modules/{moduleName}/* INTO BrokeredEndpoint("/modules/SimulatedTemperatureSensor/inputs/control")
    telemetryToAsa FROM /messages/modules/SimulatedTemperatureSensor/* INTO BrokeredEndpoint("/modules/{moduleName}/inputs/temperature")

    여기서 선언하는 경로는 IoT Edge 디바이스를 통한 데이터 흐름을 정의합니다. SimulatedTemperatureSensor의 원격 분석 데이터는 IoT Hub 및 Stream Analytics 작업에서 구성된 온도 입력으로 전송됩니다. 경고 출력 메시지는 IoT Hub 및 SimulatedTemperatureSensor 모듈로 보내져 reset(다시 설정) 명령을 트리거합니다.

  3. 완료되면 다음: 검토 + 만들기를 선택합니다.

  4. 검토 + 만들기 탭에서 마법사에서 제공한 정보가 JSON 배포 매니페스트로 변환되는 방법을 확인할 수 있습니다.

  5. 매니페스트 검토가 완료되면 만들기를 선택하여 모듈 설정을 완료합니다.

데이터 보기

이제 IoT Edge 디바이스로 이동하여 Azure Stream Analytics 모듈과 SimulatedTemperatureSensor 모듈 간의 상호 작용을 확인할 수 있습니다.

참고 항목

디바이스에 가상 머신을 사용하는 경우 Azure Cloud Shell사용하여 모든 Azure 인증 서비스에 직접 액세스할 수 있습니다.

  1. 모든 모듈이 Docker에서 실행되고 있는지 확인합니다.

    iotedge list  
    
  2. 모든 시스템 로그 및 메트릭 데이터를 봅니다. {moduleName}을(를) Azure Stream Analytics 모듈의 이름으로 바꿉니다.

    iotedge logs -f {moduleName}  
    
  3. 센서 로그를 확인하여 Reset 명령이 SimulatedTemperatureSensor에 미치는 영향을 확인합니다.

    iotedge logs SimulatedTemperatureSensor
    

    기계의 온도가 30초 동안 70도에 도달할 때까지 점차적으로 상승하는 것을 볼 수 있습니다. 그런 다음 Stream Analytics 모듈이 재설정을 트리거하고 컴퓨터 온도가 다시 21로 떨어집니다.

    Screenshot that shows the reset command in your output from your module logs.

리소스 정리

권장되는 다음 문서를 계속 진행하려는 경우 만든 리소스와 구성을 그대로 유지하고 다시 사용할 수 있습니다. 테스트 디바이스와 동일한 IoT Edge 디바이스를 계속 사용해도 됩니다.

그렇지 않으면 요금이 부과되지 않도록 이 문서에서 사용한 로컬 구성 및 Azure 리소스를 삭제할 수 있습니다.

Azure 리소스 삭제

Azure 리소스와 리소스 그룹을 삭제하면 되돌릴 수 없습니다. 잘못된 리소스 그룹 또는 리소스를 실수로 삭제하지 않도록 합니다. 유지하려는 리소스가 있는 기존 리소스 그룹 내에 IoT Hub를 만든 경우 리소스 그룹이 아닌 IoT Hub 리소스 자체만 삭제합니다.

리소스를 삭제하려면 다음을 수행합니다.

  1. Azure Portal에 로그인한 다음, 리소스 그룹을 선택합니다.

  2. IoT Edge 테스트 리소스가 포함된 리소스 그룹의 이름을 선택합니다.

  3. 리소스 그룹에 포함된 리소스 목록을 검토합니다. 모두 삭제하려면 리소스 그룹 삭제를 선택할 수 있습니다. 일부만 삭제하려면 각 리소스를 클릭하여 개별적으로 삭제할 수 있습니다.

다음 단계

이 자습서에서는 IoT Edge 디바이스의 데이터를 분석하도록 Azure Streaming Analytics 작업을 구성했습니다. 그런 다음 IoT Edge 디바이스에 이 Azure Stream Analytics 모듈을 로드하여 로컬에서 온도 증가에 대응하고 집계된 데이터 스트림을 클라우드로 보냈습니다. Azure IoT Edge에서 추가 업무용 솔루션을 만드는 방법을 확인하려는 경우 다른 자습서를 계속 진행할 수 있습니다.