适用于:
IoT Edge 1.6
重要
IoT Edge 1.6 LTS 是支持的版本。 IoT Edge 1.5 LTS 支持将于 2026 年 11 月 10 日结束;IoT Edge 1.4 LTS 于 2024 年 11 月 12 日结束了支持期。 如果使用的是早期版本,请参阅 Update IoT Edge。
使用Azure监视工作簿来监视Azure IoT Edge部署的运行状况和性能。
本教程使用了Metrics Collector2.0.0、Log Analytics自定义表、DCR和Microsoft Entra认证。 对于现有的收集器 1.x 部署,请使用 迁移指标收集器。
在本教程中,你将了解:
- 了解设备IoT Edge共享哪些指标以及指标收集器模块如何处理它们。
- 将指标收集器模块部署到IoT Edge设备。
- 查看从设备收集的指标的精心制作的可视化效果。
先决条件
您需要一台部署了模拟温度传感器模块的IoT Edge设备。 如果您尚未准备好设备,请按照 将第一个 IoT Edge 模块部署到虚拟 Linux 设备中的步骤使用虚拟机进行创建。
还需要:
- 更新设备部署的权限。
- 一个Log Analytics工作区、一个DCR和一个自定义指标表(默认
IoTEdgeMetrics_CL)。 - 在包含 DCR 的 Microsoft Entra 租户中注册应用程序的权限。
- 在 DCR 上分配 Azure 角色的权限。
- 有权查询工作区并打开与你的 IoT 中心 相关的工作簿。
使用Prepare Azure Monitor资源来获取平台设置链接和特定收集器的schema。
了解IoT Edge指标
每个IoT Edge设备都依赖于两个模块,称为 runtime 模块,用于管理设备上的所有其他模块的生命周期和通信。 这些模块是 IoT Edge agent 和 IoT Edge hub。 若要了解有关这些模块的详细信息,请参阅 了解Azure IoT Edge运行时及其体系结构。
这两个运行时模块都创建指标,用于远程监视IoT Edge设备或其各个模块的执行方式。 IoT Edge代理报告各个模块和主机设备的状态,因此它会创建指标,例如模块正常运行的时间,或设备上使用的 RAM 量和 CPU 百分比。 IoT Edge中心报告设备上的通信情况,因此会创建指标,例如发送和接收的消息总数,或者解决直接方法所需的时间。 有关可用指标的完整列表,请参阅 Access 内置指标。
这两个模块都会自动公开这些指标,因此可以创建自己的解决方案来access并报告这些指标。 为了简化此过程,Microsoft提供了 azureiotedge-metrics-collector 模块,用于处理此过程(如果你没有或想要自定义解决方案)。 指标收集器模块从两个运行时模块和要监视的任何其他模块收集指标,并将其从设备发送。
这个教程会直接将度量发送到自定义表。 备用 IotMessage 路径通过 IoT 中心 发送指标数据,并且需要单独的云端工作流将数据引入 Log Analytics。
记录你的摄入配置
记录 HTTPS 日志-导入端点、DCR 不可变 ID 和 Azure Monitor 配置中的输入流名称。 不可变 ID 以 dcr- 开头。
收集器使用 Microsoft Entra 认证。 它不使用工作区ID或共享密钥。
创建教程标识
在本教程中,注册单租户 Microsoft Entra 应用程序,并使用短期有效的客户端密码。
重要
仅将客户端密钥用于学习和测试本教程。 不要在生产部署中使用这种认证方法。 该机密成为 IoT Edge 模块部署配置的一部分,并传递给设备。 任何能读取该配置的人或服务都能恢复秘密,即使门户在屏幕上屏蔽了它。 机密还需要在每个部署的设备上进行安全分发、轮换、撤销和清理。
对于生产环境,选择主机和凭证传输流程支持的认证方式。 当身份端点可供容器使用时,Azure虚拟机可以使用其托管身份。 工作负载身份联合要求具备受支持的 OIDC 颁发者、匹配的联合凭证,以及容器可访问的已刷新的令牌文件。 不要把未经测试的自定义令牌刷新器当作支持配置。 你也可以使用以安全方式交付并轮换的证书。 请参阅 “配置身份验证”。
在 Azure 门户中,转到 Microsoft Entra ID>应用注册,然后选择 新注册。
输入名称,例如
iot-edge-metrics-tutorial。对于“支持的帐户类型”设置,请选择“仅限此组织目录中的帐户”。 将 重定向URI 留空,然后选择 注册。
在申请的 概览 页面,复制以下数值:
- 应用程序(客户端)ID。 你可以将此值用于
AZURE_CLIENT_ID。 -
目录(租户)ID。 你可以将此值用于
AZURE_TENANT_ID。
- 应用程序(客户端)ID。 你可以将此值用于
选择“证书和机密”“客户端密码”>“新建客户端密码”>。
输入描述,选择最短的有效期,让你有足够时间完成教程,然后选择 添加。
立即复制新秘密的 值 ,并安全存储,直到你配置模块。 该数值只显示一次。 不要复制 秘密身份。
在 Azure 门户中,打开将数据发送到自定义指标表的 DCR。
选择 访问控制(IAM)>添加>添加角色分配。
在角色选项卡上,选择监视指标发布者,然后选择下一步。
在“成员”标签页中,选择“用户”、“组”或“服务主体>”,选择“成员”。 找到你注册的应用,选择它,然后选择 “选择”。
选择 审核+分配,查看DCR范围的分配,然后再次选择 审核+分配 。
无需 Microsoft 图形 API 权限。 DCR 范围的 Azure 角色赋值授权采集。 允许作业生效最多30分钟。 在传播前尝试上传可以返回HTTP 403。
检索 IoT hub 资源 ID
配置指标收集器模块时,输入 Azure 资源管理器 中 IoT Hub 的资源 ID。 立即获取该 ID。
在 Azure 门户中,转到您的 IoT 中心。
在 设置下,选择 属性。
复制“资源标识符”的值。 格式为
/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.Devices/IoTHubs/<iot_hub_name>。
部署指标收集器模块
将指标收集器模块部署到要监视的每个设备。 它像任何其他模块一样在设备上运行,并监视其分配的终结点以获取要收集和发送到云的指标。
按照以下步骤部署和配置收集器模块:
登录到 Azure portal,然后转到IoT hub。
在 “设备管理”下,选择 “设备”。
在IoT Edge设备列表中选择目标设备的设备 ID,以打开设备详细信息页。
在菜单栏中,选择“ 设置模块”。
从门户部署模块的第一步是声明设备上的 模块 。 如果使用的是在快速入门中创建的同一设备,则可以看到列出的“SimulatedTemperatureSensor”。 如果未出现,请立即添加:
在 IoT Edge modules 部分中,选择 Add,然后选择 IoT Edge Module。
更新以下模块设置:
设置 “值” IoT 模块名称 SimulatedTemperatureSensor映像 URI mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:latest重启策略 总是 期望状态 “正在运行” 选择“下一步: 路由”来继续配置路由。
添加一个路由,用于将模拟温度模块中的所有消息发送到IoT 中心。
设置 “值” 名称 SimulatedTemperatureSensorToIoTHub“值” FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
添加和配置指标收集器模块:
选择 Add,然后选择 IoT Edge Module。
更新以下模块设置:
设置 “值” IoT 模块名称 IoTEdgeMetricsCollector映像 URI mcr.microsoft.com/azureiotedge-metrics-collector:2.0.0重启策略 总是 期望状态 “正在运行”
若要使用度量收集器模块的不同版本或体系结构,请在 Microsoft Artifact Registry 中查找可用映像。
转到“ 环境变量 ”选项卡。
添加以下文本类型环境变量:
名称 “值” 资源ID 您在上一部分中检索到的 IoT hub 资源 ID。 UploadTarget AzureMonitorDataCollectionEndpoint 您的 HTTPS 日志摄取基础端点。 数据收集规则ID 你的DCR不可变ID。 数据集合流名称 你的DCR输入流名称,比如 Custom-IoTEdgeMetrics。AZURE_TENANT_ID 你从应用注册中复制的 目录(租户)ID 。 AZURE_CLIENT_ID 你从应用注册中复制的 应用(客户端)ID 。 AZURE_CLIENT_SECRET 你复制的客户端密码值。 不要使用 秘密身份证。 将门户中对
AZURE_CLIENT_SECRET的任何被遮蔽显示仅视为视觉上的遮罩。 这个值仍然存储在部署配置中。 不要把它放进源码管理、截图、支持包或日志里。默认端点为
http://edgeHub:9600/metrics,http://edgeAgent:9600/metrics。 默认的采集间隔为300秒。选择“应用”以保存所做的更改。
注意事项
若要通过 IoT 中心 发送指标,请将路由添加到上游,类似于
FROM /messages/modules/< FROM_MODULE_NAME >/* INTO $upstream。 在本教程中,指标将直接发送到 Log Analytics,因此不需要此路由。选择 “查看 + 创建 ”以继续执行部署模块的最后一步。
选择“创建”以完成部署。
部署完模块后,返回到设备详细信息页,其中看到四个模块在 部署中列为“指定”。 所有四个模块可能需要一些时间才能被列为设备报告,这意味着它们已经启动,并将状态报告给IoT 中心。 刷新页面以查看最新状态。
监视设备运行状况
给采集周期和摄入留出时间。 在目标工作区中,使用检查新引入的数据来检查最近新增的行。
指标位于你的自定义表中(默认为 IoTEdgeMetrics_CL),使用 直通架构。 这些工作簿会查询工作区并筛选出你的 IoT 中心。
Azure Monitor 为 IoT 提供三个默认工作簿模板:
- “车队视图”工作簿显示跨多个 IoT 资源的设备运行状况。 该视图允许为设备运行状况设置阈值,并显示每个设备的主要指标的聚合。
- “设备详细信息”工作簿显示消息传送、模块和主机的可视化效果。 消息视图可直观呈现设备的消息路由,并报告消息系统的整体运行状况。 模块视图显示设备上的单个模块如何执行。 主机视图显示有关主机设备的信息,包括主机组件和资源使用的版本信息。
- 警报 工作簿视图显示多个 IoT 资源中设备的警报。
浏览车队视图和运行状况快照工作簿
机群视图工作簿显示所有设备,并允许你选择特定设备以查看其运行状况快照。 按照以下步骤浏览工作簿可视化效果:
在 Azure 门户中,转到你的 IoT 中心页面。
在主菜单中,向下滚动到 “监视 ”部分,然后选择“ 工作簿”。
选择“车队视图”工作簿。
选择您的 Metrics Log Analytics 工作区。
选择 IoT 中心 和包含近期上传内容的时间范围。
确认指标来源为仅新增。
更新后的库模板默认设为仅限新项,该模式会读取所选的自定义表,并且无需设置切换时间。 已有的保存副本会保留其保存设置,可能 只在Legacy模式下打开。
将
MetricsTableName设置为您的自定义表名,或保留默认的IoTEdgeMetrics_CL。选择 “详情 ”以打开设备列表。
在列表中找到你的设备。
健康状况取决于配置的阈值和指标的时效性。 较旧的样本可能显示 未知 状态。
选择状态图标以打开 健康快照。
设备名称链接会打开“ 设备详情 ”。
在任何时间图表上,使用 X 轴下的箭头图标或选择图表并拖动光标以更改时间范围。
关闭运行状况快照工作簿。 在机群视图工作簿中,选择工作簿以返回到工作簿库。
浏览设备详细信息工作簿
设备详细信息工作簿显示单个设备的性能详细信息。 按照以下步骤浏览工作簿可视化效果:
在工作簿库中,选择IoT Edge 设备详细信息工作簿。
选择工作区、IoT 中心、仅限新建和您的设备。
设备详细信息工作簿中的第一页是 消息 视图,其中选择了 “路由 ”选项卡。
左侧是一个表,显示设备上按终结点组织的路由。 对于此设备,用于路由到IoT 中心的上游终结点从模拟温度传感器模块的temperatureOutput输出中接收消息。
在右侧,图形显示一段时间内连接的客户端数。 选择并拖动图形以更改时间范围。
选择“图形”选项卡以查看路由的不同可视化效果。 在图形页上,拖放终结点以重新排列图形。 当有许多要可视化的路由时,此功能会有所帮助。
健康选项卡显示消息传送的任何问题,例如丢失的消息或断开连接的客户端。
选择 模块 视图以查看设备上部署的所有模块的状态。 选择一个模块以查看其 CPU 和内存使用情况的详细信息。
选择 host 视图以查看有关主机设备的信息,包括其作系统、IoT Edge守护程序版本和资源使用情况。
查看模块日志
查看设备的指标后,可能需要进一步深入了解并检查各个模块。 IoT Edge通过实时模块日志功能在Azure portal中提供故障排除支持。
在设备详细信息工作簿中,选择“ 实时故障排除”。
故障排除页面会直接打开并显示来自 IoT Edge 设备的 edgeAgent 日志。 如果在设备详细信息工作簿中选择特定的时间范围,该设置将传递到故障排除页面。
使用下拉菜单切换到设备上运行的其他模块的日志,并使用“ 重启 ”按钮重启模块。
还可以从IoT Edge设备的详细信息页access故障排除页面。 有关详细信息,请参阅通过 Azure 门户解决 IoT Edge 设备故障。
后续步骤
在完成后续教程时,把指标收集模块放在测试设备上,然后回到这些工作手册,看看添加更复杂模块和路由时信息的变化。
在生产环境中使用采集器之前,先用 生产认证方法替换教程客户端秘密。 然后删除客户端密钥。 如果你不再需要教程应用,也要移除其DCR角色分配并删除应用注册。
要比较旧历史和新历史,可以使用 “迁移指标收集器”。
为了保留自定义视图,请 保存一份工作簿副本。 请单独配置 警报规则 。
转到下一教程,设置开发人员环境并开始将自定义模块部署到设备。
使用 Visual Studio Code 开发 Azure IoT Edge 模块