net-snmp + counter64

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-05 18:17:32

Хотелось бы научить net-snmp отдавать загрузку интерфейсов через 64-битные счетчики, т.к. двно ушел за 128 Мбит...
Но вот проблема в том, что snmpwalk .... | grep Counter64 не показывет соответствующей ветки, хотя в стандартных мибах она есть.
Подскажите как это исправить?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: net-snmp + counter64

Непрочитанное сообщение Yam » 2008-11-05 18:49:23

Обновиться?

Код: Выделить всё

%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 -V
NET-SNMP version: 5.4.1.2
Может быть их не snmpwalk у вас не показывает, а их просто нет? Для уверенности можете пройтись каким-нибудь другим инструментом, можно даже из более других ОС.

sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

Re: net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-05 19:18:48

Вот, что у меня

Код: Выделить всё

snmpwalk -v2c -c community  192.168.1.1   | grep Counter64 | less
HOST-RESOURCES-MIB::hrSWRunParameters.51687 = STRING: "Counter64"

Код: Выделить всё

snmpwalk -V
NET-SNMP version: 5.4.1.2
А как их туда добавить?

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: net-snmp + counter64

Непрочитанное сообщение hizel » 2008-11-05 19:35:35

а вы уверены, что ваше оборудование поддерживает ifXTable ?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

Re: net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-05 21:48:29

Стоят интеловские гигабиты, при этом под 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

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: net-snmp + counter64

Непрочитанное сообщение Yam » 2008-11-06 0:23:29

Если бы hizel, про IfXTable не заговорил, так бы и не вспомнил. Дело в том, что в freebsd поддержка counter64 для интерфейсов появилась только с версией net-snmp 5.4 и по-умолчанию выключена. Пересоберите порт так:

Код: Выделить всё

make WITH_MFD_REWRITES=yes install clean

sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

Re: net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-06 2:07:45

Спасибо. Прямо на крыльях полетел пересобирать, НО аналогично
Нашел данную информацию в источнике

Код: Выделить всё

- Experimental support for 64bit interface counters (ifXTable). Enable
        via '--with-mib-modules=if-mib --enable-mfd-rewrites'.
Пересобрал и так, даже при конфигурации пакета видно, что включает ifXTable, но пока тщетно...

sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

Re: net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-06 10:25:26

На всякий случай опишу последовательность действий

Код: Выделить всё

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

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: net-snmp + counter64

Непрочитанное сообщение Yam » 2008-11-06 11:14:50

Читайте внимательно, написал же, как правильно порт собрать, зачем из исходников сами собирать стали??

Код: Выделить всё

# 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

sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

Re: net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-06 11:47:41

Сделал все 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"

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: net-snmp + counter64

Непрочитанное сообщение Yam » 2008-11-06 13:07:38

Ну тогда у меня варианты исчерпаны. Если собрать так и не получится и сильно нужно, возьмите собранный с поддержкой Counter64 пакет: http://slil.ru/26307281

sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

Re: net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-06 23:45:02

Нашел такую переписку по данному вопросу. Желающие могут прочитать полностью здесь 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.

sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

Re: net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-06 23:46:31

Yam писал(а):Ну тогда у меня варианты исчерпаны. Если собрать так и не получится и сильно нужно, возьмите собранный с поддержкой Counter64 пакет: http://slil.ru/26307281
Спасибо. Но не помогло.
А какой сетевой контроллер ты используешь?

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: net-snmp + counter64

Непрочитанное сообщение hizel » 2008-11-07 10:17:59

хм попробовал у себя

Код: Выделить всё

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

Код: Выделить всё

rocommunity  public 127.0.0.1
/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
сетевушка как видно, интеловская - гигабитная, две :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

Re: net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-07 10:32:27

Теперь я вообще запутался. В той переписке я вижу такую же проблему как и у себя и при этом говорят, что поддержки счетчиков НЕТ, но у всех кроме меня они ЕСТЬ.
А можно посмотреть на кусок кода у вас, который указан в переписке?

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: net-snmp + counter64

Непрочитанное сообщение Yam » 2008-11-07 10:36:53

Мне кажется вы путаете тёплое с мягким. К вашей проблеме это отношения имеет косвенное. Речь в переписке идет о том, что для заполнения 64-разрядных счетчиков SNMP используются 32-разрядные счетчики ядра. Т.е. не смотря на то, что значение мы считывали бы с IF-MIB::ifHCInOctets.1 = Counter64, получали бы всё равно величину ограниченную 32-разрядами, которая переходила бы в ноль, по достижении 4294967295, вместо того что бы рости дальше. Т.е. по видимому, вне зависимости от того, работали бы они у вас или нет, смысл в их использовании отпадает. Но это не объясняет причину по которой у вас их нет.
sibdoma писал(а):А какой сетевой контроллер ты используешь?
Какие конкретно прямо сейчас посмотреть не могу, да и к железу этот вопрос отношения скорей всего не имеет, на машине откуда приведены счетчики два интерфейса fxp (100mbit) и msk (1000Mbit) и несколько vlan.

sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

Re: net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-07 10:59:44

Исправляю сообщение...
УРАААА собрал в очередной раз - счетчики появились. Пока выясняю, что я делал в прошлый раз по другому

sibdoma
рядовой
Сообщения: 20
Зарегистрирован: 2008-11-05 18:15:12

Re: net-snmp + counter64

Непрочитанное сообщение sibdoma » 2008-11-07 11:41:50

Завелось и на исходной тачке. Может ли быть проблема в параметрах запуска snmp? Запускал не через /usr/local/etc/rc.d/snmpd start, а просто демон snmpd. Разница только в этом...

Подвожу резюме
Все огромное СПАСИБО за помощь. Я уже уже планировал плюнуть и снимать только со свитча. Ключевой момент именно в

Код: Выделить всё

make WITH_MFD_REWRITES=yes install clean
.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: net-snmp + counter64

Непрочитанное сообщение hizel » 2008-11-07 12:23:14

я бы рекомендовал засунуть в make.conf соответствующие строчки
чтобы при обновление не сломалось ;)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: net-snmp + counter64

Непрочитанное сообщение Alex Keda » 2008-11-07 15:58:13

[offtop]
вернул бы ты аватрку....
на эту без слёз не взглянешь...
[/offtop]
Убей их всех! Бог потом рассортирует...

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: net-snmp + counter64

Непрочитанное сообщение hizel » 2008-11-07 16:12:59

Код: Выделить всё

user@host ~ >snmpget -c public -v2c 127.0.0.1 ifHCOutOctets.3
IF-MIB::ifHCOutOctets.3 = Counter64: 12110274775
и не переполняются счётчики :)
Последний раз редактировалось hizel 2008-11-07 21:10:55, всего редактировалось 1 раз.
Причина: *переполняются
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.