snmp:获取短接口名称而不是长 ifDescr(再次)

snmp:获取短接口名称而不是长 ifDescr(再次)

我在用着蟋蟀对我的基于 Debian 的服务器进行一些简单的监控(包括网络设备)。

接口通过名称来标识(例如eth0,,eth1...),并且 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报告短的接口名称?

答案1

似乎使用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,意味着我将接口映射的 cricket 配置更改为:

OID    ifName                 1.3.6.1.2.1.31.1.1.1.1 

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

相关内容