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

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

重要

Azure Arc 启用的 Azure IoT 操作预览版目前处于预览状态。 不应在生产环境中使用此预览版软件。

在正式版推出后,你需要部署新的 Azure IoT 操作安装。 无法升级预览版安装。

有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

在本教程中,你将使用数据流将消息从 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 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 操作扩展授予对事件中心命名空间的访问权限,请运行以下 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 字段,请在编辑器中选择“转换”框,然后在“新建属性”磁贴中选择“+ 添加”

  11. 在“新建属性”编辑器中,输入 AssetId 作为属性键,输入 thermostat-01 作为属性值,然后选择“应用”。 数据流编辑器现在如以下屏幕截图所示:

    数据流的屏幕截图。

  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。

注意

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

下一步

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