为什么不试试用 Mikrotik_exporter 来监控你的 RouterOS 呢?

为了更方便我监控 RouterOS,嘿嘿嘿,我找到了这个,mikrotik-exporter

配置 Mikrotik

添加 Prometheus 用户

创建有 api 且 read only 的用户组

1
/user group add name=prometheus policy=api,read,winbox

(optional)如果有 lte 的话要再加一个 test

1
/user group add name=prometheus policy=api,read,winbox,test

创建用户,记得改密码

1
/user add name=prometheus group=prometheus password=changeme

监控单台设备

1
./mikrotik-exporter -address 10.10.0.1 -device my_router -password changeme -user prometheus

-address 后是你 RouterOS 的地址,-device 后是给它起的标签名,后面是密码和用户名

监控多台设备

使用配置文件启动

1
./mikrotik-exporter -config-file config.yml

样例 config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
devices:
- name: my_router
address: 10.10.0.1
user: prometheus
password: changeme
- name: my_second_router
address: 10.10.0.2
port: 8999
user: prometheus2
password: password_to_second_router
- name: routers_srv_dns
srv:
record: _mikrotik._udp.example.com
user: prometheus
password: password_to_all_dns_routers
- name: routers_srv_custom_dns
srv:
record: _mikrotik2._udp.example.com
dns:
address: 1.1.1.1
port: 53
user: prometheus
password: password_to_all_dns_routers

features:
bgp: true
dhcp: true
dhcpv6: false
dhcpl: true
routes: true
pools: true
optics: true

然后配置 Prometheus

1
vi Prometheus-configmap.yaml

在 scrape_configs 后面加上

1
2
3
4
5
6
- job_name: 'RouterOS_exporter'
static_configs:
- targets: ['127.0.0.1:9436']
labels:
instance: 'RouterOS'
env: 'Prodction'

targets 后面加上 mikrotik_exporter 运行的机子的 ip

热加载更新: 为 Prometheus 服务的端口

1
curl -XPOST http://<your-address>:<port>/-/reload

在 Prometheus 的 Target 中看到它没什么问题的话

就可以在 Grafana 中添加仪表盘啦

Mikrotik Exporter 仪表盘代码:10950

Synology 群晖推荐 Dashboard: 14284

可能发生的问题

http 500 error 或者 UTF-8 invaild

在我遇到的情况,多半是 RouterOS 中的接口的 comment 有中文备注且混杂不是 UTF-8 的编码,只需要去把 RouterOS 上的中文去掉或者改成英文就 ok 了

同时要保证网络通畅