利用Grafana监控RouterOS运行状态
乱翻收藏夹的时候发现我还有个免费的Grafana Cloud,遂想着把我这些自建的东西都用它监控起来,反正不用白不用。那么第一个就拿我的RouterOS软路由开刀吧。
环境
- Mikrotik CHR 7.12
- Grafana Cloud - Cloud Free 订阅
- Prometheus 2.37
- mktxp
- CloudFlare Tunnel,如果你像我一样把Prometheus部署在家宽的话
在RouterOS系统创建组和用户
毕竟还是用第三方工具登陆路由器,还是遵循最小权限原则,给mktxp创建一个只包含必要的权限的账号比较好。
1 | /user/group add name=prometheus policy=read,api |
配置mktxp
mktxp是一个面向Mikrotik RouterOS的Prometheus exporter。选择这个而不是nshttpd/mikrotik-exporter主要出于以下两个原因:
nshttpd/mikrotik-exporter已经停止更新,最后一次commit停留于2022年6月17日- 它每一次获取数据都会登入和登出,而这会导致RouterOS的日志里面充斥
prometheus用户的登入和登出记录,就像这样:![]()
我使用Docker部署mktxp,它需要两个配置文件:mktxp.conf和_mktxp.conf。
_mktxp.conf负责mktxp的运行配置,比如端口号、数据获取的间隔时间等。内容如下:
1 | [MKTXP] |
mktxp.conf用于配置要监控的RouterOS实例,内容如下:
1 | # Router为路由器的代号,可以改成自己喜欢的值 |
然后用如下docker-compose.yml启动mktxp即可:
1 |
|
mktxp在启动成功的情况下是没有日志输出的,访问49090端口(即_mktxp.conf中配置的端口),如果能看到一大片Prometheus的metrics,那就说明启动成功了。
配置Prometheus
在prometheus.yml中添加如下配置:
1 | scrape_configs: |
重启Prometheus,然后到Prometheus的Status -> Targets中,检查mikrotik_exporter这个target是否存在,以及State是不是UP。
配置Grafana
如果你的Prometheus是部署在家宽环境,那在配置Grafana之前需要先做个内网穿透,让Prometheus的9090/tcp端口能被外网访问到。内网穿透的方案有很多,比如我就用的CloudFlare Tunnel。因为本文不是讲内网穿透,所以就不展开讲配置了。
到Grafana的Home -> Connections -> Data sources中,添加一个新的Prometheus数据源,其中Prometheus server URL填你的Prometheus服务的地址,别的不用管,Save & test成功就没问题。
此外,还可以到Grafana的Explore页面查询一个mktxp的metrics,来检查Grafana是否能成功获取到数据。

确认Grafana能成功获取到数据后,就可以导入mktxp的Grafana Dashboard了。到Grafana的Dashboards页面,点击New按钮后选择Import,填写这个dashboard的ID13679,点Load,在下一个页面给这个dashboard绑定我们的Prometheus,然后点Import,就可以用了。

