OpenWRT上使用node_exporter

问题

继续水文一篇。

我之前是用N1刷了OpenWRT来用的,当时跑node_exporter很简单,直接下载一个ARM64版本的node_exporter放上去跑,配置一下开机启动就可以了。

但是因为N1用了一年多感觉稳定性不太行,于是这两天把一台刷过OpenWRT的陈年Netgear 3700拿出来先顶上。本来想如法炮制放个node_exporter上去,结果发现不行。

首先,这个3700用的处理器不是ARM的,而是MIPS,虽然node_exporter也有mips版本,但是运行不了,似乎是指令不兼容。

而且这个3700只有128M空间,系统要占掉一大半,而node_exporter就有20M,而且只能放在/tmp下面,都不确定重启以后还在不在。

所以这条路行不通。

解决

忽然想到OpenWRT是可以装软件包的,于是去管理界面搜索了一下,找到一个:prometheus-node-exporter-lua

其它还有一些包也可以装:

prometheus-node-exporter-lua-nat_traffic
prometheus-node-exporter-lua-netstat   
prometheus-node-exporter-lua-openwrt
prometheus-node-exporter-lua-wifi
prometheus-node-exporter-lua-wifi_stations

装上一试,果然可以:

curl http://localhost:9100/metrics

然而从prometheus那边还是抓不到数据,在路由器上看了一下:

netstat -an | grep LISTEN

居然是监听127.0.0.1:9100,那要怎么办呢?管理界面上没有配置软件包的地方。

最后当然是放狗找到这篇《How I monitor my OpenWrt router with Grafana Cloud and Prometheus

解决方案就是手工修改配置/etc/config/prometheus-node-exporter-lua

config prometheus-node-exporter-lua 'main'
        option listen_ipv6 '0'
        option listen_port '9100'
        option listen_interface 'loopback'

把其中的loopback改成lan,然后重启:

/etc/init.d/prometheus-node-exporter-lua restart

再看netstat,绑定的就是实际的IP了,现在就可以在内网其它电脑上取得数据了。

当然,这个方案也就是凑和用了,这个exporter提供的数据非常有限,只有CPU、内存、网络。其它诸如存储空间、IO使用……等等,全都付诸阙如,更遑论硬件温度了……

不过现在我又把路由器给换成了小米AX3600,这个终于又是ARM的了,刷了OpenWRT再跑个ARM版node_exporter美滋滋。

推送到[go4pro.org]