Monitoring

使用 SNMP 的 Cisco 交換機埠吞吐量監控?

  • August 26, 2010

我有一台 Cisco 4500,我想在其上執行網路吞吐量監控。我應該查看哪個 OID 來獲取此資訊?否則我有什麼選擇來獲取這些資訊?我應該在哪裡查看以瀏覽此交換機上可用的 MIB?

如果您的最終目標只是擁有和查看指標,那麼像 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 等

引用自:https://serverfault.com/questions/174852