Перейти к содержимому
Калькуляторы

Есть ли в 32-битной FreeBSD 64-битные счётчики сети? Munin рисует пустые полосы на графиках сетевой загрузки

Есть FreeBSD 8.2/i386

Через сетевой интерфейс проходит трафик > 100mbps.

Munin рисует его с пустыми полосами на месте пиков.

 

В описании плагина "if_" честно сказано:

Since the data source for this plugin use 32bit counters,

this plugin is really unreliable and unsuitable for most 100Mb (or faster) interfaces,

where bursts are expected to exceed 50Mbps.

This means that this plugin is unsuitable for most production environments.

Внутри он использует "netstat -i -b -n -I $iface".

 

Судя по http://wiki.freebsd.org/LibNetstat - проблема ещё не решена:

"Add support for multi-platform atomic 64-bit counters for tracking network statistics properly." = deferred.

Хотя судя по http://web.archiveorange.com/archive/v/GQJ3kIHxA0nRB7v99774 - ей уже почти 10 лет.

 

Вопрос: можно ли базовыми средствами FreeBSD обойти данное ограничение,

как это делает net-snmp с опцией WITH_MFD_REWRITES?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Там про SNMP и Cacti, а у меня netstat и Munin.

Как собирать SNMP, уже известно: make -C /usr/ports/net-mgmt/net-snmp install clean WITH_MFD_REWRITES=1

Как исправлять Cacti, тоже понятно: "rrdtool tune -a ..." в /usr/local/share/cacti/rra для файлов трафика.

Но ни то, ни другое к Munin отношения не имеет.

Скорее всего, придётся заменить плагин "if_" на "snmp__if_"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть FreeBSD 8.2/i386

Через сетевой интерфейс проходит трафик > 100mbps.

Munin рисует его с пустыми полосами на месте пиков.

 

В описании плагина "if_" честно сказано:

Since the data source for this plugin use 32bit counters,

this plugin is really unreliable and unsuitable for most 100Mb (or faster) interfaces,

where bursts are expected to exceed 50Mbps.

This means that this plugin is unsuitable for most production environments.

Внутри он использует "netstat -i -b -n -I $iface".

 

Судя по http://wiki.freebsd.org/LibNetstat - проблема ещё не решена:

"Add support for multi-platform atomic 64-bit counters for tracking network statistics properly." = deferred.

Хотя судя по http://web.archiveor...IHxA0nRB7v99774 - ей уже почти 10 лет.

 

Вопрос: можно ли базовыми средствами FreeBSD обойти данное ограничение,

как это делает net-snmp с опцией WITH_MFD_REWRITES?

 

Ответ на ваши вопросы - в иходниках фряхи.

 

 

Как минимум в драйверах свои счётчики обычно делаются 64 и доступными через sysctl.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я не нашел. bsnmpd для эмуляции 64-битных счетчиков снимает раз в минуту 32-битные.

 

Сделал в свое время плагин для munin, снимающий счетчики sysctl dev.em.xx.mac_stats: http://exchange.munin-monitoring.org/plugins/ifem_/details

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

/usr/src/sys/net.if.h

 

 

/*
* Structure describing information about an interface
* which may be of interest to management entities.
*/
struct if_data {
/* generic interface information */
u_char	ifi_type;		/* ethernet, tokenring, etc */
u_char	ifi_physical;		/* e.g., AUI, Thinnet, 10base-T, etc */
u_char	ifi_addrlen;		/* media address length */
u_char	ifi_hdrlen;		/* media header length */
u_char	ifi_link_state;		/* current link state */
u_char	ifi_spare_char1;	/* spare byte */
u_char	ifi_spare_char2;	/* spare byte */
u_char	ifi_datalen;		/* length of this data struct */
u_long	ifi_mtu;		/* maximum transmission unit */
u_long	ifi_metric;		/* routing metric (external only) */
u_long	ifi_baudrate;		/* linespeed */
/* volatile statistics */
u_long	ifi_ipackets;		/* packets received on interface */
u_long	ifi_ierrors;		/* input errors on interface */
u_long	ifi_opackets;		/* packets sent on interface */
u_long	ifi_oerrors;		/* output errors on interface */
u_long	ifi_collisions;		/* collisions on csma interfaces */
u_long	ifi_ibytes;		/* total number of octets received */
u_long	ifi_obytes;		/* total number of octets sent */
u_long	ifi_imcasts;		/* packets received via multicast */
u_long	ifi_omcasts;		/* packets sent via multicast */
u_long	ifi_iqdrops;		/* dropped on input, this interface */
u_long	ifi_noproto;		/* destined for unsupported protocol */
u_long	ifi_hwassist;		/* HW offload capabilities, see IFCAP */
time_t	ifi_epoch;		/* uptime at attach or stat reset */
struct	timeval ifi_lastchange;	/* time of last administrative change */
};

 

Эти счётчики видно по: netstat -idbhtW

 

 

Если хочется 64 бита, можно на нетграфе считать, правда хз как это потом прикручивать к стандартному SMNPd

 

Ещё есть счётчики в драйверах, обычно они доступны по sysctl и они как раз 64 битные:

 

 

dev.em.0.mac_stats.excess_coll: 0
dev.em.0.mac_stats.single_coll: 0
dev.em.0.mac_stats.multiple_coll: 0
dev.em.0.mac_stats.late_coll: 0
dev.em.0.mac_stats.collision_count: 0
dev.em.0.mac_stats.symbol_errors: 0
dev.em.0.mac_stats.sequence_errors: 0
dev.em.0.mac_stats.defer_count: 0
dev.em.0.mac_stats.missed_packets: 0
dev.em.0.mac_stats.recv_no_buff: 0
dev.em.0.mac_stats.recv_undersize: 0
dev.em.0.mac_stats.recv_fragmented: 0
dev.em.0.mac_stats.recv_oversize: 0
dev.em.0.mac_stats.recv_jabber: 0
dev.em.0.mac_stats.recv_errs: 0
dev.em.0.mac_stats.crc_errs: 0
dev.em.0.mac_stats.alignment_errs: 0
dev.em.0.mac_stats.coll_ext_errs: 0
dev.em.0.mac_stats.xon_recvd: 0
dev.em.0.mac_stats.xon_txd: 0
dev.em.0.mac_stats.xoff_recvd: 0
dev.em.0.mac_stats.xoff_txd: 0
dev.em.0.mac_stats.total_pkts_recvd: 4013097
dev.em.0.mac_stats.good_pkts_recvd: 4013097
dev.em.0.mac_stats.bcast_pkts_recvd: 24144
dev.em.0.mac_stats.mcast_pkts_recvd: 0
dev.em.0.mac_stats.rx_frames_64: 0
dev.em.0.mac_stats.rx_frames_65_127: 1581390
dev.em.0.mac_stats.rx_frames_128_255: 511687
dev.em.0.mac_stats.rx_frames_256_511: 110490
dev.em.0.mac_stats.rx_frames_512_1023: 127240
dev.em.0.mac_stats.rx_frames_1024_1522: 1682290
dev.em.0.mac_stats.good_octets_recvd: 2835108776
[b]dev.em.0.mac_stats.good_octets_txd: 5259590736[/b]
dev.em.0.mac_stats.total_pkts_txd: 6205283
dev.em.0.mac_stats.good_pkts_txd: 6205283
dev.em.0.mac_stats.bcast_pkts_txd: 4535
dev.em.0.mac_stats.mcast_pkts_txd: 0
dev.em.0.mac_stats.tx_frames_64: 315121
dev.em.0.mac_stats.tx_frames_65_127: 2631754
dev.em.0.mac_stats.tx_frames_128_255: 108194
dev.em.0.mac_stats.tx_frames_256_511: 287739
dev.em.0.mac_stats.tx_frames_512_1023: 115448
dev.em.0.mac_stats.tx_frames_1024_1522: 2747027
dev.em.0.mac_stats.tso_txd: 0
dev.em.0.mac_stats.tso_ctx_fail: 0

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

u_long	ifi_ibytes;		/* total number of octets received */
u_long	ifi_obytes;		/* total number of octets sent */

Эти счётчики видно по: netstat -idbhtW

 

Именно они и 32-битные.

 

Если хочется 64 бита, можно на нетграфе считать, правда хз как это потом прикручивать к стандартному SMNPd

Да, можно еще счетчиками ipfw

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

фря 7, 8; em0, bsnmpd. показывает без проблем коунтеры64, график без обвалов

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

bsnmpd. показывает без проблем коунтеры64

С SNMP проблем нет и не было. Проблема именно с Munin-агентом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сделал в свое время плагин для munin, снимающий счетчики sysctl dev.em.xx.mac_stats

В описании ipfwcnt_ есть небольшая ошибка - в plugins.conf после "env" должен быть не пробел, а точка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.