1

Я использую SNMP (из порта net-mgmt/net-snmp, v5.7.2, скомпилированного с "MFD_REWRITES") в системе FreeBSD9.1-RELEASE. По какой-то причине в ifXTable MIB (1.3.6.1.2.1.31.1.1.1) отсутствуют счетчики HC (как, например, ifHCInOctets (1.3.6.1.2.1.31.1.1.1.6)).

get (noSuchName) There is no such variable name in this MIB.
snmpget localhost <hostname> 1.3.6.1.2.1.31.1.1.1.6.5
snmpget localhost <hostname> ifHCInOctets.5
snmp error index = 1

И при перечислении 1.3.6.1.2.1.31.1.1.1 я получаю

usbus0 ifName.1
...
vr0 ifName.5
...
re0 ifName.8
...
re0.10 ifName.12
...
tun0 ifName.17
...
79144352 ifInMulticastPkts.5
...
120009 ifInMulticastPkts.8
...
43670 ifInMulticastPkts.12
...
0 ifInBroadcastPkts.5
...
0 ifOutMulticastPkts.5
...
0 ifOutBroadcastPkts.5
...
100 ifHighSpeed.5
...
1000 ifHighSpeed.8
...
false ifPromiscuousMode.5
...
true ifConnectorPresent.5
...
 ifAlias.5
...
0:00:00 ifCounterDiscontinuityTime.5
...

Мне кажется, что "много" было там. Но не ifHC[In|Out]Octets ...

Как видите, мои интерфейсы используют "vr" (через Рейн) и "re" (Realtek). У кого-нибудь есть подсказка?

1 ответ1

3

Я обнаружил, что проблема, похоже, заключается в моих запросах: по какой-то (неизвестной) причине используемый мной perl-модуль SNMP::Util безоговорочно отправляет запросы SNMP с использованием протокола версии 1. И SNMP v1 не может обрабатывать 64-битные счетчики.

Поэтому вместо этого я попытался использовать Net::SNMP::Util что позволит вам указать версию протокола SNMP для использования. И вуаля, это работает.

Использование snmpwalk из оболочки также показывает это:

$ snmpwalk -Os -c <community> -v 1 localhost 1.3.6.1.2.1.31.1.1.1 | grep 'ifHC.*Octets' |wc -l
   0
$ snmpwalk -Os -c <community> -v 2c localhost 1.3.6.1.2.1.31.1.1.1 | grep 'ifHC.*Octets' |wc -l
  34
$ snmpwalk -Os -c <community> localhost 1.3.6.1.2.1.31.1.1.1 | grep 'ifHC.*Octets' |wc -l
  34

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .