Prometheus-SNMP Exporter
生成器从generator.yml读取并写入snmp.yml。
之前在说Prometheus-snmp_export部署时,没有具体提到snmp.yml的生成器是怎么生成的.几乎用的都是github上的snmp.yml文件(只在demo中添加了auth配置).
因为刚好所有通用的指标都取得通用的mib树. 在后期我搜集设备的信息需要一些私有mib的数据,这时候需要自己通过生成器来生成snmp.yml.
Generator 的操作步骤
下载需要的程序(Docker方式跳过此步骤)
1 | # Debian-based distributions. |
这里直接make mibs 可能会失败,在make文件里设置的源有些已经不能访问了或执行出现错误.
我建议先下载好mibs ,我已经上传github.
建议自行搜集mib 不执行make mibs会方便一些
把所有的mib放入mibs 目录下.
需要准备好所有需要涉及到的mib文件. 除了公有的mib,我们还需要监控目标设备的私有mib.思科/华为之类的会提供这些mib,像锐捷这种需要和商务部联系.
一些mib:
https://github.com/netdisco/netdisco-mibs
https://github.com/pgmillon/observium/tree/master/mibs
https://github.com/librenms/librenms/tree/master/mibs
当我们准备好所有的mib后,需要编写一个generator.yml.
下面是一个翻译的官方文档(翻译比较烂,自行查阅原文)):
1 | modules: |
下面提供一个自己编写的generator.yml
1 | modules: |
解释一下此配置的目的:
模块名称 ruijie_mib 通过名字可以知道是作用锐捷设备
walk 中, 是需要获取的指标. 其中前四个是共有mib获取到的,后面是私有mib获取到的.
timeout 超时定义12秒
version snmp协议是v2
auth 定义的团体名
looksups 通过索引查找列表
overrides 前三个指标删除,后面几项是定义了他们的数据类型.
万事具备,只差执行.
准备工作完成之后,就可以执行程序了.
bin执行
1 | export MIBDIRS=mibs |
执行后,可以看到snmp.yml.
Docker方式
通过dicker方式时,除上面需要的 mibs 文件夹和 generate.yml 再生成一个容器就好了。
pull镜像
docker pull prom/snmp-exporter:latest
(查看具体版本)[https://hub.docker.com/r/prom/snmp-exporter/tags]
镜像通过挂在宿主机文件后,通过generate.yml生成snmp.yml
目录结构:
1 | ./generate.yml |
执行生成snmp.yml
docker run -ti -v "${PWD}:/opt/" prom/snmp-generator generate
此容器挂载了一个目录,此目录下包含之前准备的 mibs 文件夹和 generate.yml。
执行完毕会在目录中生成 snmp.yml 文件。
出现错误排查:
generate 命令改成 parse_errors
通常这样使用:
docker run -ti -v "${PWD}:/opt/" snmp-generator parse_errors | head