我有一台 Cisco 4500,我想对其进行网络吞吐量监控。我应该查看哪个 OID 来获取此信息?除了获取此信息,我还有哪些选择?我应该在哪里查看此交换机上可用的 MIB?
答案1
如果您的最终目标只是获得并查看指标,那么像 cacti、munin、mrtg 这样的工具可以为您提供比问题中要求的更少的细节。
也就是说,思科支持标准 MIB 到接口。
每个接口都会被分配一个索引。接口的所有信息都会存储在表中。每个表都由一个特定的 OID 引用,并且该表中特定接口的信息将通过将接口的索引附加到表的 OID 来引用。
例如,下面是一个脚本,用于查找设备上每个接口的 ifIndex、ifDescr、ifAdminStatus 和 ifOperStatus。此示例显示了所使用的 oid 以及根据其索引查找表值的操作。(我从一段更大的代码中抽取了这个示例以简化它,因此可能存在一些小错误):
#!/usr/bin/perl
use Net::SNMP;
my %oids = (
'ifDescr' => '1.3.6.1.2.1.2.2.1.2',
'ifType' => '1.3.6.1.2.1.2.2.1.3',
'ifAdminStatus' => '1.3.6.1.2.1.2.2.1.7',
'ifOperStatus' => '1.3.6.1.2.1.2.2.1.8',
);
my $device = shift || die "Need device to poll";
my $community = shift || 'public';
my($snmp,$snmp_error) = Net::SNMP->session(-hostname => $device,
-community => $community);
my $info;
if (!$snmp) {
printf STDERR ("Couldn't create snmp object for $d: $snmp_error\n");
} else {
$info = $snmp->get_entries(-columns => [ $oids{ifDescr}, $oids{ifAdminStatus},
$oids{ifOperStatus}, $oids{ifType} ]);
if (!$info) {
printf STDERR ("Couldn't poll $d: %s\n", $snmp->error());
}
}
foreach my $oid (grep /^$oids{ifDescr}\./, keys(%$info)) {
my($index) = $oid =~ m|\.(\d+)$|;
print join(',', $device,
$index,
$info->{"$oids{ifDescr}.$index"},
$info->{"$oids{ifType}.$index"},
$info->{"$oids{ifAdminStatus}.$index"},
$info->{"$oids{ifOperStatus}.$index"}), "\n";
}
所有有趣的东西都在1.3.6.1.2.1.2.2.1
ifEntry OID 下。下面是关联这解释了它的一些成员,包括我上面使用过的成员和其他你可能感兴趣的成员,比如 Octet、Packets、Errors 等
答案2
无论你的目标接口是什么,你很可能都需要IfInOctets
和OID。IfOutOctets
Cisco SNMP 对象浏览器在您追踪此类信息时可能会非常有用。