使用 SNMP 监控 Cisco 交换机端口吞吐量?

使用 SNMP 监控 Cisco 交换机端口吞吐量?

我有一台 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.1ifEntry OID 下。下面是关联这解释了它的一些成员,包括我上面使用过的成员和其他你可能感兴趣的成员,比如 Octet、Packets、Errors 等

答案2

无论你的目标接口是什么,你很可能都需要IfInOctets和OID。IfOutOctetsCisco SNMP 对象浏览器在您追踪此类信息时可能会非常有用。

相关内容