Различные версии netacct-mysql лежат здесь:
http://netacct-mysql.gabrovo.com/download/
Первым делом поставил netacct-mysql-0.78.tar.gz — не понравилось, можно только смотреть общий объем трафика за сутки, без возможности отслеживать посещенные сайты. Затем поставил netacct-mysql-0.73.tar.gz , оказалось что скрипт, лежащий в архиве создает таблицу не с тем именем, которое нужно программе, и это при том, что на сайте напротив этого пакета красовалась надпись stable, разбираться не стал, какая база нужна программе на самом деле, скачал netacct-mysql-0.73rc2.tar.gz , этот пакет наконец-то установился и заработал без проблем.
Итак использовались следующие пакеты:
Сам netacct-mysql:
http://netacct-mysql.gabrovo.com/download/netacct-mysql-0.73rc2.tar.gz
И deb-пакеты, которые пришлось докачивать, так как без них netacct-mysql отказывался собираться (в моем примере для архитектуры amd64, для i386 там также есть):
http://packages.ubuntu.com/ru/dapper/libmysqlclient10 :
libmysqlclient10_3.23.56-3_amd64.deb
http://packages.ubuntu.com/ru/dapper/libmysqlclient10-dev :
libmysqlclient10-dev_3.23.56-3_amd64.deb
http://mirrors.bsd.md/Ubuntu/pool/main/libp/libpcap/ :
libpcap0.8_1.0.0-2ubuntu1_amd64.deb
libpcap0.8-dev_1.0.0-2ubuntu1_amd64.deb
Приступим:
wget http://netacct-mysql.gabrovo.com/download/netacct-mysql-0.73rc2.tar.gz
Далее необходимо поставить mysql-server:
sudo apt-get install mysql-server
У меня уже стоял, на всякий случай укажу версию:
mysql -V
mysql Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (x86_64) using readline 6.1
Ставим скачанные пакеты:
sudo dpkg -i libpcap0.8_1.0.0-6_amd64.deb
sudo dpkg -i libpcap0.8-dev_1.0.0-2ubuntu1_amd64.deb
sudo dpkg -i libmysqlclient10_3.23.56-3_amd64.deb
sudo dpkg -i libmysqlclient10-dev_3.23.56-3_amd64.deb
Распаковываем netacct-mysql и ставим:
tar xvzf netacct-mysql-0.73rc2.tar.gz
cd netacct-mysql-0.73rc2
./configure
make
sudo make install
netacct будет установлена в /usr/local директории, при этом конфигурационные файлы будут в /usr/local/etc/, а сама программа в /usr/local/sbin.
Далее редактируем файл netacct.sql , который необходим для создания нужной программе БД, в нем стоит изменить пароль для пользователя, от имени которого программа будет обращаться к базе данных, затем:
mysql -u root -p < netacct.sql
Также возможно придется выполнить вот эту операцию (без нее netacct отказывался работать с mysql):
mysql -u root -p
SET PASSWORD FOR 'acct'@'localhost' = OLD_PASSWORD('acct_password');
где acct_password — пароль, который вы вписали netacct.sql.
quit;
Теперь редактируем файл конфигурации (закомментированные, неиспользуемые опции убрал из конфига):
sudo nano /usr/local/etc/naccttab
database mysql # указываем сливать инфу в mysql
mysql_user acct # имя пользователя к БД
mysql_password acct_password # пароль
mysql_host 127.0.0.1
# ip сервера с mysql
# в данном случае — на этом же компе
mysql_database netacct # имя базы данных
flush 300
# данные в базу будут сливаться
# каждые 300сек=5мин.
fdelay 60
# сессия между двумя ip считается завершенной
# если с момента последней передачи пакетов
# проходит 60сек. Только после этого разрешается
# вносить вносить соответствующую запись в БД
file /var/log/acct # файл логов
dumpfile /var/log/acct-dump
# При остановке демона, например командой
# kill, несохраненные данные скидываются
# в файл, при следующем старте демона
# Из файла вносятся в базу
notdev eth1
# Не слушать этот адаптер
# eth1 смотрит в интернет
device eth0
# включаем promiscous mode -
# так называемый «неразборчивый» режим,
# в котором сетевая плата позволяет принимать
# все пакеты независимо от того, кому они
# адресованы. Эта возможность обычно
# используется в сетевых анализаторах трафика.
# eth0 смотрит в локалку
iflimit eth0 # Вести лог только с этого адаптера
ignoremask 255.255.255.0
# Игнорировать трафик между сетями
# класса C — т.е. локальный трафик
ignorenet 127.0.0.0 255.0.0.0 # игнорировать lo-интерфейс
debug 2 # уровень отладки
debugfile /tmp/nacctdt.debug # файл с логами отладки
# Device configuration
# Defines where the real data starts for each type of interface
# First give the name prefix, then the offset in bytes to the start
# of the real data, then the offset of the type field in bytes. If
# there is no type field, just give a 0.
# Don't specify SLIP or PPP devices here, otherwise association of
# dynamic ip-addresses with usernames won't work
# Put device types with more traffic last.
headers tr 40 38
headers lo 14 12
headers isdn 4 0
# headers isdn 14 0 # for hdlc/trans/cisco and hdlc/trans/raw
headers eth 14 12
headers plip 14 12
# Включениеотключение записей в базу
# disable 2 # disable output of protocol
# disable 3 # disable output of source address
# disable 4 # disable output of source port
# disable 5 # disable output of destination address
# disable 6 # disable output of destination port
disable 7 # disable output of packets count
# disable 8 # disable output of byte count
# disable 9 # disable output of device name
# disable 10 # disable output of user name
Сохраняем, запускаем:
cd /usr/local/sbin/
./nacctd
Через пять минут можно проверять БД на наличие статистики.
При использовании выявилась такая проблема, через некоторое время работы растет обьем памяти, используемый приложением. Возможно связано это с длительными сессиями, ведь пока они не завершатся, данные в mysql не вносятся, а хранятся в оперативке, возможно есть другая причина, точно не знаю, решил просто — добавлением в cron команды перезапуска демона каждые три часа:
crontab -u root -e
В открывшемся файле добавляем строки:
13 */3 * * * killall nacctd
14 */3 * * * /usr/local/sbin/nacctd
И сохраняем. Теперь в 13 минут каждого третьего часа nacctd останавливается, при этом он скидывает не сохраненную информацию в дамп, и в 14 минут каждого третьего часа запускается, и информация из дампа при следующей записи вносится в базу данных.
На этом настройка закончена, netacct-mysql используется на рабочем сервере около двух месяцев, пока устраивает. С помощью скриптов можно реализовать различные запросы к mysql для получения статистики использования интернет, зависит от вашей фантазии и знания sql-запросов.