首先获取须要监控的snmp的基本信息,假设基本信息以下:mysql
snmp服务IP: 1.1.1.1 snmp community: public snmp exportor部署地址: 2.2.2.2
从官方下载snmp exporter的可执行文件。git
此外还须要本身编译生成snmp exporter的配置文件,首先须要配置generator.yml文件,而后按照Building和Running中的步骤编译生成snmp.yml。generator.yml文件的配置能够参考File Format。generator.yml文件中只须要注入snmp的community便可,下面仅修改了modules.if_mib.auth字段,其他与File Format中一致。github
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便可。sql
Prometheus的最小配置以下,增长一个snmp的job便可,params.module中能够配置须要抓取的模块,不配置表示所有抓取。shell
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便可curl
snmp给出了snmp服务所在的节点(通常为交换机)的接口信息,如接口状态,名称,In/Out报文数目,丢弃报文数和错误报文数等。下面给出简单的配置:ui
计算接收的报文总数lua
sum(ifHCInBroadcastPkts+ifHCInMulticastPkts+ifHCInUcastPkts)by(ifDescr)
计算2分钟内接收到的报文总数的平均数url
sum(rate(ifHCInBroadcastPkts[2m])+rate(ifHCInMulticastPkts[2m])+rate(ifHCInUcastPkts[2m]))by(ifDescr)
计算发送的报文总数debug
sum(ifHCOutBroadcastPkts+ifHCOutMulticastPkts+ifHCOutUcastPkts)by(ifDescr)
计算2分钟内发送的报文总数的平均数
sum(rate(ifHCOutBroadcastPkts[2m])+rate(ifHCOutMulticastPkts[2m])+rate(ifHCOutUcastPkts[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)
计算GigabitEthernet0/27接口上2分钟内的入流量变化,单位Mbps
(rate(ifHCInOctets{ifDescr="GigabitEthernet0/27"}[2m])*8)/(1024*1024)
计算GigabitEthernet0/27接口上2分钟内的出流量变化,单位Mbps
(rate(ifHCOutOctets{ifDescr="GigabitEthernet0/27"}[2m])*8)/(1024*1024)
下图给出了2分钟内的入流量的变化曲线
snmp exporter中有一些相似的监控指标如ifHCInBroadcastPkts和ifInBroadcastPkts,使用Prometheus监控时推荐使用带HC的,如ifHCInBroadcastPkts,ifHCInMulticastPkts,由于带HC的比不带HC的能表示更大长度的数据。具体缘由参见这里
能够在2.2.2.2机器上使用以下命令查看snmp_exporter是否部署正确
curl http://127.0.0.1:9116/snmp?target=1.1.1.1