Страница 1 из 1
net-snmp + counter64
Добавлено: 2008-11-05 18:17:32
sibdoma
Хотелось бы научить net-snmp отдавать загрузку интерфейсов через 64-битные счетчики, т.к. двно ушел за 128 Мбит...
Но вот проблема в том, что snmpwalk .... | grep Counter64 не показывет соответствующей ветки, хотя в стандартных мибах она есть.
Подскажите как это исправить?
Re: net-snmp + counter64
Добавлено: 2008-11-05 18:49:23
Yam
Обновиться?
Код: Выделить всё
%snmpwalk -v 2c -c community 192.168.1.1 | grep Counter64 | less
IF-MIB::ifHCInOctets.1 = Counter64: 6079328443
IF-MIB::ifHCInOctets.100 = Counter64: 7890
IF-MIB::ifHCInOctets.106 = Counter64: 13669084
IF-MIB::ifHCInOctets.107 = Counter64: 17745479
IF-MIB::ifHCInOctets.115 = Counter64: 337254268
Может быть их не snmpwalk у вас не показывает, а их просто нет? Для уверенности можете пройтись каким-нибудь другим инструментом, можно даже из более других ОС.
Re: net-snmp + counter64
Добавлено: 2008-11-05 19:18:48
sibdoma
Вот, что у меня
Код: Выделить всё
snmpwalk -v2c -c community 192.168.1.1 | grep Counter64 | less
HOST-RESOURCES-MIB::hrSWRunParameters.51687 = STRING: "Counter64"
А как их туда добавить?
Re: net-snmp + counter64
Добавлено: 2008-11-05 19:35:35
hizel
а вы уверены, что ваше оборудование поддерживает ifXTable ?
Re: net-snmp + counter64
Добавлено: 2008-11-05 21:48:29
sibdoma
Стоят интеловские гигабиты, при этом под linux'ом отдает эти параметры по дефолту
Код: Выделить всё
pciconf -lv
em0@pci0:13:0:0: class=0x020000 card=0x108c15d9 chip=0x108c8086 rev=0x03 hdr=0x00
vendor = 'Intel Corporation'
device = '82573E Intel Corporation 82573E Gigabit Ethernet Controller (Copper)'
class = network
subclass = ethernet
em1@pci0:15:0:0: class=0x020000 card=0x109a15d9 chip=0x109a8086 rev=0x00 hdr=0x00
vendor = 'Intel Corporation'
device = '82573L Intel PRO/1000 PL Network Adaptor'
class = network
subclass = ethernet
Re: net-snmp + counter64
Добавлено: 2008-11-06 0:23:29
Yam
Если бы hizel, про IfXTable не заговорил, так бы и не вспомнил. Дело в том, что в freebsd поддержка counter64 для интерфейсов появилась только с версией net-snmp 5.4 и по-умолчанию выключена. Пересоберите порт так:
Re: net-snmp + counter64
Добавлено: 2008-11-06 2:07:45
sibdoma
Спасибо. Прямо на крыльях полетел пересобирать, НО аналогично
Нашел данную информацию в источнике
Код: Выделить всё
- Experimental support for 64bit interface counters (ifXTable). Enable
via '--with-mib-modules=if-mib --enable-mfd-rewrites'.
Пересобрал и так, даже при конфигурации пакета видно, что включает ifXTable, но пока тщетно...
Re: net-snmp + counter64
Добавлено: 2008-11-06 10:25:26
sibdoma
На всякий случай опишу последовательность действий
Код: Выделить всё
cd /usr/ports/net-mgtm/net-snmp
make extract
cd work/net-snmp-5.4.1.2/
./configure --enable-mfd-rewrites
cd ../..
make install clean
Re: net-snmp + counter64
Добавлено: 2008-11-06 11:14:50
Yam
Читайте внимательно, написал же, как правильно порт собрать, зачем из исходников сами собирать стали??
Код: Выделить всё
# cd /usr/ports/net-mgmt/net-snmp
# make WITH_MFD_REWRITES=yes install clean
# rehash
# snmpconf -g basic_setup
# echo snmpd_enable=\"YES\" >> /etc/rc.conf
# echo snmpd_conffile=\"/usr/local/etc/snmpd.conf\" >> /etc/rc.conf
# /usr/local/etc/rc.d/snmpd start
# snmpwalk -v 2c -c public 127.0.0.1 | grep Counter64 | head
HOST-RESOURCES-MIB::hrSWRunParameters.48988 = STRING: "Counter64"
IF-MIB::ifHCInOctets.1 = Counter64: 0
IF-MIB::ifHCInOctets.2 = Counter64: 2964709627
IF-MIB::ifHCInOctets.3 = Counter64: 0
IF-MIB::ifHCInOctets.4 = Counter64: 137152345
IF-MIB::ifHCInOctets.5 = Counter64: 211284803
IF-MIB::ifHCInOctets.6 = Counter64: 17468966
IF-MIB::ifHCInUcastPkts.1 = Counter64: 0
IF-MIB::ifHCInUcastPkts.2 = Counter64: 12456584
IF-MIB::ifHCInUcastPkts.3 = Counter64: 0
# uname -a
#7.0-RELEASE-p4
# snmpwalk -V
NET-SNMP version: 5.4.1.2
ЗЫ и всё равно из исходников собрали не правильно, нужно было так:
Код: Выделить всё
./configure --enable-mfd-rewrites --with-mib-modules=if-mib
Re: net-snmp + counter64
Добавлено: 2008-11-06 11:47:41
sibdoma
Сделал все 1 в 1
Код: Выделить всё
snmpwalk -V
NET-SNMP version: 5.4.1.2
uname -a
FreeBSD 7.1-PRERELEASE
snmpwalk -v 2c -c public 127.0.0.1 | grep Counter64
HOST-RESOURCES-MIB::hrSWRunParameters.41918 = STRING: "Counter64"
Re: net-snmp + counter64
Добавлено: 2008-11-06 13:07:38
Yam
Ну тогда у меня варианты исчерпаны. Если собрать так и не получится и сильно нужно, возьмите собранный с поддержкой Counter64 пакет:
http://slil.ru/26307281
Re: net-snmp + counter64
Добавлено: 2008-11-06 23:45:02
sibdoma
Нашел такую переписку по данному вопросу. Желающие могут прочитать полностью здесь
http://lists.freebsd.org/pipermail/free ... 19748.html
Код: Выделить всё
> I've just found that ports/net-snmp (version 5.4) built
> WITH_MFD_REWRITES=yes supports IF-MIB, and in theory should show 64-bit
> ifHC* counters but it does not.
>
> It seems agent/mibgroup/if-mib/data_access/interface_sysctl.c that obtains
> interface statistics from the kernel.
> The function netsnmp_arch_interface_container_load() has the following code:
>
> /* get counters */
> entry->stats.ibytes.low = ifp->ifm_data.ifi_ibytes;
> entry->stats.ibytes.high = 0;
> entry->stats.iucast.low = ifp->ifm_data.ifi_ipackets;
> entry->stats.iucast.high = 0;
> entry->stats.imcast.low = ifp->ifm_data.ifi_imcasts;
> entry->stats.imcast.high = 0;
>
> So, it always produce 32-bit quantities. My question is:
> does FreeBSD/i386 kernel maintain 64-bit counters for interface statictics
> these days? If yes, since what version?
It does not, because not all architectures have atomic 64-bit increments
and adds. Implementing 64-bit counters on these architectures would
require some kind of locking. This was discussed in the past.
You might look at the IF-MIB implementation of bsnmp (it is in the base
system). It uses periodic polling to detect wraps of the 32-bit
counters. The poll interval is tuned to the fastest interface in the
system (given that all interfaces reported the correct speed).
Note, that the netsnmp implementation is plain wrong - if the daemon
does not support the HC counters it should never pretend to do. This is
explicitely stated somewhere in the RFCs.
The problem is not the CPU horsepower. The problem is that you update
these counters on each incoming packet. No problem for desktops, but if
you want to route several 100kps this may hurt. I have no idea, how IPFW
does it. Perhaps it just declares the variables as 64-bit and if the
value is wrong because of a race condition, then it is just wrong. With
SNMP I would not like to have wrong counters - people use these counters
for accounting purposes.
Re: net-snmp + counter64
Добавлено: 2008-11-06 23:46:31
sibdoma
Yam писал(а):Ну тогда у меня варианты исчерпаны. Если собрать так и не получится и сильно нужно, возьмите собранный с поддержкой Counter64 пакет:
http://slil.ru/26307281
Спасибо. Но не помогло.
А какой сетевой контроллер ты используешь?
Re: net-snmp + counter64
Добавлено: 2008-11-07 10:17:59
hizel
хм попробовал у себя
Код: Выделить всё
user@host /usr/local/etc/snmp >uname -a
FreeBSD serv4 6.2-RELEASE FreeBSD 6.2-RELEASE #1: Wed Nov 28 10:43:52 MSK 2007 user@host:/usr/obj/usr/src/sys/DIMI i386
Код: Выделить всё
user@host /usr/local/etc/snmp >pkg_info | grep net-snmp
net-snmp-5.4.1.2_2 An extendable SNMP implementation
/etc/make.conf
Код: Выделить всё
.if ${.CURDIR} == ${PORTSDIR}/net-mgmt/net-snmp
WITH_MFD_REWRITES="YES"
.endif
/usr/local/etc/snmp/snmpd.conf
/etc/rc.conf
Код: Выделить всё
snmpd_enable="YES"
snmpd_conffile="/usr/local/etc/snmp/snmpd.conf"
Код: Выделить всё
user@host /usr/local/etc/snmp >snmpwalk -c public -v2c 127.0.0.1 ifXTable
IF-MIB::ifName.1 = STRING: em0
IF-MIB::ifName.2 = STRING: em1
IF-MIB::ifName.3 = STRING: lo0
IF-MIB::ifInMulticastPkts.1 = Counter32: 2413708
IF-MIB::ifInMulticastPkts.2 = Counter32: 78999635
IF-MIB::ifInMulticastPkts.3 = Counter32: 0
IF-MIB::ifInBroadcastPkts.1 = Counter32: 0
IF-MIB::ifInBroadcastPkts.2 = Counter32: 0
IF-MIB::ifInBroadcastPkts.3 = Counter32: 0
IF-MIB::ifOutMulticastPkts.1 = Counter32: 0
IF-MIB::ifOutMulticastPkts.2 = Counter32: 0
IF-MIB::ifOutMulticastPkts.3 = Counter32: 0
IF-MIB::ifOutBroadcastPkts.1 = Counter32: 0
IF-MIB::ifOutBroadcastPkts.2 = Counter32: 0
IF-MIB::ifOutBroadcastPkts.3 = Counter32: 0
IF-MIB::ifHCInOctets.1 = Counter64: 2429162666
IF-MIB::ifHCInOctets.2 = Counter64: 516047978
IF-MIB::ifHCInOctets.3 = Counter64: 149866402
IF-MIB::ifHCInUcastPkts.1 = Counter64: 55229584
IF-MIB::ifHCInUcastPkts.2 = Counter64: 78999635
IF-MIB::ifHCInUcastPkts.3 = Counter64: 1314988
IF-MIB::ifHCInMulticastPkts.1 = Counter64: 2413708
IF-MIB::ifHCInMulticastPkts.2 = Counter64: 78999635
IF-MIB::ifHCInMulticastPkts.3 = Counter64: 0
IF-MIB::ifHCInBroadcastPkts.1 = Counter64: 0
IF-MIB::ifHCInBroadcastPkts.2 = Counter64: 0
IF-MIB::ifHCInBroadcastPkts.3 = Counter64: 0
IF-MIB::ifHCOutOctets.1 = Counter64: 471056170
IF-MIB::ifHCOutOctets.2 = Counter64: 0
IF-MIB::ifHCOutOctets.3 = Counter64: 149866402
IF-MIB::ifHCOutUcastPkts.1 = Counter64: 49710977
IF-MIB::ifHCOutUcastPkts.2 = Counter64: 0
IF-MIB::ifHCOutUcastPkts.3 = Counter64: 1314988
IF-MIB::ifHCOutMulticastPkts.1 = Counter64: 0
IF-MIB::ifHCOutMulticastPkts.2 = Counter64: 0
IF-MIB::ifHCOutMulticastPkts.3 = Counter64: 0
IF-MIB::ifHCOutBroadcastPkts.1 = Counter64: 0
IF-MIB::ifHCOutBroadcastPkts.2 = Counter64: 0
IF-MIB::ifHCOutBroadcastPkts.3 = Counter64: 0
IF-MIB::ifHighSpeed.1 = Gauge32: 1000
IF-MIB::ifHighSpeed.2 = Gauge32: 1000
IF-MIB::ifHighSpeed.3 = Gauge32: 0
IF-MIB::ifPromiscuousMode.1 = INTEGER: true(1)
IF-MIB::ifPromiscuousMode.2 = INTEGER: false(2)
IF-MIB::ifPromiscuousMode.3 = INTEGER: false(2)
IF-MIB::ifConnectorPresent.1 = INTEGER: true(1)
IF-MIB::ifConnectorPresent.2 = INTEGER: true(1)
IF-MIB::ifConnectorPresent.3 = INTEGER: true(1)
IF-MIB::ifAlias.1 = STRING:
IF-MIB::ifAlias.2 = STRING:
IF-MIB::ifAlias.3 = STRING:
IF-MIB::ifCounterDiscontinuityTime.1 = Timeticks: (0) 0:00:00.00
IF-MIB::ifCounterDiscontinuityTime.2 = Timeticks: (0) 0:00:00.00
IF-MIB::ifCounterDiscontinuityTime.3 = Timeticks: (0) 0:00:00.00
сетевушка как видно, интеловская - гигабитная, две

