我在用着蟋蟀对我的基于 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%