[img=doci/fre/freebsd-1157550189_i_5370_full.jpg]
LightSquid — быстрый анализатор логов squid на perl.
Необходимое ПО:
squid 2.x
apache 2.2 (1.3)
Установка из портов:
#cd /usr/ports/www/squidlight
#make install clean
После установки настраиваем файл конфигурации lightsquid.cfg:
Копируем папку lightsquid в папку /usr /local/www/apache22/data
# -------------------- GLOBAL VARIABLES ---------------------------
#path to `tpl` folder
$tplpath ="/usr/local/www/apache22/data/lightsquid/tpl";
#path to `lang` folder
$langpath ="/usr/local/www/apache22/data/lightsquid/lang";
#path to `report` folder
$reportpath ="/usr/local/www/apache22/data/lightsquid/report";
#path to access.log
$logpath ="/usr/local/squid/log"; #(Здесь будет лежать перекодированный access.log)
#path to `ip2name` folder
$ip2namepath ="/usr/local/www/apache22/data/lightsquid/ip2name";
#$skipurl = "zdd.com|192.168.0.|cnn.com";
$skipurl = "bsd.avto.yar.ru|192.168.0.215";
$lang ="ru_koi8";
По умолчанию в папке /lang находится файл ru.lng для cp1251 необходимо перекодировать его в koi8-r:
#iconv –f cp1251 –t KOI8-R ru.lng > ru_koi8.lng
Также можно поступить с файлами realname.cfg и group.cfg чтобы в браузере имена и группы корректно отображались на русском языке в koi8-r.
В /usr/local/etc/apache22/httpd.conf:
<Directory "/usr/local/apache22/data/lightsquid">
AddHandler cgi-script .cgi
AllowOverride All
</Directory>
Теперь остается проблема с записью русских логинов squid в файл access.log.
Чтобы исправить этот недостаток необходимо сделать финт ушами:
#cd/usr/ports/Russian/p5-cyrillic
#make install clean
Далее скачиваем еще 2 библиотеки:
#cd /usr/ports/distfiles
#fetch http://search.cpan.org/CPAN/authors/id/M/MS/MSCHWARTZ/Unicode-Map-0.112.tar.gz
#tar zxf Unicode-Map-0.112.tar.gz
#cd Unicode-Map-0.112.tar.gz
Делаем файл Makefile.PL исполняемым и запускаем его. После чего:
#make install clean
#cd ..
#fetch http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Unicode-String-2.09.tar.gz
И проделывает тоже самое с этим.
После чего дописываем в скрипт запуска lightsquid.pl следующий код:
#!/usr/bin/perl
$F=shift @ARGV || "access.log";
$file=shift @ARGV || "/usr/local/squid/log/access.log";
open(F,"<".$F) or die "Can't open file $file";
open (file,">".$file);
foreach (<F>)
{
$l=$_;
$l=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
print file $l;
}
close(F);
Теперь при запуске lightsquid.pl вначале будут перекодироваться русские имена в access.log, затем генериться отчеты.
Осталось прописать запуск этого скрипта в crontab и все.