자습서: Azure Stream Analytics를 IoT Edge 모듈로 배포
적용 대상: IoT Edge 1.5 IoT Edge 1.4
Important
IoT Edge 1.5 LTS 및 IoT Edge 1.4 LTS는 지원되는 릴리스입니다. IoT Edge 1.4 LTS는 2024년 11월 12일에 수명이 종료됩니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.
이 자습서에서는 Azure Portal에서 Azure Stream Analytics 작업을 만든 다음, 추가 코드 없이 IoT Edge 모듈로 배포할 수 있습니다.
다음 방법에 대해 설명합니다.
- 에지에서 데이터를 처리하는 Azure Stream Analytics 작업을 만듭니다.
- 새 Azure Stream Analytics 작업을 다른 IoT Edge 모듈에 연결합니다.
- Azure Portal에서 Azure Stream Analytics 작업을 IoT Edge 디바이스에 배포합니다.
이 자습서의 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 계정을 사용하거나 지금 새로 만들 수 있습니다.
Azure Portal에서 리소스 만들기>스토리지>스토리지 계정을 차례로 클릭합니다.
다음 값을 입력하여 스토리지 계정을 만듭니다.
필드 값 구독 IoT Hub와 동일한 구독을 선택합니다. Resource group IoT Edge 빠른 시작 및 자습서에 대한 모든 테스트 리소스에 동일한 리소스 그룹을 사용하는 것이 좋습니다. 예를 들어 IoTEdgeResources를 사용합니다. 이름 스토리지 계정의 고유한 이름을 입력합니다. 위치 가까운 위치를 선택합니다. 다른 필드는 기본값으로 유지하고, 검토 + 만들기를 선택합니다.
설정을 검토한 다음, 만들기를 선택합니다.
새 작업 만들기
Azure Portal에서 다음을 선택합니다.
- 리소스 만들기
- 왼쪽 메뉴의 사물 인터넷
- 검색 창에서 Stream Analytics를 입력하여 Marketplace에서 찾습니다.
- 만들기를 선택한 다음, 드롭다운 메뉴에서 Stream Analytics 작업을 선택합니다.
다음 값을 제공하여 새 Stream Analytics 작업을 만듭니다.
필드 값 속성 작업의 이름을 입력합니다. 예: IoTEdgeJob 구독 IoT Hub와 동일한 구독을 선택합니다. Resource group IoT Edge 빠른 시작 및 자습서에서 만드는 모든 테스트 리소스에 대해 동일한 리소스 그룹을 사용하는 것이 좋습니다. 예를 들어 IoTEdgeResources라는 리소스입니다. 지역 가까운 위치를 선택합니다. 호스팅 환경 Edge를 선택합니다. 즉, 이 옵션에서는 배포가 클라우드에서 호스트되는 대신 IoT Edge 디바이스로 이동합니다. 검토 + 만들기를 선택합니다.
옵션을 확인한 다음, 만들기를 선택합니다.
작업 구성
Azure Portal에서 Stream Analytics 작업이 만들어지면 통과하는 데이터에 대해 실행할 입력, 출력 및 쿼리로 구성할 수 있습니다.
이 섹션에서는 IoT Edge 디바이스에서 온도 데이터를 받는 작업을 만듭니다. 이 작업은 롤링하는 30초 기간의 해당 데이터를 분석합니다. 이 기간의 평균 온도가 70도를 초과하면 경고를 IoT Edge 디바이스에 보냅니다.
참고 항목
작업을 배포하는 경우 다음 IoT Edge 설정 구성 섹션에서 데이터가 들어오고 나가는 위치를 정확하게 지정합니다.
입력 및 출력 설정
Azure Portal에서 Stream Analytics 작업으로 이동합니다.
작업 토폴로지 아래에서 입력, 입력 추가를 차례로 선택합니다.
드롭다운 목록에서 Edge Hub를 선택합니다.
목록에 Edge Hub 옵션이 표시되지 않으면 클라우드 호스팅 작업으로 Stream Analytics 작업을 만들었을 수 있습니다. 새 작업을 만들고 Edge를 호스팅 환경으로 선택해야 합니다.
새 입력 창에서 입력 별칭으로 온도를 입력합니다.
다른 필드의 기본값을 그대로 두고 저장을 선택합니다.
작업 토폴로지에서 출력을 열고 추가를 선택합니다.
드롭다운 목록에서 Edge Hub를 선택합니다.
새 출력 창에서 출력 별칭으로 경고를 입력합니다.
다른 필드의 기본값을 그대로 두고 저장을 선택합니다.
쿼리 만들기
작업 토폴로지에서 쿼리를 선택합니다.
기본 텍스트를 다음 쿼리로 바꿉니다.
SELECT 'reset' AS command INTO alert FROM temperature TIMESTAMP BY timeCreated GROUP BY TumblingWindow(second,30) HAVING Avg(machine.temperature) > 70
이 쿼리에서 30초 기간의 평균 컴퓨터 온도가 70도에 도달하면 SQL 코드에서 reset 명령을 경고 출력에 보냅니다. reset 명령은 수행할 수 있는 작업으로 센서에 미리 프로그래밍되어 있습니다.
쿼리 저장을 선택합니다.
IoT Edge 설정 구성
IoT Edge 디바이스에 배포할 Stream Analytics 작업을 준비하려면 Azure Stream Analytics 작업을 스토리지 계정과 연결해야 합니다. 작업을 배포하면 작업 정의가 컨테이너 형식으로 스토리지 계정으로 내보내집니다.
Stream Analytics 서비스의 설정 메뉴 아래에서 Storage 계정 설정을 선택합니다.
구독에서 Blob 스토리지/ADLS Gen 2 선택 옵션을 선택합니다.
Azure 스토리지 계정이 페이지에 자동으로 표시됩니다. 스토리지 계정이 표시되지 않으면 스토리지를 만들어야 합니다. 또는 Storage 계정 필드에 나열된 것과 다른 스토리지를 선택해야 하는 경우 드롭다운 메뉴에서 선택합니다.
변경해야 하는 경우 저장을 선택합니다.
작업 배포
이제 Azure Stream Analytics 작업을 IoT Edge 디바이스에 배포할 준비가 되었습니다.
이 섹션에서는 Azure Portal의 모듈 설정 마법사를 사용하여 배포 매니페스트를 만듭니다. 배포 매니페스트는 디바이스에 배포되는 모든 모듈을 설명하는 JSON 파일입니다. 또한 매니페스트는 모듈 이미지를 저장하는 컨테이너 레지스트리, 모듈을 관리하는 방법 및 모듈이 서로 통신할 수 있는 방법을 보여줍니다. IoT Edge 디바이스는 IoT Hub에서 배포 매니페스트를 수신한 다음, 그 안에 들어 있는 정보를 사용하여 할당된 모든 모듈을 배포하고 구성합니다.
이 자습서에서는 두 개의 모듈을 배포합니다. 첫 번째는 온도 및 습도 센서를 시뮬레이션하는 SimulatedTemperatureSensor 모듈입니다. 두 번째는 Stream Analytics 작업입니다. 센서 모듈은 작업 쿼리에서 분석하는 데이터 스트림을 제공합니다.
Azure Portal에서 IoT Hub로 이동합니다.
장치 관리 메뉴 아래에서 디바이스를 선택한 다음, IoT Edge 디바이스를 선택하여 엽니다.
모듈 설정을 선택합니다.
이전에 SimulatedTemperatureSensor 모듈을 이 디바이스에 배포한 경우 자동으로 채워질 수 있습니다. 그렇지 않은 경우 다음 단계에 따라 모듈을 추가합니다.
- + 추가, IoT Edge 모듈을 차례로 선택합니다.
- 이름에 대해 SimulatedTemperatureSensor를 입력합니다.
- 이미지 URI에 대해 mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5를 입력합니다.
- 다른 기본 설정은 그대로 둔 다음, 추가를 선택합니다.
다음 단계에 따라 Azure Stream Analytics Edge 작업을 추가합니다.
- + 추가, Azure Stream Analytics 모듈을 차례로 선택합니다.
- 구독 및 사용자가 만든 Azure Stream Analytics Edge 작업을 선택합니다.
- 저장을 선택합니다.
변경 내용이 저장되면 Stream Analytics 작업의 세부 정보가 생성된 스토리지 컨테이너에 게시됩니다.
Stream Analytics 추가 배포가 완료되면 두 개의 새 모듈이 모듈 설정 페이지에 표시되는지 확인합니다.
검토 + 만들기를 선택합니다. 배포 매니페스트가 표시됩니다.
만들기를 실행합니다.
디바이스의 모듈 설정 페이지에서 몇 분 후에 모듈이 나열되고 실행되는 것을 확인할 수 있습니다. 모듈이 표시되지 않으면 페이지를 새로 고치거나 몇 분 더 기다린 후 다시 새로 고칩니다.
두 개의 새 모듈 이해
디바이스의 모듈 설정 탭에서 Stream Analytics 모듈 이름을 선택하여 IoT Edge 모듈 업데이트 페이지로 이동합니다. 여기서 설정을 업데이트할 수 있습니다.
설정 탭에는 표준 Azure Stream Analytics 이미지를 가리키는 이미지 URI가 있습니다. 이 단일 이미지는 IoT Edge 디바이스에 배포되는 모든 Stream Analytics 모듈에 사용됩니다.
모듈 쌍 설정 탭에서는 ASAJobInfo라는 ASA(Azure Stream Analytics) 속성을 정의하는 JSON을 보여 줍니다. 이 속성의 값은 스토리지 컨테이너의 작업 정의를 가리킵니다. 이 속성은 특정 작업 세부 정보를 사용하여 Stream Analytics 이미지가 구성되는 방법입니다.
기본적으로 Stream Analytics 모듈은 기반이 되는 작업과 동일한 이름을 사용합니다. 원하는 경우 이 페이지에서 모듈 이름을 변경할 수 있지만 반드시 필요한 것은 아닙니다.
변경한 경우 적용을 선택하고, 변경하지 않은 경우 취소를 선택합니다.
모듈에 경로 할당
디바이스에서 모듈 설정: <your-device-name> 페이지에서 다음: 경로를 선택합니다.
경로 탭에서 모듈과 IoT Hub 사이에서 메시지가 전달되는 방식을 정의합니다. 메시지는 이름 및 값 쌍을 사용하여 생성됩니다.
다음 표에 표시된 쌍을 사용하여 경로 이름과 값을 추가합니다.
{moduleName}
의 인스턴스를 Azure Stream Analytics 모듈의 이름으로 바꿉니다. 이 모듈은 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(다시 설정) 명령을 트리거합니다.
완료되면 다음: 검토 + 만들기를 선택합니다.
검토 + 만들기 탭에서 마법사에서 제공한 정보가 JSON 배포 매니페스트로 변환되는 방법을 확인할 수 있습니다.
매니페스트 검토를 완료되면 만들기를 선택하여 모듈 설정을 완료합니다.
데이터 보기
이제 IoT Edge 디바이스로 이동하여 Azure Stream Analytics 모듈과 SimulatedTemperatureSensor 모듈 간의 상호 작용을 확인할 수 있습니다.
참고 항목
가상 머신을 디바이스에 사용하는 경우 Azure Cloud Shell을 사용하여 모든 Azure 인증 서비스에 직접 액세스할 수 있습니다.
Docker에서 모든 모듈이 실행되는지 확인합니다.
iotedge list
모든 시스템 로그 및 메트릭 데이터를 봅니다. {moduleName}을 Azure Stream Analytics 모듈의 이름으로 바꿉니다.
iotedge logs -f {moduleName}
센서 로그를 확인하여 reset 명령이 SimulatedTemperatureSensor에 미치는 영향을 확인합니다.
iotedge logs SimulatedTemperatureSensor
머신의 온도가 30초 동안 70도에 도달할 때까지 점차적으로 상승하는 것을 볼 수 있습니다. 그러면 Stream Analytics 모듈이 재설정을 트리거하고 컴퓨터 온도가 21도로 떨어집니다.
리소스 정리
권장되는 다음 문서를 계속 진행하려는 경우 만든 리소스와 구성을 그대로 유지하고 다시 사용할 수 있습니다. 테스트 디바이스와 동일한 IoT Edge 디바이스를 계속 사용해도 됩니다.
그렇지 않은 경우 요금이 발생하지 않도록 이 문서에서 사용한 로컬 구성 및 Azure 리소스를 삭제할 수 있습니다.
Azure 리소스 삭제
Azure 리소스와 리소스 그룹을 삭제하면 되돌릴 수 없습니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 해야 합니다. 보관하려는 리소스가 있는 기존 리소스 그룹 내에 IoT 허브를 만든 경우 리소스 그룹이 아닌 IoT 허브 리소스만 삭제해야 합니다.
리소스를 삭제하려면:
Azure Portal에 로그인한 다음, 리소스 그룹을 선택합니다.
IoT Hub 테스트 리소스가 포함된 리소스 그룹 이름을 선택합니다.
리소스 그룹에 포함된 리소스 목록을 검토합니다. 모든 항목을 삭제하려는 경우리소스 그룹 삭제를 선택할 수 있습니다. 일부만 삭제하려는 경우 각 리소스를 선택하여 개별적으로 삭제할 수 있습니다.
다음 단계
이 자습서에서는 IoT Edge 디바이스의 데이터를 분석하도록 Azure Stream Analytics 작업을 구성했습니다. 그런 다음, 이 Azure Stream Analytics 모듈을 IoT Edge 디바이스에 로드하여 온도 상승을 로컬에서 처리하고, 이에 대응하며, 집계된 데이터 스트림을 클라우드로 보냈습니다. Azure IoT Edge에서 추가 업무용 솔루션을 만드는 방법을 확인하려는 경우 다른 자습서를 계속 진행할 수 있습니다.