leksstav пишет:Уважаемый Serg79, есть ли мануал по инсталляции и настройке вашей программы ?
В настройке ничего сложного. Из системных пакетов на данный момент требуется три пакета: Apache, php и MySql. Машина на которую будет устанавливаться система должна выступать в качестве шлюза для локальной сети. То есть должна иметь два интерфейса, один смотрит в локальную сеть (с него снимается трафик), другой смотрит во внешний мир (Интернет).
Замечание для начинающих пользователей Linux
Все ниже приведенные команды командной строки и примеры конфигурационных файлов показаны в качестве пояснения к общему описанию, так как они более лаконичны и информативны. Не пытайтесь бездумно копировать и выполнять их. По большому счету они показывают, что и где нужно разместить в системе, что бы 'trafstat' работал правильно.
Всю систему можно разделить на три независимых компонента, которые требуют настройки:
База данных (MySql) - требуется для хранения данных о трафике и служебной информации.
Веб-интерфейс (Apache/php) - требуется для просмотров отчетов.
Съем трафика (trafd и cron) - включает в себя сам коллектор снимающий трафик и скрипты выгрузки данных о трафике в базу.
Первым делом необходимо распаковать TrafStat, у меня он распакован в '/home'. Таким образом, путь до него выглядит следующим образом '/home/trafstat-0.1-beta'. Для того, что бы удобней было работать я создал ссылку 'trafstat' в '/home' на директорию с распакованными файлами:
# ln -s /home/trafstat-0.1-beta /home/tarfstat
В дальнейшем, на распакованный архив с 'trafstat' я буду ссылаться как на '/home/trafstat'.
1 - Создание базы данных.
Для хранения информации о трафике и служебной информации (пользователи и группы которым доступен веб-интерфейс) необходима база данных. В проекте используется MySql, как его установить и настроить обращайтесь к документации по MySql.
Первым делом необходимо создать базу с именем 'tarfstat' и сформировать в ней таблицы для хранения данных. SQL-скрипт создающий таблицы находиться в файле '/home/trafstat/sql/base.sql'. Команды создающие базу с необходимыми таблицами:
# mysqladmin create trafstat
# mysql trafstat < /home/trafstat/sql/base.sql
2 - Настройка веб-интерфейса.
Для работы веб-интерфейса требуется Apache с php, как установить и настроить данный программы обращайтесь к их документации. Советую при настройки php включить вывод всех предупреждений (WARNING) и ошибок (ERROR). При нормальной работе веб-интерфейса, ошибки и предупреждения появляться не должны. Если они будут то при включенных предупреждениях вы их сразу увидите в браузере. Включены или выключены данные опции зависит от дистрибутива, для того что бы их включить требуется добавить или раскомментировать следующие строки в файле 'php.ini':
error_reporting = E_ALL
display_errors = On
Далее следует добавить ссылку в корневом каталоге для веб-страниц Apache, на веб-интерфейс 'trafstat'. В моем случае, корневой каталог для веб-документов Apache имеет следующий путь '/var/www/htdocs'. Соответственно что бы создать ссылку на веб-интерфейс 'trafstat' следует выполнить следующую команду:
# ln -s /home/trafstat/www /var/www/htdocs/trafstat
Теперь что бы обратиться к веб-интерфейсу, необходимо в адресной строке браузера набрать адрес машины на которой установлен 'trafstat'. Если 'trafstat' например развернут на машине с ip-адресом '192.168.1.1', то путь к веб-интерфейсу имеет следующий вид 'http://192.168.1.1/trafstat'.
Далее необходимо настроить параметры для доступа веб-интерфейса к базе данных. Они находятся в файле '/home/trafstat/www/config.php'. Так как у меня MySql-ю разрешено принимать только локальные соединения через UNIX-сокеты, то у меня эти настройки имеют следующий вид:
/* настройки базы данных */
$dbhost = 'localhost'; // имя машины на которой крутиться MySQL
$dbname = 'trafstat'; // имя базы данных
$dbuser = 'root'; // имя пользователя для доступа к базе (чтение/запись)
$dbpasswd = ''; // пароль пользователя если необходим
После этого веб-интерфейс должен работать.
3 - Настройка съема трафика.
Данный раздел можно разбить на два независимых подраздела:
Так как я использую в качестве базового дистрибутива Slackware, то по умолчанию я буду иметь в виду именно этот дистрибутив. Но установка и на другой дистрибутив не должна вызвать больших проблем, мною была установлена и настроена система как в Debian, так и в Fedora.
3.1 - Сборка и установка 'trafd'.
Съемщик трафика 'trafd' представлен в виде исходных кодов и по этому его придется компилировать. Что бы его собрать необходимо выполнить следующие команды:
# cd /home/trafstat/trunk/package/trafd-build
# ./trafd.SlackBuild
После чего в директории '/tmp' будет собран 'trafd'. В системе Slackware так же будет собран пакет готовый для инсталляции в системе. Все необходимые для инсталляции файлы будут находиться в директории '/tmp/package-trafd', их будет достаточно перенести в корневой каталог '/'.
После установки 'trafd' в систему, необходимо ему указать тот интерфейс с которого будет производиться съем трафика. Это делается в файле '/etc/trafd/trafctl.conf', необходимо раскомментировать строчку с параметром 'interfaces'. У меня он имеет следующий вид:
Автоматический запуск 'trafd' при старте системы обеспечивает скрипт '/etc/rc.d/rc.trafd'. В зависимости от системы необходимо обеспечить его выполнение при запуске системы.
3.1 - Установка скриптов осуществляющих выгрузку данных о трафике в базу.
Что бы установить скрипты выгружающие данные о трафике в базу необходимо выполнить следующие команды:
# mkdir -p /usr/libexec/trafstat
# mkdir -p /etc/trafstat
# cd /home/trafstat/scripts
# cp trafcron.pl trafsave.pl /usr/libexec/trafstat
# cp trafstat.conf /etc/trafstat
Вот как выглядит у меня файл конфигурации '/etc/trafstat/trafstat.conf', для скриптов выгрузки данных в базу:
# [trafsave.pl]
#
# Options for access to the database
trafsave_db_name = traffic
trafsave_db_user = root
#trafsave_db_pass = 123456
#
# Delay before loading data (sec.)
trafsave_delay = 3
# [trafcron.pl]
#
# Offset time of writing data to the database
trafcron_time_offset = -2
Далее необходимо настроить 'cron' на автоматический запуск выгрузки данных о трафике в базу. Вот как у меня выглядит правило для запуска скрипта сохраняющего информацию о трафике каждые пять минут в файле расписания '/var/spool/cron/crontabs/root' для 'crond', запускаемый от имени пользователя 'root':
# Run trafcron.pl
*/5 * * * * /usr/libexec/trafstat/trafcron.pl 2>&1 > /dev/null