이 자습서에서는 데이터 흐름을 사용하여 MQTT 브로커에서 Azure Event Hubs 서비스의 이벤트 허브로 메시지를 전달합니다. 이벤트 허브는 스토리지 및 분석을 위해 다른 클라우드 서비스에 데이터를 제공할 수 있습니다. 다음 자습서에서는 실시간 대시보드를 사용하여 데이터를 시각화합니다.
필수 조건
이 자습서를 시작하기 전에 자습서: Azure IoT 작업 클러스터에 OPC UA 자산 추가를 완료해야 합니다.
어떤 문제를 해결할 수 있나요?
Microsoft Fabric Real-Time 대시보드와 같은 도구를 사용하여 OPC UA 데이터를 분석하려면 Azure Event Hubs와 같은 클라우드 서비스로 데이터를 보내야 합니다. 데이터 흐름은 MQTT 항목을 구독하고 해당 메시지를 Azure Event Hubs 네임스페이스의 이벤트 허브로 전달할 수 있습니다. 다음 자습서에서는 실시간 대시보드를 사용하여 데이터를 시각화하고 분석하는 방법을 보여 줍니다.
환경 변수 설정
셸에서 다음 환경 변수가 설정되어 있는지 확인합니다.
팁 (조언)
리소스 그룹에서 만든 사용자 할당 관리 ID를 보려면 셸에서 다음 명령을 실행합니다. az identity list -g $RESOURCE_GROUP -o table
# 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>
# The name of the user-assigned managed identity that you created for cloud connections
USER_ASSIGNED_MI_NAME=<cloud-connection-uami>
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 true
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 identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query principalId --output tsv)
az role assignment create --role "Azure Event Hubs Data Sender" --assignee $PRINCIPAL --scope $EVENTHUBRESOURCE
이벤트 허브에 메시지를 보내는 데이터 흐름 만들기
작업 환경 웹 UI를 사용하여 클러스터에서 다음과 같은 데이터 흐름을 만들고 구성합니다.
- 들어오는 메시지의
temperature필드 이름을TemperatureF로 변경합니다. - 자산의 이름을 포함하는
AssetId라는 필드를 추가합니다. - MQTT 항목에서 변환된 메시지를 만든 이벤트 허브로 전달합니다.
데이터 흐름을 만들려면:
작업 환경 웹 UI로 이동하여 인스턴스를 찾습니다. 그런 다음 데이터 흐름 엔드포인트를 선택하고 Azure Event Hubs 타일에서 + 새로 만들기를 선택합니다.
새 데이터 흐름 엔드포인트 만들기: Azure Event Hubs에서 event-hubs-target을 이름으로 입력하고 호스트 필드에서 만든 Event Hubs 네임스페이스를 찾습니다.
인증 방법으로 사용자 할당 관리 ID를 선택합니다. 클라우드 연결에 사용하는 사용자 할당 관리 ID의 클라이언트 ID 및 테넌트 ID 값을 추가합니다. 다음 CLI 명령을 사용하여 리소스 그룹에서 사용자에게 할당된 관리 ID의 클라이언트 ID와 테넌트 ID를 나열합니다.
az identity list -g $RESOURCE_GROUP -o table.적용을 선택합니다.
새로운 데이터 흐름 엔드포인트가 만들어져 데이터 흐름 엔드포인트 페이지의 목록에 표시됩니다.
데이터 흐름을 선택한 다음 + 데이터 흐름 만들기를 선택합니다. <new-data-flow> 페이지에는 다음이 표시됩니다.
데이터 흐름 편집기에서 원본 선택을 선택합니다. 그런 다음 이전에 만든 자동 온도 조절기 자산을 선택하고 계속을 선택합니다.
데이터 흐름 편집기에서 대상 선택을 선택합니다. 그런 다음 이전에 만든 event-hubs-target 엔드포인트를 선택하고 계속을 선택합니다.
다음 페이지에서 항목으로 destinationeh를 입력합니다. 항목은 Event Hubs 네임스페이스에서 만든 허브를 참조하세요. 적용을 선택합니다. 이제 데이터 흐름에는 원본으로 온도 조절기 자산이 있고 대상은 Event Hubs 네임스페이스의 허브가 있습니다.
변환을 추가하려면 변환 추가(선택 사항)를 선택합니다.
들어오는 메시지에서
temperature필드의 이름을 바꾸려면 이름 바꾸기 타일에서 + 추가를 선택합니다.다음의 이름 바꾸기 변환을 추가합니다.
데이터 포인트 새 데이터 포인트 이름 temperature.Value ThermostatTemperatureF 메시지 메타데이터에서 자산 ID를 복사하려면 다음 이름 바꾸기 변환을 추가합니다.
데이터 포인트 새 데이터 포인트 이름 $metadata.user_property.externalAssetId AssetId 이름 바꾸기 변환은 다음 스크린샷과 같습니다.
적용을 선택합니다.
이제 데이터 흐름 편집기는 다음 스크린샷과 같습니다.
데이터 흐름을 실행하려면 이름으로 tutorial-data-flow를 입력한 다음 저장을 선택합니다. 몇 분 후, 프로비전 상태가 성공으로 변경됩니다. 이제 데이터 흐름이 클러스터에서 실행됩니다.
데이터 흐름은 MQTT 항목을 구독하여 온도 조절기 자산으로부터 메시지를 수신합니다. 메시지의 일부 필드 이름을 바꾸고, 변환된 메시지를 사용자가 만든 이벤트 허브로 전달합니다.
데이터 흐름 확인
데이터가 클라우드로 흐르는지 확인하려면 Azure Portal에서 Event Hubs 인스턴스를 볼 수 있습니다. 데이터 흐름이 시작되고 메시지가 이벤트 허브로 흐르기까지 몇 분 정도 기다려야 할 수도 있습니다.
메시지가 인스턴스로 흐르는 경우 인스턴스 개요 페이지에서 들어오는 메시지 수를 확인할 수 있습니다.
메시지가 흐르는 경우 데이터 탐색기를 사용하여 메시지를 볼 수 있습니다.
팁 (조언)
메시지를 보려면 아마도 자신을 Azure Event Hubs 데이터 수신기 역할에 할당하여 Event Hubs 네임스페이스에 접근해야 할 수 있습니다.
문제를 어떻게 해결했나요?
이 자습서에서는 데이터 흐름을 사용하여 MQTT 항목을 Azure Event Hubs 네임스페이스의 이벤트 허브에 연결했습니다. 다음 자습서에서는 Microsoft Fabric 실시간 인텔리전스를 사용하여 데이터를 시각화합니다.
자원을 정리하세요
다음 자습서를 진행하는 경우에는 모든 리소스를 유지해야 합니다.
Azure IoT 작업 배포를 제거하지만 클러스터는 유지하려면 az iot ops delete 명령을 사용합니다.
az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
이 빠른 시작을 위해 만든 모든 리소스를 삭제하려면 Azure IoT 작업을 배포한 Kubernetes 클러스터를 삭제한 다음, 해당 클러스터가 포함된 Azure 리소스 그룹을 제거합니다.
이러한 빠른 시작에서 Codespaces를 사용한 경우 GitHub에서 Codespace를 삭제합니다.
비고
리소스 그룹에는 이 자습서에서 만든 Event Hubs 네임스페이스가 포함되어 있습니다.