用 snmp-exporter 在 Grafana 中监控 RouterOS
在有了 Grafana 之后,总得监控些什么吧,那就让我们来监控 RouterOS 吧
配置 snmp-exporter
我刚开始被指点的就是使用 snmp_exporter ,让我们看看具体怎么做来监控一些支持 SNMP 协议的设备
可以下载该仓库 releases 中的最新版对应你机器类型的包,放在工作目录中来运行,有很多方式,比如直接在 Linux 环境中运行,用 docker 运行,在 k8s 中运行,都可以
然后就是配置 Prometheus 了
1 | vi /prometheus-configmap.yaml |
在 scrape_configs 后面加上 其中
targets 后面加上你要监控的主机地址
1 | scrape_configs: |
注意这里 module 是 mikrotik,是用来监控 mikrotik 家的 ROS 的,如果需要监控别的东西,可以再加一条 job,配置 module 为其他的类型例如 synology(只要snmp.yaml 中有这个类型就可以)
完事之后更新一下 prometheus-configmap 就可以了
热加载:
1 | curl -XPOST http://<your-address>:<port>/-/reload |
加载完之后就可以在 Prometheus 的 targets 中看到 snmp 了
然后就可以在 Grafana 中配置仪表盘了
当然我得先会写 PromQL 才行
我们也可以自己生成 snmp.yml
这里安利大家使用 CloudShell 进行编译,比较方便,当然自己有环境更好啦
安装环境和依赖
1 | sudo apt update |
1 | sudo apt install unzip build-essential libsnmp-dev p7zip-full -y |
装上 gcc-g++
1 | apt install golang-go -y |
检查一下装上 go 了没有
1 | go version |
下载 snmp_exporter
1 | go get github.com/prometheus/snmp_exporter/generator |
cd 到该库的目录下
1 | cd ${GOPATH-$HOME/go}/src/github.com/prometheus/snmp_exporter/generator |
看看对不对
1 | ls -lh |
没问题就编译它
1 | go build |
然后下载各种厂商的 mibs
1 | make mibs |
导出 mibs 文件夹的目录以便于程序指向它
1 | export MIBDIRS=mibs |
可以开始生成 snmp.yml 了
1 | ./generator generate |
然后就生成出来了
然后想办法传到你要运行 snmp_exporter 的机子上,放在相同目录下替换掉原来的就 ok
可能遇到的问题
=> Prometheus 的服务容器没有连通要监控的路由器,那么在我们需要 prometheus-deploy.yaml 中加上这条:hostNetwork: true
1 | apiVersion: apps/v1 |