NanoMQ 新增桥接连接状态监控/重构日志系统

科技资讯 投稿 29200 0 评论

NanoMQ 新增桥接连接状态监控/重构日志系统

新增桥接连接状态监控、重构日志系统

9 月,NanoMQ 继续保持稳步更新,最新的 0.12.1 版本已于近日正式发布。此版本依旧带来了丰富的更新:桥接功能中增加了上下线事件和连接状态监控能力;重构升级了原有的日志系统;配置文件得到了简化,将多个配置文件合并整理为统一的单一文件。

桥接连接状态事件消息

IoT 应用中,弱网状态下时常出现网络不稳定的情况,需要一个可靠的途径来侦测当前设备的联网状态以及与云端的连通性。为此,NanoMQ 提供了利用桥接连接来探测网络连接状态的能力。当用户在边缘侧使用 NanoMQ 桥接到云端时,NanoMQ 会创建一个 MQTT 连接到指定的云端 Broker,基于 MQTT 的长连接特性,本地网络里的设备可以利用此连接来判断网络状态。

如上图所示,当本地网络中断或其他故障导致桥接连接断开时,NanoMQ 会检测到桥接连接断开的情况,并将其转化为一个客户端上下线事件消息发布到系统主题中。网络恢复后桥接连接自动重连,也会发布一个上线事件消息到系统主题。本地的客户端和其他服务可以根据收到的此消息进行对应的应急处理,还可以配置多个桥接目标来作为备选服务避免因为云端服务中断导致的误判。

如何获取桥接上下线事件消息

目前 NanoMQ 的桥接状态事件支持所有的桥接方式,包括 MQTT 3.1.1/5.0 和 MQTT over QUIC。 上下线事件消息的系统主题分别为 $SYS/brokers/disconnected
 和 $SYS/brokers/connected
。事件消息同样也支持作为一个标准 Publish 消息被以 WebHook 的方式获取。这里以一个 MQTT over QUIC 桥接配置为例,示范如何获取桥接连接的上下线消息:

可见上下线事件消息中的客户端 ID 和用户名 / 密码都与桥接配置中的一致,可以此来区分本地客户端和桥接客户端。目前桥接连接状态与普通 MQTT 客户端是共享同一个系统主题,NanoMQ 也考虑为桥接网络状态单独设立一个系统主题,以及作为云边消息总线加入标准的网络健康监控功能。欢迎广大用户提交相关 Issue 和功能申请。

新增 QUIC 传输层的 Keep Alive 参数配置

QUIC 内置了一个连接保持机制,为了让用户能够更细颗粒度的控制 MQTT 和 QUIC 的超时时间,NanoMQ 的桥接功能把两者的超时设置都暴露为可设置状态,后续还会开放更多的 QUIC 传输层参数供用户调优。

配置文件简化

在 0.12 版本之前,NanoMQ 每个模块都有一个独立的配置文件,需要单独打开每个文件进行修改配置,启动较为繁琐。从 0.12 版本开始,我们将正式统一合并所有的配置项到 nanomq.conf, 并且为每个模块单独增加了分组。

需要注意的是,之前的命令行参数中指定桥接配置文件和用户名密码文件路径的功能被废弃。

日志系统重构

NanoMQ 的旧有日志系统支持命令行、文件和 Syslog 三种模式,但是不能通过配置进行开关,不支持分级输出,而且需要在编译阶段通过修改 CMake 参数来启用,调试和运维分析有一定困难。在 0.12 版本我们重构了整个日志系统,保持对原有三种输出目标和 Syslog 标准兼容外,新增了 trace | debug | info | warn | error | fatal 5 种日志等级,以及指定日志文件路径和日志文件滚动更新等功能。

即将到来

规则引擎的消息重发布功能和规则热更新将在下一个版本中正式发布。同时会为 NanoMQ 增加 Reload 命令来进行配置文件热更新,为 MQTT over QUIC 桥接功能增加多次重连失败可以自动切换为标准 TCP 的功能(Fallback to TCP),来保证在不支持 QUIC 的网络下保持桥接连接功能正常。

编程笔记 » NanoMQ 新增桥接连接状态监控/重构日志系统

赞同 (32) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