pmaсct (счётчик траффика)

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
jabax
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-02-09 11:44:55
Откуда: Минск

pmaсct (счётчик траффика)

Непрочитанное сообщение jabax » 2009-02-09 11:59:46

Вопщем столкнулся с проблемой подсчёта траффика. Мона считать pf, но были свои нюансы и мне это не подходило. Решил по советам остановиться на pmacct . Проект загадочно документирован. Не то чтобы документации нет, она просто раскидана чёрти знает где. Из-за этого я с этой софтинкой провозился не 4 часа а 1,5 дня. Воопщем решил написать статейку .


Итак по порядку.

1) Установка - стандартная из портов. Make search name="pmacct" и т.д.
не забудьте тока сконфигурировать его с поддержкой mysql если нада

2)Краткое описание проги и архитектуры
pmacсt - софтина для подсчёта и классификации(http и т.д.) траффика и хранения результатов в Mysql или в оперативке.
pmacct как проект состоит из 3-х демонов и клиента
pmacctd - основной демон
nfacctd
sfacctd
Демоны отличаются библиотеками для сбора инфы (Насколько я понял).

Расположение доков следующее

/usr/local/share/doc/pmacct- тут лежат фак примеры и ридми , наиболее полезен файл EXAMPLES(написано как запускать демонов и т.д.) - в остальных ничё интересного пока не нашёл.
манов нету - доки вызываются для демонов типа pmacctd -h, для клиента просто запуском без опций (/usr/local/bin/pmacct)
файлы лучше брать отсюда - /usr/ports/distfiles/pmacct-0.11.5.tar.gz тк значительная часть доков оттудв не извлекается почему-то.

3)Пускаем pmacct c конфигом.
Создаём базу и таблицу из файлов pmacct-create-db_v7.mysql и pmacct-grant-db.mysq из
/usr/ports/distfiles/pmacct-0.11.5.tar.gz - в архиве папка sql
лично мне нужна тока таблица и юзер

#создаю юзера pmacct с паролем 1 доступного тока с локолхоста (эт не обязательно - мона просто забить работающего юзера к примеру root)

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

	CREATE USER 'pmacct'@'localhost' IDENTIFIED BY '1';  
	

#права юзеру

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

	GRANT SELECT , 
	INSERT ,
	UPDATE ,
	DELETE ,
	ALTER ,
	INDEX ON * . * TO 'pmacct'@'localhost' IDENTIFIED BY '1' ;
	

# создаю таблицу

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

	create table `acct` (                 
        agent_id INT(2) UNSIGNED NOT NULL,
        class_id CHAR(16) NOT NULL,
        mac_src CHAR(17) NOT NULL,
        mac_dst CHAR(17) NOT NULL,
        vlan INT(2) UNSIGNED NOT NULL,
        as_src INT(2) UNSIGNED NOT NULL,
        as_dst INT(2) UNSIGNED NOT NULL,
        ip_src CHAR(15) NOT NULL,
        ip_dst CHAR(15) NOT NULL,
        src_port INT(2) UNSIGNED NOT NULL,
        dst_port INT(2) UNSIGNED NOT NULL,
        tcp_flags INT(4) UNSIGNED NOT NULL,
        ip_proto CHAR(6) NOT NULL,
        tos INT(4) UNSIGNED NOT NULL,
        packets INT UNSIGNED NOT NULL,
        bytes BIGINT UNSIGNED NOT NULL,
        flows INT UNSIGNED NOT NULL,
        stamp_inserted DATETIME NOT NULL,
        stamp_updated DATETIME,
        PRIMARY KEY (agent_id, class_id, mac_src, mac_dst, vlan, as_src, as_dst, ip_src, ip_dst, src_port, dst_port, ip_proto, tos, stamp_inserted)
	);
	


Создаём конфиг на базе примеров из /usr/local/share/examples/pmacct
я выбрал pmacctd-sql_v1.conf.example -

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

cp /usr/local/share/examples/pmacct/pmacctd-sql_v1.conf.example /usr/local/etc/pmacct.conf
дальше потрошим созданый конфиг

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

ee /usr/local/etc/pmacct.conf
правим конфиг до следующего состояния (поменяйте что необходимо)

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

	interface: rl1  
	daemonize: false	
	aggregate: src_host,dst_host
	plugins: mysql
	sql_db: unaserver
	sql_table: acct
	sql_table_version: 7
	sql_passwd: 1
	sql_user: pmacct
	sql_refresh_time: 30
	sql_history: 10m
	sql_history_roundoff: mh
	

