使用 MQTT / Python / Grafana 实现小米路由器网速查看与统计
小米 AX6000 路由器虽然身形巨大无比,但自带的网速查看功能却十分简陋,约等于没有。幸好系统是基于 OpenWrt 的,可以自己动手实现一个。
Step 1: 寻找数据
命令:
简单的命令却寻觅最久,机缘巧合之下才发现 ... 使用时加入 debug 参数以获得更多信息。
Step 2:加工处理
有了数据源就好做了,定时采样加工处理再展示即可。小米路由器自带了一部分 MQTT 工具,因此使用 MQTT 将数据源转发给电脑处理并入库,再使用 Grafana 做展示。即使电脑不一直开机也没关系,通过配置,MQTT broker 可持久化暂存未处理消息。
2.1 安装 Mosquitto broker 2.0
小强系统自带了 MQTT client ,只需安装支持 MQTT v5 的 broker 即可。手动下载 ipk 文件,解压后获得可执行文件(.\data.tar.gz.\usr\sbin\mosquitto),将其上传到路由器中并注册为服务。如果 opkg 可用更佳。
Cortex-A53: mosquitto-nossl_2.0.15-1_aarch64_cortex-a53.ipk
更多: https://mirrors.aliyun.com/openwrt/releases/22.03-SNAPSHOT/packages/
创建配置文件:
2.2 定时采样
创建 cron job 实现定时采样,可结合 sleep 实现分钟内采样。
2.3 编写程序解析数据并入库
使用 Python 编写 MQTT 消费者程序,解析数据并写入数据库。如果是 Windows 可以使用 nssm 将其注册为服务。
配置在 config.py 中。
创建所需表:
2.4 安装 Grafana 并创建监控面板
有了数据就可以用 Grafana 自由的创建监控面板了~
比如创建一个 Time series 面板来查看上传下载总速度:
Screenshot: