Snmp
Collectd SNMP 外掛無法找到 MIB
使用 Collectd 通過 snmp 外掛輪詢 Cisco 設備。我將所需的 Cisco mib(CISCO-MEMORY-POOL-MIB 和 CISCO-PROCESS-MIB)載入到 net-snmp 中,並且 snmpwalk 可以很好地看到它們。
但是當我嘗試將它們添加到 collectd 時,我在重新啟動 collectd 服務時收到以下錯誤:
Cannot find module (CISCO-MEMORY-POOL-MIB): At line 0 in (none) Cannot find module (CISCO-PROCESS-MIB): At line 0 in (none)
日誌文件顯示:
[2016-11-09 14:13:56] Exiting normally. [2016-11-09 14:13:56] collectd: Stopping 5 read threads. [2016-11-09 14:13:56] snmp plugin: read_objid (CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolName) failed. [2016-11-09 14:13:56] snmp plugin: read_objid (CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolName) failed. [2016-11-09 14:13:56] snmp plugin: snmp_parse_oid (CISCO-PROCESS-MIB::cpmCPUTotal5secRev) failed. [2016-11-09 14:13:56] snmp plugin: No such data configured: `memory_free' [2016-11-09 14:13:56] snmp plugin: No such data configured: `memory_used' [2016-11-09 14:13:56] snmp plugin: No such data configured: `cisco_cpu' [2016-11-09 14:13:56] snmp plugin: No such data configured: `memory_free' [2016-11-09 14:13:56] snmp plugin: No such data configured: `memory_used' [2016-11-09 14:13:56] snmp plugin: No such data configured: `cisco_cpu' [2016-11-09 14:13:56] snmp plugin: No such data configured: `memory_free' [2016-11-09 14:13:56] snmp plugin: No such data configured: `memory_used' [2016-11-09 14:13:56] snmp plugin: No such data configured: `cisco_cpu' [2016-11-09 14:13:56] Initialization complete, entering read-loop.
這是我的 collectd.conf 的 snmp 部分
<Plugin snmp> <Data "SysInfo"> Type "counter" Table false Instance "sysName" Values "SNMPv2-MIB::sysName" </Data> <Data "uptime"> Type "uptime" Table false Instance "Uptime" scale 0.01 Values "DISMAN-EVENT-MIB::sysUpTimeInstance" </Data> <Data "if_octets"> Type "if_octets" Table true Instance "IF-MIB::ifAlias" Values "IF-MIB::ifHCInOctets" "IF-MIB::ifHCOutOctets" </Data> <Data "if_errors"> Type "if_errors" Table true Instance "IF-MIB::ifAlias" Values "IF-MIB::ifInErrors" "IF-MIB::ifOutErrors" </Data> <Data "memory_free"> Type "memory_free" Table true Instance "CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolName" Values "CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolFree" </Data> <Data "memory_used"> Type "memory_used" Table true Instance "CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolName" Values "CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolUsed" </Data> <Data "cisco_cpu"> Type "cisco_cpu" Table true Values "CISCO-PROCESS-MIB::cpmCPUTotal5secRev" "CISCO-PROCESS-MIB::cpmCPUTotal1minRev" "CISCO-PROCESS-MIB::cpmCPUTotal5minRev" </Data>
我在這裡想念什麼?我也嘗試過使用 OID 地址而不是名稱,但我也一無所獲。
玩弄一些設置,我取得了一些成功。
如果我將類型更改為“gauge”並將表更改為“false”,則 CISCO-MEMORY-POOL PoolFree/Used 可以工作。說得通。但 CISCO-PROCESS-MIB cpu 以百分比形式返回。還是拿不到那個。
以下是 snmpwalk 返回 OID 的方式:
[root@NMS-srv2 ~]# snmpwalk -v 2c -c rbhome spine1 CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolFree CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolFree.1 = Gauge32: 564215448 bytes [root@NMS-srv2 ~]# snmpwalk -v 2c -c rbhome spine1 CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolUsed CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolUsed.1 = Gauge32: 249119560 bytes [root@NMS-srv2 ~]# snmpwalk -v 2c -c rbhome spine1 CISCO-PROCESS-MIB::cpmCPUTotal1minRev CISCO-PROCESS-MIB::cpmCPUTotal1minRev.7 = Gauge32: 1 percent
這是現在的配置。
<Data "memory_used"> Type "gauge" Table false Instance "memory_used" Values "1.3.6.1.4.1.9.9.48.1.1.1.5.1" </Data> <Data "cisco_cpu"> Type "gauge" Table false Instance "cpu_used_min" Values "1.3.6.1.4.1.9.9.109.1.1.1.1.7.7" "1.3.6.1.4.1.9.9.109.1.1.1.1.8.7" </Data>
仍然無法弄清楚 MIB / OID 名稱問題。