IoT 中心的设备更新具有多种功能,可帮助你诊断和排查设备端错误。 在 v0.8.0 代理发布后,有两种诊断功能可用:
可以直接在设备更新用户界面的最新预览版本中查看部署错误代码
远程日志收集 支持创建日志操作,该操作指示目标设备将设备上的诊断日志上传到关联的 Azure Blob 存储帐户。
UI 中的部署错误代码
当设备向设备更新服务报告部署失败时,设备更新用户界面会显示设备报告中的resultCode
和extendedResultCode
。 使用以下步骤查看以下代码:
在 Azure 门户中导航到 IoT 中心。
选择 “更新 ”,然后导航到“ 组和部署 ”选项卡。
选择具有活动部署的组的名称,以访问 “组详细信息 ”页。
在 “设备”列表中选择 任何设备名称以打开设备详细信息面板。 可在此处查看设备报告的结果代码。
设备更新引用代理遵循结果代码字段的标准 HTTP 状态代码约定(例如,“200”表示成功)。 有关如何分析结果代码的详细信息,请参阅 设备更新客户端错误代码。
注释
如果已修改设备更新代理来报告自定义的结果代码,数字代码仍将传递到设备更新用户界面。 然后,可以参考你创建的任何文档来分析这些数字代码。
远程日志收集
当设备中的详细信息需要诊断和排查错误时,可以使用日志收集功能指示目标设备将设备诊断日志上传到链接的 Azure Blob 存储帐户。 可以按照 远程收集设备诊断日志中的说明开始使用此功能。
设备更新的远程日志收集是一个以服务驱动并基于操作的功能。 若要利用日志收集,设备只需实现诊断接口和配置文件,并且能够通过 SDK 将文件上传到 Azure Blob 存储。
从较高层面讲,日志收集功能的工作原理如下:
用户通过设备更新用户界面或 API 创建新的日志操作,针对多达 100 台已实现诊断接口的设备。
设备更新服务使用诊断接口将日志收集启动消息发送到目标设备。 此启动消息包括日志操作 ID 和用于上传到关联 Azure 存储帐户的 SAS 令牌。
收到启动消息后,目标设备的 Device Update 代理将尝试在设备上代理配置文件中指定的预定义文件路径中收集和上传文件。 默认情况下,设备更新引用代理配置为上传设备更新代理诊断日志(
aduc.log
)和 DO 代理诊断日志(“do-agent.log”。然后,设备更新代理将操作的状态(成功 或 失败)报告回服务,包括日志操作 ID、ResultCode 和 ExtendedResultCode。 如果设备更新代理日志操作失败,它将自动尝试重试三次,仅将最终状态报告给服务。
所有目标设备将终端状态报告回设备更新服务后,设备更新服务会将日志作标记为 “成功 ”或 “失败”。 成功的日志操作表明所有目标设备都已成功完成该日志操作。 失败的日志操作表明至少有一个目标设备未能成功完成日志操作。
注释
由于日志操作由目标设备并行执行,因此某些目标设备可以成功上传日志,但整个日志操作可能被标记为失败。 可以通过用户界面或 API 查看日志操作的详细信息,以了解哪些设备成功,哪些设备失败。
后续步骤
了解如何使用设备更新的远程日志收集功能: 使用适用于 IoT 中心的设备更新从设备远程收集诊断日志