Система статистики для squid

Опубликовано 04.04.2008 в 19:31 в разделе ,

Не так давно пришлось мне столкнуться с одной страшной проблемой. На факультете иностранных языков, где я по несчастью работаю админом, прилось поднять систему журналирования трафика и прокси сервер. С одной стороны это, казалось бы, не так уж и сложно. Но возникла следующая проблема — к бесплатному прокси-серверу squid не удалось найти удобной и быстрой системы учёта трафика. Поэтому такую систему я написал сам, и теперь предлагаю её миру, если кому-то вдруг понадобится.

Продукт — AlterVision Squid Traffic Analizer
Платформа — любая
Реализовано на языке — php с использованием базы данных mysql
Скачатьhttp://www.box.net/shared/hc8w39oe8o

Подробности установки, настройки и работы

Система основана на анализе логов прокси-сервера squid. Сам прокси оставляет очень подробную информацию о запросах пользователей в access.log, этим логом мы и пользуемся.

Раз в сутки, желательно в тот момент, когда сеть уже не используется (у меня это полночь каждого дня) запускается небольшой php-скрипт, который анализирует текущие логи сервера за день, отгружает их в базу данных и запускает ротэйтинг логов. Таким образом, статистика легко оказывается в базе до того, как лог-файл жиреет до неперевариваемых размеров.
Для реализации запуска по времени в Windows имеется бесплатная программа nnCronLite. Одна из версий лежит в папке со статистом.

Для просмотра логов используется веб-интерфейс. Реализовать его можно на сервере Apache, с установленными модулями php и базой данных mysql. Через веб-интерфейс легко просмотреть текущие логи сервера — посещение сайтов по ip-адресам, трафик за день, неделю, месяц и полгода. Кроме того, есть база ip-адресов, она легко конфигурируется через веб-интерфейс phpMyAdmin или схожей утилиты. Средства редактирования базы ip-адресов в веб-интерфейсе статиста нет — ибо лень …

Процесс установки

Установка не занимает много времени.
1. Прежде всего, скачиваем сам прокси-сервер squid. Добрый Гугль всегда поможет и отыскать последнюю версию, и ознакомиться с огромным количеством инструкций по установке и конфигурированию. Прежде чем продолжать, убедитесь, что прокси-серер настроен правильно и работает без перебоев.
2. Устанавливаем web-сервер. Процедура установки зависит от платформы. Под Windows можно воспользоваться даже Denwer-ом.
3. Распаковываем файлы статиста. Архив помещаем в www-директорию сервера.
4. Залезаем в файл statist.php — здесь нам нужно указать полный путь к файлу логов, и настроить параметры соединения с сервером базы данных.

$filename = 'd:/squid/logs/access.log';
$sql_server = 'localhost';
$sql_dbname = 'statist';
$sql_dbuser = 'root';
$sql_passwd = '';

5. Конфигурируем cron. Для Windows требуется сперва установить nnCronLite. Настройки делаются в cron.tab. У меня там стоит строчка:

0 0 * * * "d:/php/php.exe d:/server/home/statist/www/statist.php"

Эта строчка отвечает за запуск статиста в полночь каждый день. Кроме этого, в автозапуске системы числится bat-файл со схожим текстом:

d:/php/php.exe d:/server/home/statist/www/statist.php

Таким образом, если сервер отключается на некоторое время и не обновляет статистику в полночь, то она будет обнвлена при запуске.
Внимание! Следите за тем, чтобы mysql-демон запускался до того, как выполнится эта команда!
6. Конфигурируем веб-интерфейс. Для этого редактируем файл core/config.php и устанавливаем наши настройки сервера базы данных.
В файле core/settings.php проводим настройки администраторов:

$users = array (
	"admin"		=> array("user_login" => "admin", "user_pass" => md5('admin')),
	"user"		=> array("user_login" => "user", "user_pass" => md5('user')),
	"medved"	=> array("user_login" => "medved", "user_pass" => md5('preved')),
);

Данные в этой строке меняем на интересующие нас. Администраторов может быть сколько угодно.
Чтобы настроить типы машин, лезем в языковой файл lang_russian.php и редактируем блок кода:

'levels' => array(
	'admin'		=> 'Администраторские компьютеры и сервер',
	'prepod'	=> 'Преподаватели и кафедры',
	'student'	=> 'Студенты',
	'reserved'	=> 'Дополнительные адреса - ограниченый доступ',
	'restrict'	=> 'DHCP-адреса - закрытый доступ',
),

7. Статист готов к работе!

Данная программа распространяется бесплатно. Условие только одно — если Вы вносите какие-либо доработки и изменения в программу, обязательно уведомите автора!

Если будут возникать какие-либо вопросы, обращайтесь! Контактные данные указаны на сайте.