опции конфига смотреть в файле CONFIG-KEYS в /usr/ports/distfiles/pmacct-0.11.5.tar.gz

пускаем pmacctd с этим конфигом пока не демоном - чтобы оттестить (я обычно пишу полные пути - для крона скриптов и прочего оно полезно)

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

/usr/local/sbin/pmacctd -f /usr/local/etc/pmacct.conf
ждём 30 сек(лучше больше) - проверяем не пишет ли ошибок (есть опция дебаг в конфиге - её можно включать если что-то непонятное твориться)
Главное не забыть что через интерфейс должно что-то бегать - пинг к примеру.
Дальше лезем в мускул - смотрим таблицу если что-то появилось, гут - всё запустилось.
Демонизируем (в конфиге выставляем daemonize: true ).

Попускаем немного трафа и посмотрим что организовалось в таблице ( я брал не все поля тк их слишком много чтобы здесь показать все):

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

select ip_src,ip_dst,packets,bytes,flows,stamp_inserted,stamp_updated from acct;
()
Получается что-то вроде :

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

+----------------+----------------+---------+-------+-------+---------------------+---------------------+
| ip_src         | ip_dst         | packets | bytes | flows | stamp_inserted      | stamp_updated       |
+----------------+----------------+---------+-------+-------+---------------------+---------------------+
| 192.168.0.1    | 192.168.0.100  |     136 | 11424 |     0 | 2009-02-09 19:30:00 | 2009-02-09 19:40:01 |
| 192.168.0.100  | 192.168.0.1    |     136 | 11424 |     0 | 2009-02-09 19:30:00 | 2009-02-09 19:40:01 |
| 192.168.0.1    | 192.168.0.100  |     494 | 41496 |     0 | 2009-02-09 19:40:00 | 2009-02-09 19:48:45 |
| 192.168.0.100  | 192.168.0.1    |     494 | 41496 |     0 | 2009-02-09 19:40:00 | 2009-02-09 19:48:45 |
Тоесть прога агрегирует сколько кто куда передал за определённый промежуток. Таким образом с необходимой точностью можно знать сколько траффа куда ушло.

Решил ещё добавить скрипт в /usr/local/etc/rc.d чтоб грамотно стартовать из /etc/rc.conf
вот что получилось:

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

#!/bin/sh

. /etc/rc.subr
name="pmacctd"
pmacctd_enable="${pmacctd_enable:-"NO"}"
rcvar=`set_rcvar`
start_cmd="${name}_start"
stop_cmd="${name}_stop"

load_rc_config $name

pmacctd_start()
{
	echo "pmacctd starting";
	/usr/local/sbin/pmacctd -f /usr/local/etc/pmacct.conf
}

pmacctd_stop()
{
	echo "pmacctd stoping"
	killall pmacctd
}

run_rc_command "$1"
Кидаем это сё в файл /usr/local/etc/rc.d/pmacctd
делаем его выполняемым (работаем исесно испод рута)
chmod 700 /usr/local/etc/rc.d/pmacctd
далее пишем в /etc/rc.conf -
pmacctd_enable="YES"
вуаля -

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

10# /usr/local/etc/rc.d/pmacctd start
pmacctd starting
10# /usr/local/etc/rc.d/pmacctd stop
pmacctd stoping
Важно то что скрипт весьма простой и не проводит никаких проверок на пиды , дубликаты и т.д. - это надо учитывать

Всё , можно работать.

З.Ы. Недельку потещу - мот чего подправлю ...
Последний раз редактировалось jabax 2009-02-12 0:20:16, всего редактировалось 21 раз.

Хостинговая компания 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/

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

Re: pmaсct (счётчик траффика) - сбор доков

Непрочитанное сообщение hizel » 2009-02-09 14:28:11

демоны отличаются, тем откуда данные берутся
/usr/local/share/doc/pmacct/FAQS
Q2: 'pmacct', 'pmacctd', 'nfacctd', 'sfacctd' -- but what do they mean ?
A: 'pmacct' is intended to be the name of the project; 'pmacctd' is the name of the
libpcap-based IP accounting and aggregation daemon; 'nfacctd' is the name of the
NetFlow v1/v5/v7/v8/v9 accounting and aggregation daemon which entered the project
starting from version 0.7.0; 'sfacctd' is the name of the sFlow v2/v4/v5 accounting
and aggregation daemon which entered the project starting from version 0.9.0.
что касается принципов работы всего-этого то они не отличаются от принципов работы набора flow-tools
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

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

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение Alex Keda » 2009-02-11 18:48:36

намана вроде....
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение zg » 2009-02-11 18:56:05

jabax писал(а):# создаю таблицу
каков запас прочности твоей таблицы? то есть через сколько дней она переполнится и при каком трафике (количестве пользователей)?

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

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение hizel » 2009-02-11 20:19:20

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

jabax
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-02-09 11:44:55
Откуда: Минск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение jabax » 2009-02-11 23:59:22

zg писал(а):
jabax писал(а):# создаю таблицу
каков запас прочности твоей таблицы? то есть через сколько дней она переполнится и при каком трафике (количестве пользователей)?

если поставить временной промежуток сутки для аккумуляции трафа , то думаю 2 гб таблицы для ведения статистики на 100 компов до конца жизни хватит.

тут же фишка в том что данные не типа тспдамп а они агрегируются по временным промежуткам как задашь - 10 мин 50 мин и т.д. тем и удобно что хранит статистику с мин объёмом.

jabax
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-02-09 11:44:55
Откуда: Минск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение jabax » 2009-02-12 0:54:32

Народ - у меня тут ещё трабла организовалалась - не страртует при загрузке pmacctd. Стартует и стопится с консоли замечательно, а при загрузке фигу. У кого-нить есть идеи почему? Сроки поджимают , а учить полностью тонкости написания rc.d скриптов нет времени. Скрипт вы видели, в rc.conf сё написано pmacctd_enable="YES" и нифига. Помогите плз.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение zg » 2009-02-12 7:07:55

hizel писал(а):максимум на сутки или во врменной табличке, тригером разгребсти
что-то в данной статье не видно триггера :Search: или я один такой непродвинутый? :smile:
jabax писал(а):тут же фишка в том что данные не типа тспдамп а они агрегируются по временным промежуткам как задашь - 10 мин 50 мин и т.д. тем и удобно что хранит статистику с мин объёмом.
не вижу, чтобы они удалялись по истечению срока жизни
jabax писал(а):Всё , можно работать.
после этой фразы многие даже и не подумают чего-то там удалять из базы
jabax писал(а):если поставить временной промежуток сутки для аккумуляции трафа , то думаю 2 гб таблицы для ведения статистики на 100 компов до конца жизни хватит.
доведи до логического конца, а то получается как в анекдоте про нипильник. Пусть она у тебя собирает статистику за день, потом дамип в логи, а суммарное потребление в отдельную таблицу, чтобы можно в случае чего и выборки за месяц делать и по времени смотреть кто, когда чего.

ev
ст. лейтенант
Сообщения: 1325
Зарегистрирован: 2008-07-27 17:11:30
Откуда: Москва

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение ev » 2009-02-12 10:26:18

а как сильно он грузит сервер?

jabax
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-02-09 11:44:55
Откуда: Минск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение jabax » 2009-02-12 11:18:06

доведи до логического конца, а то получается как в анекдоте про нипильник. Пусть она у тебя собирает статистику за день, потом дамип в логи, а суммарное потребление в отдельную таблицу, чтобы можно в случае чего и выборки за месяц делать и по времени смотреть кто, когда чего.
Зг тут такой момент - а если те надо узнать расход трафа к примеру каждый час компом? Как ты это сделаешь с общим счётчиком траффика?
Прога выдаёт сумарное потребление в отдельную таблицу за временные промежутки какие в конфиге поставишь. Хочешь - бут писать о сумме за каждые 10 минут в поле, хочешь, 1-го поля хватит на месяц. Размер базы соответствует точности которая нужна.
не вижу, чтобы они удалялись по истечению срока жизни
Какой ещё срок жизни? Ничего не надо удалять. Как ты посчитаешь за этот временной промежуток траффик точно если ты удалишь данные? Какое-то загадочное непонимание. Я поначалу аж разозлился :)
а как сильно он грузит сервер?
Практически никак. На гигабитном траффе не проверял - но метр в секунду не оказывает никакого воздействия. Если будут тесты на больших скоростях, то напишите тут, а то любопытно.

Народ так помогите плз со скриптами rc.d - не стартует при загрузке у меня софтина. Подскажите плз почему. Вроде всё как надо сделал.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение zg » 2009-02-12 11:59:20

jabax писал(а): Ничего не надо удалять.
если не удалять, то таблица в конце концов упадёт
jabax писал(а):Размер базы соответствует точности которая нужна.
при точности 10 минут и 20 пользователях при работе 24*7 насколько хватит твоей таблицы?

