使用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文件,然后按照BuildingRunning中的步驟編譯生成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(ifHCInBroadcastPkts+ifHCInMulticastPkts+ifHCInUcastPkts)by(ifDescr)

計算2分鍾內接收到的報文總數的平均數

sum(rate(ifHCInBroadcastPkts[2m])+rate(ifHCInMulticastPkts[2m])+rate(ifHCInUcastPkts[2m]))by(ifDescr)

計算發送的報文總數

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分鍾內的入流量的變化曲線

TIPS

snmp exporter中有一些類似的監控指標如ifHCInBroadcastPkts和ifInBroadcastPkts,使用Prometheus監控時推薦使用帶HC的,如ifHCInBroadcastPkts,ifHCInMulticastPkts,因為帶HC的比不帶HC的能表示更大長度的數據。具體原因參見這里

Debug

可以在2.2.2.2機器上使用如下命令查看snmp_exporter是否部署正確

curl http://127.0.0.1:9116/snmp?target=1.1.1.1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM