Azure Iot边缘报告客户端状态的时间线
我如何绘制我的意思是,获取数据以绘制IotHub设备客户端连接状态的时间线 我想从我的所有设备中绘制可用性状态时间线,为此我正在执行以下操作: 每一分钟:请求所有“$edgeHub”模块标识 将“$edgeHub”报告的客户端保存到数据库中 从该数据库获取时间线 当我的设备数量增加时,我会做很多请求,我想知道是否没有其他优化的方式使用Azure IoT资源来完成这项工作 从“$edgeHub”模块Twin中,我得到了示例:Azure Iot边缘报告客户端状态的时间线,azure,azure-iot-hub,azure-iot-hub-device-management,Azure,Azure Iot Hub,Azure Iot Hub Device Management,我如何绘制我的意思是,获取数据以绘制IotHub设备客户端连接状态的时间线 我想从我的所有设备中绘制可用性状态时间线,为此我正在执行以下操作: 每一分钟:请求所有“$edgeHub”模块标识 将“$edgeHub”报告的客户端保存到数据库中 从该数据库获取时间线 当我的设备数量增加时,我会做很多请求,我想知道是否没有其他优化的方式使用Azure IoT资源来完成这项工作 从“$edgeHub”模块Twin中,我得到了示例: "reported": { "clie
"reported": {
"clients": {
"iot/device": {
"status": "Connected",
"lastConnectedTimeUtc": "2020-11-30T12:00:41.5918442Z",
"lastDisconnectedTimeUtc": "2020-11-30T12:00:41.5737114Z"
}
}
对于我正在使用的API调用
非常感谢任何有助于我进一步调查Azure监控设备状态的回复。1。查询
我将选择使用物联网中心查询,而不是逐个请求所有模块
从devices.modules中选择*其中为_definedproperties.reported.clients
我不知道您的SDK是否支持这一点,但大多数(如果不是所有的话)官方SDK都支持运行查询。这将返回定义了客户端报告属性的每个模块。您可以按计划运行它,然后按照最初的计划将输出保存到数据库中
2.将所有模块双事件路由到端点
这一个有点棘手,但您可以基于查询路由设备/模块更改。然后可以将所有事件路由到单独的端点。路线大致如下:
对象是否为$twin.properties.reported.clients
您可以阅读有关邮件路由的更多信息。这种方法的好处是,您不需要向物联网中心发出任何请求,也不需要实时接收更改。您甚至可以使用Azure Stream Analytics来消费这些事件,Azure Stream Analytics支持以本机方式输出到Power BI、表存储和Cosmos DB。结果:您没有编写代码,只使用Azure服务。如果您想利用Azure Stream Analytics,您可能需要咨询Azure定价计算器
注意:我没有彻底测试解决方案2,但从理论上讲这应该有效。要添加到@matthijs van der veer的答案中,您还可以订阅设备双更改并更新双更改事件上的计数器。另一种方法,尝试发送设备连接的设备生命周期事件,设备已断开从事件网格到事件集线器的连接。并从Event Hub将其发送到任何端点以处理事件,即可能是从Event Hub侦听事件的模块 因此,流程将如下->
IoT中心刀片->事件->添加订阅->添加事件中心命名空间端点感谢您的回答,这对我帮助很大。不幸的是,我没有找到一个使用Golang SDK执行查询的好方法,因此我将使用传统API请求为服务人员解决这个问题,因为我们没有很多设备。我也在启动第二个选项,但我相信我会花一段时间让它发挥作用,我会尽快回复第二个选项:。我怀疑使用第二个方法将不会收到连接和断开连接的事件。我相信第二个选项中有一些小的更改,它会起作用。这个微软文档绝对有点帮助,你可以使用设备心跳。您还可以对设备连接/断开状态使用事件网格订阅。有很多方法可以做到,但我很高兴这是一个可行的选择,谢谢你让我知道。有什么理由否决吗?