请教 iot 设备活跃有什么开源的 Health monitoring 方法库

2020-04-16 15:30:10 +08:00
 excxapp

比如有很多设备,要检测在线设备数,设备通过 mqtt 或者 5 分钟发一次心跳,有些设备突然断电等情况可能不会发送离线消息。 现在有什么好的开源设备活跃库吗

2488 次点击
所在节点    程序员
19 条回复
xcstream
2020-04-16 16:13:59 +08:00
后台接受到心跳,直接往时序数据库里写就完事了
excxapp
2020-04-16 16:33:23 +08:00
@xcstream 时序数据库写入但是需要告警机制,比如超过 5 分钟离线发送消息检测。
我时序用的是 influxfb 。
如果设备少的话还好,如果设备多,要经常 select 这种吗?
现在 github 里面不知道有没有针对这种保活的开源软件。
shaopu
2020-04-16 16:59:53 +08:00
可以参考阿里和小米是怎么弄的~
mango88
2020-04-16 17:01:23 +08:00
MQTT 不是有遗嘱消息的支持吗
excxapp
2020-04-16 17:29:09 +08:00
@shaopu 咋参考?大佬有没有相关资料文档地址啥的?没看到网上有分享

@mango88 mqtt 突然断开后,是不会发送消息的,我服务端要监控到,同时有些设备可能也不是 mqtt 的。监控设备断续。

现在想到的一个方案是:
redis 有序列表,在设备交互过程设置 score,排序获得超时的设备判断断开或者去 health check.
HHBilly
2020-04-16 18:07:11 +08:00
@excxapp 在建立连接的时候设置 keepalive 心跳时间就行 突然断开后会如果在心跳时间内没重新连上 就会自动发送遗嘱消息
mango88
2020-04-16 18:41:41 +08:00
@excxapp

#6 已经说了遗嘱消息的作用

客户端连接的时候,设置遗嘱消息
服务端需要订阅这个遗嘱消息的主题,
当客户端断开时,就会收到这个遗嘱消息
这样就可以知道了某个设备离线了
mango88
2020-04-16 18:43:42 +08:00
@mango88 不是 mqtt 的设备的话,按你的 score 排序应该可行
iRiven
2020-04-16 19:52:59 +08:00
判断设备是否出现异常离线直接查看最后一次更新数据的时间,不要去维护多余的状态。
Oktfolio
2020-04-16 19:57:58 +08:00
最后上报时间
xcstream
2020-04-16 23:34:55 +08:00
用 redis
只统计数量的话可以
incr #key#
key 就是类似 yyyy-MM-dd hh:( mm - mm%5)

统计每个设备可以
hset #key# #deviceid#
thomaspaine
2020-04-17 02:54:26 +08:00
你也没说场景

开源服务 edgex,里面也有健康监测,你可以关注下

另外从硬件上面来说,你可以加装超级电容或者纽扣电池,如果是用这种设备供电就发异常信息,然后关机。超级电容可以撑 5 秒吧至少。就是需要修改设备程序了。
zexinwu84
2020-04-17 09:09:20 +08:00
规则引擎
excxapp
2020-04-17 09:14:15 +08:00
@zexinwu84 比如?有 github 连接 /文档之类的吗
excxapp
2020-04-17 09:17:04 +08:00
需求:设备在线 /离线 /活跃度(交互次数等)状态监控,设备异常状态告警
lzyliangzheyu
2020-04-17 10:03:23 +08:00
遗嘱消息类似于诸葛亮给刘备的锦囊妙计,服务端一段时间收不到消息之后就会打开这个锦囊(遗嘱消息)
lzyliangzheyu
2020-04-17 10:04:51 +08:00
遗嘱消息是刚建立连接客户端就会发给服务端的,但是服务端只是把他收着,等到设备失联了才把遗嘱消息生效
excxapp
2020-04-17 10:29:50 +08:00
@lzyliangzheyu 有些设备不一定易是 mqtt 连接的,有可能是通过队列连接的第三方
huruwo
2020-04-17 10:36:05 +08:00
坏消息是没有
好消息是大家有这个需求,你可以开始做一点微小的贡献给开源社区了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/663099

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX