文章目录
前言
SNMP监控原理是通过SNMP协议查询网络设备上的MIB(管理信息库),设备运行SNMP代理,Prometheus通过SNMP Exporter轮询这些设备,SNMP Exporter会翻译SNMP协议的数据为Prometheus的时间序列格式,供Prometheus采集和存储。
下列就以群晖 NAS、QNAS、华为防火墙设备为例子,开启 SNMP 服务并部署 Exporter 进行监控,其中包括 MIB 文档解读、Exporter 镜像制作 + 部署、数据抓取测试等。
一、群晖 NAS
1、开启 SNMP 服务
浏览器登录 群晖管理后台,点击 “控制面板” → “终端机和 SNMP” → “SNMP” → 勾选“启用 SNMP 服务” + 勾选 “SNMPv1、SNMPv2c 服务” )+ 填写 “社群” 信息(可理解为密码)→ 点击“应用”生效
2、测试
在另一台设备(Linux)可访问该群晖 NAS (UDP:161端口),使用 snmpwalk 命令测试,若没有这通过命令安装:
Centos/Redhat:
sudo yum update
sudo yum install net-snmp-utils
Ubuntu/Debian:
sudo apt update
sudo apt install snmp
测试命令:
snmpwalk -v 2c -c 社群密码 群晖IP
若返回一大串 iso. 开头的信息,则表示正常,否则请检查网络、社群密码、群晖IP
3、MIB 文档
在群晖管理后台 的 SNMP 配置页面,点击最下方访问 Synology 网站 访问Synology MIB 文档
或 Google 搜索 群晖 SNMP MIB 文档
文档访问链接如下:
群晖 SNMP MIB Guide 文档
查阅文档,找到自己所监控信息的每一项值所对应的 OID 和 返回值。
比如说,我要监控这台 NAS 的硬盘,在文档的p8-9页 OID: .1.3.6.1.4.1.6574.2 中有说明:
.13为硬盘健康状态,.1为硬盘索引号,.9为硬盘坏道数
PS:
感觉文档有点坑,光看文档会误以为 OID .1.3.6.1.4.1.6574.2 直接加上 .13(后缀)就能获取状态值,其实不是的,使用 snmpwalk 命令查询 .1.3.6.1.4.1.6574.2.13
snmpwalk -v 2c -c 社群密码 群晖IP 1.3.6.1.4.1.6574.2.13
返回报错:
iso.3.6.1.4.1.6574.2.13 = No Such Object available on this agent at this OID
通过查阅 .1.3.6.1.4.1.6574.2 的返回值,才知道其实它是 .1.3.6.1.4.1.6574.2.1.1.13,命令:
snmpwalk -v 2c -c 社群密码 群晖IP 1.3.6.1.4.1.6574.2
4、编写 snmp.yml
知道自己抓取的 OID 后,就可编写 snmp.yml 了(snmp-exporter 用于过滤 snmp 信息),内容如下:
syno_mib:
version: 2
walk:
- 1.3.6.1.4.1.6574.2.1.1
metrics:
- name: disk_health
oid: 1.3.6.1.4.1.6574.2.1.1.13
type: gauge
help: "Disk health status"
indexes:
- labelname: ifIndex
type: gauge
lookups:
- labels:
- ifIndex
labelname: disk_name
oid: 1.3.6.1.4.1.6574.2.1.1.1
type: DisplayString
- name: disk_smart
oid: 1.3.6.1.4.1.6574.2.1.1.9
type: gaug