다음을 통해 공유

监视设备连接状态

Azure IoT 中心支持多种方法来监视设备的状态。 本文介绍了不同的监视方法,并提供指导来帮助选择 IoT 解决方案的最佳选项。

下表介绍了监视设备连接状态的三种方法:

方法 状态频率 成本 努力生成
设备孪生 connectionState 属性 断断续续 Low Low
事件网格 60 秒 Low Low
自定义设备检测信号模式 自定义 High High

由于其可靠性、低成本和易用性,因此我们建议事件网格作为大多数客户的首选监视解决方案。

但是,使用事件网格进行监视存在一些限制,这些限制可能会取消某些 IoT 解决方案的资格。 使用本文了解每个选项的优点和限制。

设备孪生 connectionState

每个 IoT 中心设备标识都包含一个称为connectionState报告或disconnected报告connected的属性。 此属性表示 IoT 中心对设备连接状态的理解。

connectionState 属性有几个限制:

  • 此属性仅针对使用 MQTT 或 AMQP 的设备进行更新。
  • 对此属性的更新依赖于协议级 ping,可能会延迟多达 5 分钟。

重要

建议仅在开发和调试期间使用 connectionState 字段,而不是在生产环境中使用。 IoT 解决方案不应在运行时查询字段。 例如,不要在发送云到设备消息或短信之前查询 connectionState 字段以检查设备是否已连接。

事件网格

建议将事件网格作为大多数客户的首选监视解决方案。 订阅事件网格上的 deviceConnecteddeviceDisconnected 事件,以获取警报并监视设备连接状态。

使用以下文章了解如何在 IoT 解决方案中集成设备已连接和断开连接的事件:

设备连接状态事件可用于使用 MQTT 或 AMQP 协议进行连接的设备,或者通过 WebSocket 使用上述任一协议进行连接。 仅使用 HTTPS 发出的请求不会触发设备连接状态通知。

  • 对于使用用于 Java、Node 或 Python 的 Azure IoT SDK 进行连接的设备:
    • MQTT:自动发送连接状态事件。
    • AMQP:应创建 云到设备链接 ,以减少报告连接状态的延迟。
  • 对于使用适用于 .NET 或 C 的 Azure IoT SDK 进行连接的设备,在发送初始设备到云消息或收到云到设备消息之前,不会报告连接状态事件。

在 Azure IoT SDK 之外,在 MQTT 中,这些作等同于对相应消息传送主题的 SUBSCRIBE 或 PUBLISH作。 通过 AMQP,这些作等同于在适当的链接路径上附加或传输消息。

事件网格限制

使用事件网格监视设备状态具有以下限制:

  • 事件网格不会报告每个设备连接和断开连接事件。 相反,它会每隔 60 秒轮询设备状态,并在发生状态更改时发布最新的连接状态。 因此,如果 60 秒窗口中发生多个事件,状态更改报告可能会延迟最多一分钟,并且单个状态更改可能未报告。
  • 使用 AMQP 的设备需要云到设备链接 ,然后才能报告设备状态。
  • 事件网格公开无法隐藏的公共终结点。

如果上述任何限制影响使用事件网格进行设备状态监视的能力,则应考虑改为生成自定义设备检测信号模式。

设备检测信号模式

如果需要知道设备的连接状态,但事件网格的限制对解决方案来说太有限,则可以实现 检测信号模式。 在检测信号模式中,设备至少每固定时间发送一次设备到云的消息(例如,至少每小时发送一次)。 即使设备没有任何要发送的数据,它仍然发送一条空的设备到云的消息,通常使用一个属性将其标识为检测信号消息。 在服务端,解决方案维护一个映射,其中包含为每个设备收到的最后一个检测信号。 如果解决方案在设备的预期时间内未收到检测信号消息,则假定设备出现问题。

设备检测信号限制

由于检测信号消息作为设备到云的消息实现,因此它们将计入 IoT 中心消息配额和限制。

较短的到期时间模式

如果 IoT 解决方案仅使用连接状态来确定是否将云到设备的消息发送到设备,并且消息不会广播到大型设备集,请考虑使用 较短的过期时间模式 作为检测信号模式的更简单替代方法。 短过期时间模式是一种确定是否通过发送具有短消息过期时间的消息以及从设备请求消息确认来发送云到设备的消息的方法。

有关详细信息,请参阅消息过期(生存时间)。

其他监视选项

更复杂的实现可能包括 Azure MonitorAzure 资源运行状况 中的信息,用于识别尝试连接或通信但失败的设备。 Azure Monitor 仪表板有助于查看设备的聚合运行状况,而事件网格和检测信号模式可以更轻松地响应单个设备中断。

若要详细了解如何将这些服务与 IoT 中心配合使用,请参阅 监视 IoT 中心检查 IoT 中心资源运行状况。 有关使用 Azure Monitor 或事件网格监视设备连接的详细信息,请参阅 “监视”、“诊断”和“排查设备连接问题”。