我正在使用板球来做一些简单的监测(包括networking设备)我的基于Debian的服务器。
接口由名称(例如eth0
, eth1
,…)标识,并且cricket通过在IF-MIB::ifDescr
查找它们将这些名称映射到正确的OID:
$ 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
的情况下,这意味着我将界面映射的板球configuration更改为:
OID ifName 1.3.6.1.2.1.31.1.1.1.1 map interface-name base-oid = ifName match = %interface-name%