Re: net-snmp + counter64
Добавлено: 2008-11-07 10:32:27
sibdoma
Теперь я вообще запутался. В той переписке я вижу такую же проблему как и у себя и при этом говорят, что поддержки счетчиков НЕТ, но у всех кроме меня они ЕСТЬ.
А можно посмотреть на кусок кода у вас, который указан в переписке?
Re: net-snmp + counter64
Добавлено: 2008-11-07 10:36:53
Yam
Мне кажется вы путаете тёплое с мягким. К вашей проблеме это отношения имеет косвенное. Речь в переписке идет о том, что для заполнения 64-разрядных счетчиков SNMP используются 32-разрядные счетчики ядра. Т.е. не смотря на то, что значение мы считывали бы с IF-MIB::ifHCInOctets.1 = Counter64, получали бы всё равно величину ограниченную 32-разрядами, которая переходила бы в ноль, по достижении 4294967295, вместо того что бы рости дальше. Т.е. по видимому, вне зависимости от того, работали бы они у вас или нет, смысл в их использовании отпадает. Но это не объясняет причину по которой у вас их нет.
sibdoma писал(а):А какой сетевой контроллер ты используешь?
Какие конкретно прямо сейчас посмотреть не могу, да и к железу этот вопрос отношения скорей всего не имеет, на машине откуда приведены счетчики два интерфейса fxp (100mbit) и msk (1000Mbit) и несколько vlan.
Re: net-snmp + counter64
Добавлено: 2008-11-07 10:59:44
sibdoma
Исправляю сообщение...
УРАААА собрал в очередной раз - счетчики появились. Пока выясняю, что я делал в прошлый раз по другому
Re: net-snmp + counter64
Добавлено: 2008-11-07 11:41:50
sibdoma
Завелось и на исходной тачке. Может ли быть проблема в параметрах запуска snmp? Запускал не через /usr/local/etc/rc.d/snmpd start, а просто демон snmpd. Разница только в этом...
Подвожу резюме
Все огромное СПАСИБО за помощь. Я уже уже планировал плюнуть и снимать только со свитча. Ключевой момент именно в
.
Re: net-snmp + counter64
Добавлено: 2008-11-07 12:23:14
hizel
я бы рекомендовал засунуть в make.conf соответствующие строчки
чтобы при обновление не сломалось

Re: net-snmp + counter64
Добавлено: 2008-11-07 15:58:13
Alex Keda
[offtop]
вернул бы ты аватрку....
на эту без слёз не взглянешь...
[/offtop]
Re: net-snmp + counter64
Добавлено: 2008-11-07 16:12:59
hizel
Код: Выделить всё
user@host ~ >snmpget -c public -v2c 127.0.0.1 ifHCOutOctets.3
IF-MIB::ifHCOutOctets.3 = Counter64: 12110274775
и не
переполняются счётчики
