Итак по порядку.
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
Главное не забыть что через интерфейс должно что-то бегать - пинг к примеру.
Дальше лезем в мускул - смотрим таблицу если что-то появилось, гут - всё запустилось.
Демонизируем (в конфиге выставляем 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"
делаем его выполняемым (работаем исесно испод рута)
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
Всё , можно работать.
З.Ы. Недельку потещу - мот чего подправлю ...