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

IoT Hub 设备更新诊断概述

IoT 中心的设备更新具有多种功能,可帮助你诊断和排查设备端错误。 有三种诊断功能可用:

  • 可以直接在设备更新用户界面中查看部署错误代码

  • 远程日志收集 允许创建日志操作,这些操作指示目标设备将设备上的诊断日志上传到链接的 Azure Blob 存储帐户。

  • 代理检查 在注册到设备更新实例的设备上运行验证检查,目的是诊断在连接的 IoT 中心注册但未显示在设备更新中的设备。

UI 中的部署错误代码

当设备向设备更新服务报告部署失败时,设备更新用户界面会显示设备报告的 resultCodeextendedResultCode。 使用以下步骤查看以下代码:

  1. Azure 门户中导航到 IoT 中心。

  2. 选择 “更新 ”,然后导航到“ 组和部署 ”选项卡。

  3. 选择具有活动部署的组的名称,以访问 “组详细信息 ”页。

  4. “设备”列表中选择 任何设备名称以打开设备详细信息面板。 可在此处查看设备报告的结果代码。

  5. 设备更新引用代理遵循结果代码字段的标准 HTTP 状态代码约定(例如,“200”表示成功)。 有关如何分析结果代码的详细信息,请参阅 设备更新客户端错误代码

    注释

    如果已修改设备更新代理以报告自定义结果代码,则数字代码仍会传递到 Device Update 用户界面。 然后,可以参考创建的任何文档来分析这些数字代码。

远程日志收集

当设备中的详细信息需要诊断和排查错误时,可以使用日志收集功能指示目标设备将设备诊断日志上传到链接的 Azure Blob 存储帐户。 可以按照 远程收集设备诊断日志中的说明开始使用此功能。

设备更新的远程日志收集是一项服务驱动的基于操作的功能。 若要利用日志收集,设备只需实现 诊断接口 和配置文件,并且能够通过 SDK 将文件上传到 Azure Blob 存储。

从较高层面讲,日志收集功能的工作原理如下:

  1. 使用设备更新用户界面或 API 来创建新的日志操作,目标是最多 100 个已实现诊断接口的设备。

  2. 设备更新服务使用诊断接口将日志收集启动消息发送到目标设备。 此启动消息包括日志操作 ID 和用于上传到关联的 Azure 存储帐户的 SAS 令牌。

  3. 收到启动消息后,目标设备的 Device Update 代理将尝试在设备上代理配置文件中指定的一个或多个预定义文件路径中收集和上传文件。 默认情况下,设备更新引用代理配置为上传设备更新代理诊断日志(aduc.log)和 DO 代理诊断日志(“do-agent.log”。

  4. 然后,设备更新代理将操作状态(成功失败)报告给服务,包括日志操作 ID、ResultCode 和 ExtendedResultCode。 当设备更新代理在日志操作中失败时,它会自动重试三次,并仅将最终状态报告给服务。

  5. 所有目标设备将终端状态报告回设备更新服务后,设备更新服务会将日志作标记为 “成功 ”或 “失败”。 成功的日志操作表明所有目标设备已成功完成日志操作。 至少一个目标设备的日志操作失败时,会出现日志操作失败的提示。

    注释

    由于日志操作是由目标设备并行执行的,虽然某些目标设备可能已成功上传日志,但是日志操作总体上标记为失败。 可以通过用户界面或 APIs 查看日志操作详细信息,来判断哪些设备成功,哪些设备失败。

代理检查

当设备在 IoT 中心注册但未显示在设备更新实例中时,可以使用代理检查功能运行预先进行的验证检查来帮助诊断基础问题。 可以按照以下 代理检查说明开始使用此功能。

从较高层面讲,代理检查功能的工作原理如下:

  1. 向 IoT 中心注册设备。 如果设备报告的模型 ID 与 IoT 中心的设备更新服务兼容,则连接的设备更新实例会自动将设备注册到设备更新服务中。
  2. 为了使设备能够被 Device Update 正确管理,它必须满足某些条件,这些条件可以通过 Agent Check 的预设验证检查进行验证。 有关这些条件的详细信息,可 在此处找到。
  3. 如果设备不符合所有这些条件,则设备更新无法正确管理,并且不会显示在设备更新接口或 API 响应中。 可以使用代理检查查找此设备,并尝试使用代理检查确定不符合的条件。
  4. 确定未满足哪些条件后,可以更正问题,然后设备应正确显示在设备更新界面中。

后续步骤

了解如何使用设备更新的远程日志收集和代理检查功能: