LightSquid

Материал из СисадминВики (SysadminWiki.ru)
Перейти к: навигация, поиск

LightSquid (http://lightsquid.sourceforge.net) - анализатор журналов 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

Lightsquid1.png

рис.1. LightSquid. Начальная страница

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. Можно написать свой, но нам сейчас достаточно использовать имеющийся.

Lightsquid2.png

рис.2. LightSquid. Поддержка групп

Для того чтобы получить отчёт как на рис.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 небольшой скрипт по разбору этого файла.

Lightsquid3.png

рис.3. LightSquid. Популярные сайты

Запуская программу, мы получаем следующие отчёты:

  1. количество соединений и скаченных байт на день, на месяц и на год по каждому пользователю, для группы и для прокси-сервера в целом;
  2. популярные сайты дня, месяца (рис.7) и года. В этом отчёте приятно порадовала возможность сортировки списка по количеству запросов, либо по объёму данных;
  3. таблица времени доступа пользователя к сайтам, то есть время его активности в Интернете;
  4. отчёт о «больших» скаченных файлах.


  • Осталось автоматизировать генерацию отчётов путём добавления в /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.