Jump to content
Калькуляторы

Есть ли в 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?

Share this post


Link to post
Share on other sites

Там про 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_"

Share this post


Link to post
Share on other sites

Есть 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.

 

 

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

/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

 

 

 

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this