使用 Prometheus + Grafana 替换 Cacti
前言
Cacti 应该是目前我唯一没有扔掉的 php 服务了,一直觉得 php 慢的同时还有很多洞,之前已经换掉了 php 搞的可道云,那会儿天天被他的“重要安全更新”搞的很麻,于是可是去 php ,前段时间搭了 Zabbix (还是 php),LTT 在用的 Checkmk (用不习惯),最后还是选了 Prometheus + Grafana ,一是 Go 写的洞少资源占用少,二是可以和我目前已经用的其他监控整合到一起
搭建
Prometheus 和 Grafana 的搭建非常简单,网上很多教程,这里不再赘述,go 的项目部署都很容易,重点说一下 SNMP 的配置
SNMP 的 Exporter 也是一个 Go 的项目,直接下载二进制文件部署:Releases · prometheus/snmp_exporter (github.com)
SNMP Exporter 这个东西比较麻烦的地方在于生成他的配置
首先需要准备 Golang 环境,写这篇文章的时候,我使用 1.22.0 ,如果不知道使用哪个版本,可以去看项目里面的这个文件:https://github.com/prometheus/snmp_exporter/blob/main/go.mod,在 Linux 平台,我个人比较喜欢用 voidint/g: Golang Version Manager (github.com) 这个项目来装 Golang ,可以非常方便的在各个版本之间切换,取决于你使用的是 debian 系还是 rhel 系,还需要安装以下包
# Debian-based distributions. |
找一个地方去 clone 项目和他提供的 MIB 文件,SNMP Exporter 里面提供的 MIB 非常少,推荐使用下面这里的
# SNMP Exporter 项目和他自带的 MIB |
其他需要准备的:把设备 IP 对应关系记下,SNMP 推荐设置统一的只读团体,密码要有一定复杂度
generator.yml 修改开头的以下内容( auth 部分)
auths: |
然后使用以下命令构建配置
./generator generate -m mibs -m /root/librenms/mibs -g generator.yml -o snmp.yml |
把构建出来的 snmp.yml 放到 snmp_export 同级目录,即可使用
prometheus.yml 添加以下配置
- job_name: "snmp" |
Grafana 添加模板
推荐以下两个面板
SNMP Interface Throughput | Grafana Labs