Назад | Перейти на главную страницу

Мониторинг пропускной способности Cisco Switchport с помощью SNMP?

У меня есть Cisco 4500, на котором я хотел бы выполнять мониторинг пропускной способности сети. На какой OID я должен смотреть, чтобы получить эту информацию? Какие у меня есть варианты получения этой информации в противном случае? Где мне искать для просмотра MIB, доступных на этом коммутаторе?

Если ваша конечная цель - просто иметь и просматривать метрики, такой инструмент, как cacti, munin, mrtg, может помочь вам с меньшими деталями, чем требуется в вашем вопросе.

Тем не менее, Cisco поддерживает стандартные MIB для интерфейсов.

Каждому интерфейсу будет присвоен индекс. Вся информация об интерфейсах будет храниться в таблицах. На каждую таблицу ссылается определенный OID, и информация для конкретного интерфейса в этой таблице будет ссылаться путем присоединения индекса интерфейса к OID таблицы.

В качестве примера, вот сценарий, который ищет ifIndex, ifDescr, ifAdminStatus и ifOperStatus для каждого интерфейса на устройстве. В этом примере показаны используемые идентификаторы и процесс поиска значений таблицы на основе их индекса. (Я вытащил этот пример из гораздо большего фрагмента кода, чтобы упростить его, поэтому, вероятно, есть некоторые незначительные ошибки):

#!/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. Вот ссылка на сайт это объясняет некоторые из его членов, включая те, которые я использовал выше, и другие, которые могут вас заинтересовать, такие как октет, пакеты, ошибки и т. д.

Вы, скорее всего, хотите IfInOctets и IfOutOctets OID для любого вашего целевого интерфейса. В Обозреватель объектов Cisco SNMP вероятно, будет очень полезен при отслеживании такого рода информации.