Traffic Counter v.1.0 by Iosiphov Vladimir Данная программа предназначена для подсчета трафика на сетевых интерфейсах и выдачи статистики пользователям и администратору в удобном виде. Для установки данного "биллинга" необходимо следующее ПО (в скобках приведено местонахождение в портах FreeBSD 5.2.1): mysql-server41 (/usr/ports/databases/mysql41-server) apache2 (/usr/ports/www/apache2) php4 (/usr/ports/www/mod_php4) php4-mysql module (/usr/ports/databases/php4-mysql) php4-session module (/usr/ports/www/php4-session) perl5 (/usr/posts/lang/perl5) bpft4 (/usr/ports/net-mgmt/bpft) (в принципе пойдет и простой trafd. Просто у меня в папке с trafd его версия оказалась постарее чем в bpft, поэтому и поставил отсюда. Для пользователей Linux, если они не находят ни bpft, ни trafd вот ссылка: http://bpft4.sourceforge.net) также требуется установленный интерпретатор sh (Bourne shell) :) Теперь про установку. В принципе этот "биллинг состоит из 3-х частей: 1 - демон trafd, который занимается самим учетом траффика на интерфейсах ( кто, куда, сколько, ...) и хранит ее в себе или же в лог-файле. В данном случае в себе. 2 - скрипты на sh и perl, которые кладут эту статистику из trafd в mysql таблицы с которыми нам работать удобнее и быстрее. 3 - сами php скрипты которые и занимаются, собственно, подсчетом суммы и выдачи статистики клиенту в удобном виде. Начнем установку. Копируем папку ./scripts в /usrlocal/etc/ под именем traffic_count. можно под любым именем икуда угодно, но главное пото вписать правильный путь в /etc/crontab о чем будет написвно ниже. !!!Директория ./scripts не дожна разбиваться на части! Все ее скрипты зависимы друг от друга! ТО есть папка ./scripts должна быьт переписана целиком и полностью !!! Для начала надо создвать таблицы в mysql в которых и будем хранить нашу статистику.Для этого создадим базу для тыблиц под названием traffic. В даном "биллинге" она построена таким образом: в mysql имеются таблица на каждый день месяца, причем на каждый прослушиваемый интерфейс своя статистика. Например: у меня на сервере через ходит Украина( я живу в Украине), а через мир. При етом таблицы выглядят так: traffic_01 traffic_01 traffic_02 traffic_02 ................. traffic_31 traffic_31 То есть сколь ко интерфейсов столько и табли умножить на 31. Эти таблицы создаются с помощью скриптов ./scripts/mysql/create_tabs_int1.sql и ./scripts/mysql/create_tabs_int2.sql. Перед выполнением етих скриптов необходимо их подправить. Нужно в них надписи , заменить на название соответствующих интервейсов. Например: CREATE TABLE traffic_01 ... на CREATE TABLE traffic_01rl0 Если Интернет ходит не по двум, а по одному интерфейсу, то второй скрипт не требуется. После этого вополняем их: $ mysql -u root -h localhost < //create_tabs_int1.sql Далее создадим таблицу auth в которой будет хранится инфо о пользователях: $ mysql -u root -h localhost < //auth.sql С mysql закончили. Теперь настроем скрипты на perl которые пишут статистику из trafd в mysql. Заходим в них и правим переменные для подключения к mysql: my $dbase="DBI:mysql:traffic"; говороит что база данных называется traffic. my $user = "test"; пользователь для подключения к даной DB my $password = "test"; пароль этого пользователя my $iface = ""; интерфейс с которого снимается статистика my $tablename = "traffic"; название таблицы (неполное). В итоге оно будет, типа traffic_01 Это была настройка файла ./scripts/trafficfill_int1.pl . Соответственно если есть еще какие-либо интерфейсы, то для них создаются собственный файлы.После этого в /etc/crontab необходимо добавить строку: */10 * * * * root /usr/local/etc/traffic_count/traffic_count где traffic_count - это sh скрипт ./scripts/traffic_count. Теперь перейдем к настройке самих php скриптов. Копируем папку ./traffic в директорие где лежат веб-страницы сервера apache (по-умолчанию: /usr/local/www/htdocs/). После переходим к их настройке которая содится к тому же, что и .pl скрипров. Подправляем данные для подключения пользователя к DB и мы готовы к работе :) Опять же напомню: .php скрипты написаны строго с учетом 2-х интерфейсом. При этом один из них является интерфейсом в мир. При необходимости скрипты можно подправить и под 1 интерфейс, что займет 1-2 часа. Если кто не сможет сам этого сделать, то я по-возможности помогу. Приемущества: 1) скрипт обновляет данные каждые 10-15 минут с помощью скрипта на sh, который запускается cronom. 2) высокая точность подсчета 3) программа не создает статических страниц, а прямо работает с mysql, что дает возможность видеть полные данные 4) есть возможность давать полный отчет о том, кто и куда ходил, сколько скачал. 5) простота установки и настройки Недостатки: 1) trafd перезапускается каждые 10-15 минут что на больших скоростях может быть существенно ( у меня на инет 2 мегабита и точночть очень высока) 2) ограниченное количество обслуживаемых клиентов, т.к. все данные пишутся в mysql довольно часто, что при 30 пользователях у меня создает около 3000-4000 записей каждый день, которое можно легко сократить до количества клиетов 3) нет возможности работы с postgres 4) каждый месяц надо делать dump баз если хотите хранить статистику долго (думаю скоро и сам напишу) 5) пока что нет возможности разделения на мир и "не мир", т.к. у меня мир идет просто по другому интерфейсу и я в mysql создал базу для 2-х интерфейсов: 1-мир; 2-не мир 6) еще около полмесяца напряженной работы для нормального вида