你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用数据流将资产遥测数据发送到云

在本教程中,你将使用数据流将消息从 MQTT 代理转发到 Azure 事件中心服务中的事件中心。 事件中心可以将数据传送到其他云服务进行存储和分析。 在下一个教程中,你将使用实时仪表板来可视化数据。

先决条件

在开始本教程之前,你必须完成教程:将 OPC UA 资产添加到 Azure IoT 操作群集

我们将解决什么问题?

要使用实时仪表板等工具来分析 OPC UA 数据,你需要将数据发送到 Azure 事件中心等云服务。 数据流可以订阅 MQTT 主题,并将消息转发到 Azure 事件中心命名空间中的事件中心。 下一个教程将介绍如何使用实时仪表板来可视化和分析数据。

设置环境变量

如果使用的是 Codespaces 环境,则已设置所需的环境变量,可以跳过此步骤。 否则,请在 shell 中设置以下环境变量:

# 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>

创建事件中心命名空间

要创建事件中心命名空间和事件中心,请在 shell 中运行以下 Azure CLI 命令。 这些命令在 Kubernetes 群集所在的同一资源组中创建事件中心命名空间:

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 操作扩展授予对事件中心命名空间的访问权限,请运行以下 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 在群集中创建和配置满足以下条件的数据流:

  • 会将传入消息中的 Tag 10 字段重命名为 Humidity
  • 会将传入消息中的 temperature 字段重命名为 Temperature
  • 添加一个名为 AssetId 的字段,其中包含资产的名称。
  • 将转换后的消息从 MQTT 主题转发到所创建的事件中心。

若要创建数据流,请执行以下操作:

  1. 浏览到操作体验 UI 并找到你的实例。 然后选择“数据流终结点”,再在“Azure 事件中心”磁贴中选择“+ 新建”

    “数据流终结点”页面的屏幕截图。

  2. 在“创建新的数据流终结点: Azure 事件中心”中,输入 event-hubs-target 作为名称,并使用你创建的事件中心命名空间的地址更新“主机”字段。 选择“应用”

    “创建新的数据流终结点: Azure 事件中心”页面的屏幕截图。

    创建新的数据流终结点,并显示在“数据流终结点”页面上的列表中。

  3. 选择“数据流”,然后选择“+ 创建数据流”。 <new-dataflow> 页面显示:

    “数据流”页面的屏幕截图。

  4. 在数据流编辑器中,选择“选择源”。 然后选择之前创建的恒温器资产,然后选择“应用”

  5. 在数据流编辑器中,选择“选择数据流终结点”。 然后选择之前创建的 event-hubs-target 终结点,再选择“应用”

  6. 在下一页上,输入 destinationeh 作为主题。 本主题是指在事件中心命名空间中创建的中心。 选择“应用”。 目前,你的数据流以恒温器资产为源,以事件中心命名空间中的中心为目标。

  7. 若要添加转换,请选择“添加转换(可选)”

  8. 若要重命名传入消息中的 Tag 10temperature 字段,请在“重命名”磁贴中选择“+ 添加”

  9. 添加以下两个重命名转换:

    数据点 新数据点名称
    标记 10.Value ThermostatHumidity
    temperature.Value ThermostatTemperature
  10. 若要从消息元数据复制资产 ID,请添加以下重命名转换:

    数据点 新数据点名称
    $metadata.user_property.externalAssetId AssetId

    重命名转换如以下屏幕截图所示:

    重命名转换的屏幕截图。

    选择“应用”。

  11. 数据流编辑器现在如以下屏幕截图所示:

    已完成的数据流的屏幕截图。

  12. 若要启动数据流运行,请输入 tutorial-dataflow 作为其名称,然后选择“保存”。 几分钟后,“预配状态”更改为“已成功”。 数据流现在正在群集中运行。

数据流订阅 MQTT 主题,以接收来自恒温器资产的消息。 它会重命名消息中的某些字段,并将转换后的消息转发到你创建的事件中心。

验证数据是否流动

要验证数据是否流向云,可以在 Azure 门户中查看事件中心实例。 可能需要等待几分钟才能启动数据流并让消息流向事件中心。

如果消息流向实例,可以在实例“概述”页上看到传入消息的计数:

屏幕截图显示了包含传入消息的事件中心实例概述页。

如果消息正在流动,则可以使用“数据资源管理器”查看消息:

事件中心实例**数据资源管理器**页的屏幕截图。

提示

要查看消息,可能需要为自己分配事件中心命名空间的 Azure 事件中心数据接收方角色。

我们如何解决问题?

在本教程中,你使用了数据流将 MQTT 主题连接到 Azure 事件中心命名空间中的事件中心。 在下一个教程中,你将使用 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。

注意

该资源组包含你在本教程中创建的事件中心命名空间。

下一步

教程:从资产遥测数据中获取见解