使用Prometheus监控snmp
获取snmp信息
首先获取需要监控的snmp的基本信息,假设基本信息如下:
snmp服务IP: 1.1.1.1
snmp community: public
snmp exportor部署地址: 2.2.2.2
配置snmp exporter
从官方下载snmp exporter的可执行文件。
此外还需要自己编译生成snmp exporter的配置文件,首先需要配置generator.yml文件,然后按照Building和Running中的步骤编译生成snmp.yml。generator.yml文件的配置可以参考File Format。generator.yml文件中只需要注入snmp的community即可,下面仅修改了modules.if_mib.auth字段,其余与File Format中一致。
modules:
# Default IF-MIB interfaces table with ifIndex.
if_mib:
walk: [sysUpTime, interfaces, ifXTable]
version: 2
auth:
community: public
lookups:
- source_indexes: [ifIndex]
lookup: ifAlias
- source_indexes: [ifIndex]
lookup: ifDescr
- source_indexes: [ifIndex]
# Use OID to avoid conflict with Netscaler NS-ROOT-MIB.
lookup: 1.3.6.1.2.1.31.1.1.1.1 # ifName
...
生成新的snmp.yml之后替换原有的snmp.yml即可。
配置Prometheus
Prometheus的最小配置如下,增加一个snmp的job即可,params.module中可以配置需要抓取的模块,不配置表示全部抓取。
global:
scrape_interval: 1m
scrape_timeout: 60s
evaluation_interval: 20s
scrape_configs:
- job_name: 'snmp'
static_configs:
- targets:
- 1.1.1.1
metrics_path: /snmp
# params:
# module: [if_mib]
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 2.2.2.2:9116
启动snmp exporter和Prometheus即可
grafana配置
snmp给出了snmp服务所在的节点(一般为交换机)的接口信息,如接口状态,名称,In/Out报文数目,丢弃报文数和错误报文数等。下面给出简单的配置:
计算接收的报文总数
sum(ifInBroadcastPkts+ifInMulticastPkts+ifInUcastPkts)by(ifDescr)
计算2分钟内接收到的报文总数的平均数
sum(rate(ifInBroadcastPkts[2m])+rate(ifInMulticastPkts[2m])+rate(ifInUcastPkts[2m]))by(ifDescr)
计算发送的报文总数
sum(ifOutBroadcastPkts+ifOutMulticastPkts+ifOutUcastPkts)by(ifDescr)
计算2分钟内发送的报文总数的平均数
sum(rate(ifOutBroadcastPkts[2m])+rate(ifOutMulticastPkts[2m])+rate(ifOutUcastPkts[2m]))by(ifDescr)
计算未上送的报文总数
sum(ifInDiscards+ifInErrors+ifInUnknownProtos)by(ifDescr)
计算2分钟内未上送的报文总数的平均数
sum(rate(ifInDiscards[2m])+rate(ifInErrors[2m])+rate(ifInUnknownProtos[2m]))by(ifDescr)
计算丢弃的报文总数
sum(ifOutDiscards+ifOutErrors)by(ifDescr)
计算2分钟内丢弃的报文总数的平均数
sum(rate(ifOutDiscards[2m])+rate(ifOutErrors[2m]))by(ifDescr)