자습서: 데이터 흐름을 사용하여 클라우드에 자산 원격 분석 보내기
이 자습서에서는 데이터 흐름을 사용하여 MQTT Broker에서 Azure Event Hubs 서비스의 이벤트 허브로 메시지를 전달합니다. 이벤트 허브는 스토리지 및 분석을 위해 다른 클라우드 서비스에 데이터를 제공할 수 있습니다. 다음 자습서에서는 실시간 대시보드를 사용하여 데이터를 시각화합니다.
필수 조건
이 자습서를 시작하기 전에 자습서: Azure IoT Operations 클러스터에 OPC UA 자산 추가를 완료해야 합니다.
어떤 문제를 해결할 수 있나요?
실시간 대시보드와 같은 도구를 사용하여 OPC UA 데이터를 분석하려면 Azure Event Hubs와 같은 클라우드 서비스로 데이터를 전송해야 합니다. 데이터 흐름은 MQTT 항목을 구독하고 Azure Event Hubs 네임스페이스의 이벤트 허브로 메시지를 전달할 수 있습니다. 다음 자습서에서는 실시간 대시보드를 사용하여 데이터를 시각화하고 분석하는 방법을 보여 줍니다.
환경 변수 설정
Codespaces 환경을 사용하는 경우 필요한 환경 변수가 이미 설정되어 있으며 이 단계를 건너뛸 수 있습니다. 그렇지 않으면 셸에서 다음 환경 변수를 설정합니다.
# The name of the resource group where your Kubernetes cluster is deployed
RESOURCE_GROUP=<resource-group-name>
# The name of your Kubernetes cluster
CLUSTER_NAME=<kubernetes-cluster-name>
Event Hubs 네임스페이스 만들기
Event Hubs 네임스페이스 및 이벤트 허브를 만들려면 셸에서 다음 Azure CLI 명령을 실행합니다. 다음 명령은 Kubernetes 클러스터와 동일한 리소스 그룹에 Event Hubs 네임스페이스를 만듭니다.
az eventhubs namespace create --name ${CLUSTER_NAME:0:24} --resource-group $RESOURCE_GROUP --disable-local-auth false
az eventhubs eventhub create --name destinationeh --resource-group $RESOURCE_GROUP --namespace-name ${CLUSTER_NAME:0:24} --retention-time 1 --partition-count 1 --cleanup-policy Delete
클러스터의 Azure IoT 작업 확장에 Event Hubs 네임스페이스에 대한 액세스 권한을 부여하려면 다음 Azure CLI 명령을 실행합니다.
EVENTHUBRESOURCE=$(az eventhubs namespace show --resource-group $RESOURCE_GROUP --namespace-name ${CLUSTER_NAME:0:24} --query id -o tsv)
PRINCIPAL=$(az k8s-extension list --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --cluster-type connectedClusters -o tsv --query "[?extensionType=='microsoft.iotoperations'].identity.principalId")
az role assignment create --role "Azure Event Hubs Data Sender" --assignee $PRINCIPAL --scope $EVENTHUBRESOURCE
이벤트 허브로 원격 분석 데이터를 전송하기 위한 데이터 흐름 만들기
작업 환경 UI를 사용하여 클러스터에서 다음과 같은 데이터 흐름을 만들고 구성합니다.
- 들어오는 메시지
Humidity
의Tag 10
필드 이름을 .로 바꿉니다. - 들어오는 메시지
Temperature
의temperature
필드 이름을 .로 바꿉니다. - 자산의 이름을 포함하는 필드를
AssetId
추가합니다. - 변환된 메시지를 MQTT 토픽에서 만든 이벤트 허브로 전달합니다.
데이터 흐름을 만들려면 다음을 수행합니다.
작업 환경 UI로 이동하여 인스턴스를 찾습니다. 그런 다음, 데이터 흐름 엔드포인트를 선택하고 Azure Event Hubs 타일에서 + 새로 만들기를 선택합니다.
새 데이터 흐름 엔드포인트 만들기: Azure Event Hubs에서 event-hubs-target을 이름으로 입력하고, 만든 Event Hubs 네임스페이스의 주소로 호스트 필드를 업데이트합니다. 적용을 선택합니다.
새 데이터 흐름 엔드포인트가 만들어지고 데이터 흐름 엔드포인트 페이지의 목록에 표시됩니다.
데이터 흐름을 선택한 다음+ 데이터 흐름 만들기를 선택합니다. <새 데이터 흐름> 페이지에는 다음이 표시됩니다.
데이터 흐름 편집기에서 원본 선택을 선택합니다. 그런 다음 이전에 만든 자동 온도 조절기 자산을 선택하고 적용을 선택합니다.
데이터 흐름 편집기에서 데이터 흐름 엔드포인트 선택을 선택합니다. 그런 다음, 이전에 만든 event-hubs-target 엔드포인트를 선택하고 적용을 선택합니다.
다음 페이지에서 토픽으로 destinationeh를 입력합니다. 이 항목은 Event Hubs 네임스페이스에서 만든 허브를 참조합니다. 적용을 선택합니다. 이제 데이터 흐름에는 자동 온도 조절기 자산이 원본으로, Event Hubs 네임스페이스의 허브가 대상으로 지정됩니다.
변환을 추가하려면 변환 추가(선택 사항)를 선택합니다.
들어오는 메시지의
Tag 10
필드 및temperature
이름을 바꾸려면 이름 바꾸기 타일에서 + 추가를 선택합니다.다음 두 개의 이름 바꾸기 변환을 추가합니다.
데이터 포인트 새 데이터 포인트 이름 태그 10.Value ThermostatHumidity 온도. 값 ThermostatTemperature 메시지 메타데이터에서 자산 ID를 복사하려면 다음 이름 바꾸기 변환을 추가합니다.
데이터 포인트 새 데이터 포인트 이름 $metadata.user_property.externalAssetId AssetId 이름 바꾸기 변환은 다음 스크린샷과 같습니다.
적용을 선택합니다.
이제 데이터 흐름 편집기가 다음 스크린샷과 같이 표시됩니다.
데이터 흐름 실행을 시작하려면 tutorial-dataflow를 이름으로 입력한 다음 저장을 선택합니다. 몇 분 후 프로비전 상태가 Succeeded로 변경됩니다. 이제 클러스터에서 데이터 흐름이 실행되고 있습니다.
데이터 흐름은 MQTT 토픽을 구독하여 자동 온도 조절기 자산에서 메시지를 받습니다. 메시지의 일부 필드 이름을 바꾸고 변환된 메시지를 만든 이벤트 허브로 전달합니다.
데이터 흐름 확인
데이터가 클라우드로 흐르는지 확인하려면 Azure Portal에서 Event Hubs 인스턴스를 볼 수 있습니다. 데이터 흐름이 시작되고 메시지가 이벤트 허브로 전달될 때까지 몇 분 정도 기다려야 할 수 있습니다.
메시지가 인스턴스로 흐르는 경우 인스턴스 개요 페이지에서 들어오는 메시지 수를 볼 수 있습니다.
메시지가 흐르는 경우 데이터 탐색기를 사용하여 메시지를 볼 수 있습니다.
팁
메시지를 보려면 Event Hubs 네임스페이스에 대한 Azure Event Hubs 데이터 수신기 역할에 자신을 할당해야 할 수 있습니다.
문제를 어떻게 해결했나요?
이 자습서에서는 데이터 흐름을 사용하여 MQTT 토픽을 Azure Event Hubs 네임스페이스의 이벤트 허브에 연결했습니다. 다음 자습서에서는 Microsoft Fabric 실시간 인텔리전스를 사용하여 데이터를 시각화합니다.
리소스 정리
다음 자습서를 계속 진행하는 경우 모든 리소스를 유지합니다.
Azure IoT Operations 배포를 제거하지만 클러스터를 유지하려면 az iot ops delete 명령을 사용합니다.
az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
이 빠른 시작을 위해 만든 모든 리소스를 삭제하려면 Azure IoT 작업을 배포한 Kubernetes 클러스터를 삭제한 다음 클러스터가 포함된 Azure 리소스 그룹을 제거합니다.
이러한 빠른 시작에서 Codespaces를 사용한 경우 GitHub에서 Codespace를 삭제합니다.
참고 항목
리소스 그룹에는 이 자습서에서 만든 Event Hubs 네임스페이스가 포함되어 있습니다.