V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
excxapp
V2EX  ›  程序员

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

  •  
  •   excxapp · 2020-04-16 15:30:10 +08:00 · 2286 次点击
    这是一个创建于 1464 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

    另外从硬件上面来说,你可以加装超级电容或者纽扣电池,如果是用这种设备供电就发异常信息,然后关机。超级电容可以撑 5 秒吧至少。就是需要修改设备程序了。
    zexinwu84
        13
    zexinwu84  
       2020-04-17 09:09:20 +08:00 via Android
    规则引擎
    excxapp
        14
    excxapp  
    OP
       2020-04-17 09:14:15 +08:00
    @zexinwu84 比如?有 github 连接 /文档之类的吗
    excxapp
        15
    excxapp  
    OP
       2020-04-17 09:17:04 +08:00
    需求:设备在线 /离线 /活跃度(交互次数等)状态监控,设备异常状态告警
    lzyliangzheyu
        16
    lzyliangzheyu  
       2020-04-17 10:03:23 +08:00
    遗嘱消息类似于诸葛亮给刘备的锦囊妙计,服务端一段时间收不到消息之后就会打开这个锦囊(遗嘱消息)
    lzyliangzheyu
        17
    lzyliangzheyu  
       2020-04-17 10:04:51 +08:00
    遗嘱消息是刚建立连接客户端就会发给服务端的,但是服务端只是把他收着,等到设备失联了才把遗嘱消息生效
    excxapp
        18
    excxapp  
    OP
       2020-04-17 10:29:50 +08:00
    @lzyliangzheyu 有些设备不一定易是 mqtt 连接的,有可能是通过队列连接的第三方
    huruwo
        19
    huruwo  
       2020-04-17 10:36:05 +08:00
    坏消息是没有
    好消息是大家有这个需求,你可以开始做一点微小的贡献给开源社区了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1007 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 2020ms · UTC 19:04 · PVG 03:04 · LAX 12:04 · JFK 15:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.