jabax
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-02-09 11:44:55
Откуда: Минск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение jabax » 2009-02-12 12:21:10

при точности 10 минут и 20 пользователях при работе 24*7 насколько хватит твоей таблицы?

10000 лет минимум. (считал на 2 гб таблицу, 20 человек, 10 минутные промежутки 2-е записи на каждый ай-пи в 10 минут - на входящий траф и исходящий )

Слух зг - помоги с rc.d скриптом если можешь, буду благодарен. Не стартует при загрузке.

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

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение hizel » 2009-02-12 12:37:56

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

jabax
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-02-09 11:44:55
Откуда: Минск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение jabax » 2009-02-12 12:57:57

запсутите мануально, безе rc.d может вякет чего стоящее
ручками влёт запускается и если использовать rc.d start / stop тоже, но при загрузке компа не хочет автоматом подсасываться. Думаю мот как-нить непрально переменную не так вызвал. Но я делал сё как написано в этом руководстве -
http://www.freebsd.org.ua/doc/ru_RU.KOI ... RCNG-INTRO

Если кто сталкивался с подобными затыками или видел инфу по ним скажите плз , а то в гугле я уже обыскался...

Вот код рц скрипта - чтоб не искать , стартует руками хорошо а вот при загрузке автоматом не пускается.

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

#!/bin/sh

. /etc/rc.subr
name="pmacctd"
pmacctd_enable="${pmacctd_enable:-"NO"}"
rcvar=`set_rcvar`
start_cmd="${name}_start"
stop_cmd="${name}_stop"

load_rc_config $name

pmacctd_start()
{
   echo "pmacctd starting";
   /usr/local/sbin/pmacctd -f /usr/local/etc/pmacct.conf
}

pmacctd_stop()
{
   echo "pmacctd stoping"
   killall pmacctd
}

run_rc_command "$1"
в /etc/rc.conf -
pmacctd_enable="YES"

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

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение hizel » 2009-02-12 13:19:08

тоесть из консоли

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

/usr/local/sbin/pmacctd -f /usr/local/etc/pmacct.conf
нормально отрабатывается?

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

jabax
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-02-09 11:44:55
Откуда: Минск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение jabax » 2009-02-12 13:51:36

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

/usr/local/sbin/pmacctd -f /usr/local/etc/pmacct.conf
да нормально

За дебаг сенкс я что-то забыл что у них есть свой дебаг ) - поковыряю, если найду что-нить, отпишусь

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

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение hizel » 2009-02-12 13:53:35

подсказко

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

>grep debug /etc/defaults/rc.conf
rc_debug="NO"           # Set to YES to enable debugging output from rc.d
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

ev
ст. лейтенант
Сообщения: 1325
Зарегистрирован: 2008-07-27 17:11:30
Откуда: Москва

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение ev » 2009-03-05 14:12:22

З.Ы. Недельку потещу - мот чего подправлю ...
ну как работает, стабильно?

еще бы парсить http заголовок и складывать в базу URLы :)

jabax
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-02-09 11:44:55
Откуда: Минск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение jabax » 2009-03-05 14:29:49

стабильно но проблему со стартом я не решил ещё :) - попробую таймаут выставить - поидее он из-за того что мускуль не запущен глючит при старте. А урлы сквид парсит.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение zg » 2009-03-05 15:01:00

jabax писал(а):поидее он из-за того что мускуль не запущен глючит
man rcorder

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

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение hizel » 2009-03-05 16:06:36

zg писал(а):
jabax писал(а):поидее он из-за того что мускуль не запущен глючит
man rcorder
не всегда работает, например у мя с jabberd тоже самое
такое ощущение что отрабатывается mysqld_safe и система счетает что мускул пущен, а он на самом деле еще не отдуплился до mysqld :cry:
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение zg » 2009-03-05 17:19:41


jabax
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-02-09 11:44:55
Откуда: Минск

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение jabax » 2009-03-13 11:44:05

я сегодня тож нашёл решение - сделал по топорному но оно работает
в /etc/rc.d добавляем файл pmacctd

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

ee /etc/rc.d/pmacctd
добавляем туда строки :

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

/usr/local/sbin/pmacctd -f /usr/local/etc/pmacct.conf
делаем его исполняемым

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

chmod +x pmacctd
собсно всё - терь при ребуте он зараза такая стартуется.

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

Re: pmaсct (счётчик траффика)

Непрочитанное сообщение hizel » 2009-03-13 11:53:28

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