LightSquid
LightSquid (http://lightsquid.sourceforge.net) - анализатор журналов Squid.
- Демо страничка: http://lightsquid.sourceforge.net/demo16b/index.cgi?year=2005&month=04
- Понимает журналы только Squid
- Хочется особо отметить удобный интерфейс.
Установка и настройка LightSquid
Берём последнюю версию и распаковываем:
# tar -zxvf ./lightsquid-1.8.tgz
Создаём каталог, где будем хранить отчёты:
# mkdir -p /var/www/html/reports/lightsquid
Всё содержимое каталога lightsquid-1.8 копируем в созданный каталог. Если мы придерживаемся правила держать все исполняемые скрипты в отдельном каталоге (например в /usr/lib/cgi-bin/ как в Debian), то в созданный каталог копируем только каталоги doc и report, а остальное в каталог со скриптами (например /usr/lib/cgi-bin/lightsquid/). Меняем владельца на того, кто у нас в роли httpd-пользователя (например apache) и делаем скрипты исполняемыми файлами:
# chown -R apache.apache /var/www/html/reports/lightsquid # cd /var/www/html/reports/lightsquid # chmod +x *.cgi # chmod +x *.pl
В конфигурационном файле lightsquid.cfg меняем значения переменных:
#пути к настроечным файлам $cfgpath ="/var/www/html/reports/lightsquid"; $tplpath ="/var/www/html/reports/lightsquid/tpl"; $langpath ="/var/www/html/reports/lightsquid/lang"; $reportpath ="/var/www/html/reports/lightsquid/report"; $ip2namepath ="/var/www/html/reports/lightsquid/ip2name"; #путь к журналам Squid $logpath ="/var/log/squid/"; #какие сайты не учитывать в отчётах $skipurl = "zdd.com|192\.168\.1\.|cnn.com"; #язык отчётов $lang = "ru"; #определяем размер «большого файла» в 2Mb $bigfilelimit = 2*1024*1024; #показывать отчёт о пользователях, превысивших квоту $showoversizelink = 1; #устанавливаем квоту 10Mb (одна для всех). Квота не ограничивает доступ, #а указывается лишь для отображения пользователей превысивших её. $perusertrafficlimit = 10*1024*1024;
Проверяем все ли настройки сделаны правильно:
#./check-setup.pl
Если ругается на отсутсвие модуля CGI.pm, то доустанавливаем:
#apt-get install perl-CGI
Для отображения графиков должен быть установлен модуль GD
#apt-get install perl-GD2
Также доустановим поддержку Perl для Apache:
#apt-get install apache2-mod_perl
Настроим сам Apache. Если у нас несколько виртуальных хостов, то добавим эти строки в настройку соответсвующего хоста:
<Directory "/var/www/html/reports/lightsquid"> AddHandler cgi-script .cgi AllowOverride All </Directory>
Создаём отчёт:
# ./lightparser.pl
Проверим в браузере, что мы получили. Начальная страница отчёта должна быть как на рис.1
LightSquid поддерживает как родной формат журнала Squid, так и формат httpd.
Можно объединять пользователей в группы и смотреть отчёты по группе. Для этого в файле group.cfg определяем какой пользователь к какой группе относится:
192.168.10.1 01 Sysadmin 192.168.10.9 02 Managers 192.168.10.14 02 Operators 192.168.10.30 02 Operators 192.168.10.74 03 Managers
Можно вместо IP адресов выводить имя компьютера и каждому имени компьютера сопоставить реальное имя пользователя. Для первой цели автор программы предлагает либо использовать DNS, либо подставлять из списка. Скрипты, обрабатывающие файлы списков находятся в подкаталоге ip2name. Можно написать свой, но нам сейчас достаточно использовать имеющийся.
Для того чтобы получить отчёт как на рис.6 определяем в lightsquid.cfg следующие параметры:
$ip2name = "list"; $showgrouplink = 1; $userealname = 1;
В ./ip2name/ip2name.list меняем значение переменной:
sub StartUser() { my $ipfile = "/var/www/html/reports/lightsquid/users.txt";
и создаём указанный файл следующего содержания:
192.168.10.1 Myself 192.168.10.9 Bond 192.168.10.14 Bart 192.168.10.30 Ivan 192.168.10.74 Petrov
Теперь в group.cfg нужно заменить все IP адреса на сопоставленные им имена компьютеров, а в файле realname.cfg сопоставить эти имена с реальными людьми:
Myself sysadmin Bart Bart Simpson Ivan Ivan Ivanov Petrov Petrov Semen Semenovich Bond James Bond
Конечно, если у вас где-то ведётся свой список пользователей, то можно и лучше использовать его, написав для LightSquid небольшой скрипт по разбору этого файла.
Запуская программу, мы получаем следующие отчёты:
- количество соединений и скаченных байт на день, на месяц и на год по каждому пользователю, для группы и для прокси-сервера в целом;
- популярные сайты дня, месяца (рис.7) и года. В этом отчёте приятно порадовала возможность сортировки списка по количеству запросов, либо по объёму данных;
- таблица времени доступа пользователя к сайтам, то есть время его активности в Интернете;
- отчёт о «больших» скаченных файлах.
- Осталось автоматизировать генерацию отчётов путём добавления в /etc/crontab соответствующих заданий:
#Генерируем отчёты прокси сервера Squid */20 * * * * root /var/www/html/reports/lightsquid/lightparser.pl today
Конечно, частота обновления отчётов остаётся на ваше усмотрение. В приведённом примере LightSquid будет поддерживать свои отчёты в актуальном состоянии, обновляя их через каждые 20 минут. Sarg будет создавать свои один раз в день после ротации журналов, которую logrotate делает в полночь. А Calamaris будет запускаться с аналогичной задачей каждый день в 00:30, раз в неделю по понедельникам в 00:35 и первого числа каждого месяца в 00:45. В первых же числах он обновит свой журнал.
Ограничим доступ к отчётам только с определённых IP адресов. Для этого создаём файл /var/www/html/reports/.htaccess:
Options +Indexes Order deny,allow Deny from all Allow from 192.168.10.11 Allow from 192.168.10.17
Можно сделать доступ по паролю. Подробности по настройке доступа можно прочитать в статьи про Apache.