Debian

snmp:獲取短介面名稱而不是長 ifDescr(再次)

  • August 14, 2015

我正在使用cricket對基於 Debian 的伺服器進行一些簡單的監控(包括網路設備)。

介面由名稱標識(例如eth0eth1…),並且 cricket 通過在以下位置查找它們將這些名稱映射到正確的 OID IF-MIB::ifDescr

$ snmpwalk -Os -c public -v 1 wheezy 1.3.6.1.2.1.2.2.1.2
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "lo"
iso.3.6.1.2.1.2.2.1.2.2 = STRING: "eth0"
iso.3.6.1.2.1.2.2.1.2.3 = STRING: "eth1"

在我今天將我的機器升級到 Debian/jessie 之前,一切都很順利。現在報告的介面名稱是對品牌的長描述:

$ snmpwalk -Os -c public -v 1 jessie 1.3.6.1.2.1.2.2.1.2
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "lo"
iso.3.6.1.2.1.2.2.1.2.2 = STRING: "Intel Corporation 82576 Gigabit Network Connection"
iso.3.6.1.2.1.2.2.1.2.3 = STRING: "Intel Corporation 82576 Gigabit Network Connection"

雖然我覺得長名字很煩人,但它變得毫無用處,因為它不再是唯一的:因為有問題的機器內置了兩個相同的網卡,我只得到了兩次相同的名字。

有沒有辦法snmpd報告介面名稱?

似乎使用IF-MIB::ifDescr介面名稱是完全錯誤的。正如 OID 的名稱所暗示的那樣,這意味著是介面的(詳細)描述,而不是(唯一的)名稱。

要使用的正確 OID 是IF-MIB::ifName

$ snmpwalk -Os -c public -v 1 wheezy 1.3.6.1.2.1.31.1.1.1.1
iso.3.6.1.2.1.31.1.1.1.1.1 = STRING: "lo"
iso.3.6.1.2.1.31.1.1.1.1.2 = STRING: "eth0"
iso.3.6.1.2.1.31.1.1.1.1.3 = STRING: "eth1"

$ snmpwalk -Os -c public -v 1 jessie 1.3.6.1.2.1.31.1.1.1.1
iso.3.6.1.2.1.31.1.1.1.1.1 = STRING: "lo"
iso.3.6.1.2.1.31.1.1.1.1.2 = STRING: "eth0"
iso.3.6.1.2.1.31.1.1.1.1.3 = STRING: "eth1"

在這種情況下cricket,我將介面映射的板球配置更改為:

OID    ifName                 1.3.6.1.2.1.31.1.1.1.1 

map interface-name
   base-oid    =   ifName
   match       =   %interface-name%

引用自:https://serverfault.com/questions/713660