Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» LightSquid

Автор: ginger
Дата сообщения: 01.02.2006 10:18
LightSquid

LightSquid - lite and fast log analizer for squid proxy

Текущая версия 1.8 Изменения
Домашняя страница автор Сергей Ерохин (Sergey Erokhin).

LightSquid маленькая и быстрая программка сбора статистики работы пользователей через прокси-сервер Squid, является альтернативой SARG, представляет собой набор из нескольких скриптов написанных на языке программирования perl.

Требования:

Apache
Perl
Perl-GD2 (если необходимы графики)
Squid
Cron

[more=Установка.]

Переходим во временный каталог.
# cd /tmp

Скачиваем LightSquid.
# wget -c http://citkit.dl.sourceforge.net/sourceforge/lightsquid/lightsquid-1.6-beta.tgz

Распаковываем архив.
# tar xzpf lightsquid-1.6-beta.tgz

Переходим в каталог с распакованными файлами и приступаем к редактированию необходимых файлов.
# cd lightsquid-1.6-beta
# sed -i 's|/var/www/html/lightsquid/lang|/usr/share/lightsquid/lang|g' lightsquid.cfg
# sed -i 's|/var/www/html/lightsquid/tpl|/usr/share/lightsquid/tpl|g' lightsquid.cfg
# sed -i 's|/var/www/html/lightsquid/ip2name|/usr/share/lightsquid/ip2name|g' lightsquid.cfg
# sed -i 's|/var/www/html/lightsquid/report|/var/lib/lightsquid|g' lightsquid.cfg
# sed -i 's|require "ip2name|require "$ip2namepath|g' lightparser.pl
# sed -i 's|lightsquid.cfg|/etc/lightsquid/lightsquid.cfg|g' bigfiles.cgi day_detail.cgi get.cgi graph.cgi group_detail.cgi index.cgi month_detail.cgi topsites.cgi user_detail.cgi user_month.cgi user_time.cgi whousesite.cgi check-setup.pl common.pl lightparser.pl
# sed -i 's|common.pl|/usr/share/lightsquid/common.pl|g' bigfiles.cgi day_detail.cgi get.cgi graph.cgi group_detail.cgi index.cgi mont
h_detail.cgi topsites.cgi user_detail.cgi user_month.cgi user_time.cgi whousesite.cgi check-setup.pl common.pl lightparser.pl
# sed -i 's|/etc/squid/users.txt|/etc/lightsquid/users.txt|g' ip2name/ip2name.demo ip2name/ip2name.dns ip2name/ip2name.list ip2name/ip2name.simple ip2name/ip2name.squidlist ip2name/ip2name.squidlist2

Создаем необходимые каталоги и копируем файлы.
# mkdir -m755 /etc/lightsquid
# mkdir -p -m755 /usr/share/lightsquid/lang /usr/share/lightsquid/ip2name /usr/share/lightsquid/tpl
# mkdir -m 755 /var/lib/lightsquid
# mkdir -m 755 /home/httpd/html/lightsquid
# mkdir -m 755 /home/httpd/cgi-bin/lightsquid
# install -m 755 lightparser.pl /usr/sbin/
# install -m 644 lightsquid.cfg /etc/lightsquid/lightsquid.cfg
# install -m 644 group.cfg /etc/lightsquid/group.cfg
# install -m 644 realname.cfg /etc/lightsquid/realname.cfg
# install -m 644 common.pl /usr/share/lightsquid/
# install -m 755 check-setup.pl /usr/share/lightsquid/
# install -m 644 lang/bg.lng lang/eng.lng lang/fr.lng lang/hu.lng lang/it.lng lang/pt_br.lng lang/ru.lng lang/sp.lng /usr/share/lightsquid/lang/
# install -m 644 ip2name/ip2name.demo ip2name/ip2name.dns ip2name/ip2name.list ip2name/ip2name.simple ip2name/ip2name.squidlist ip2name/ip2name.squidlist2 /usr/share/lightsquid/ip2name/
# cp -aRf tpl/base tpl/ric_1.6b-0.2 /usr/share/lightsquid/tpl/
# install -m 755 bigfiles.cgi day_detail.cgi get.cgi graph.cgi group_detail.cgi index.cgi month_detail.cgi topsites.cgi user_detail.cgi user_month.cgi user_time.cgi whousesite.cgi /home/httpd/cgi-bin/lightsquid/
# mkdir -m 755 /usr/share/doc/lightsquid-1.6
# cp -prL doc/graph.txt doc/install.txt doc/logformat.txt doc/readme.txt doc/templates.txt doc/thanks.txt doc/version.txt /usr/share/doc/lightsquid-1.6
# chown httpd.httpd /var/lib/lightsquid
# chown -R httpd.httpd /home/httpd/cgi-bin/lightsquid

Теперь нам необходимо создать index.html файл, в котором мы пропишем переадресацию в каталог /home/httpd/cgi-bin/lightsquid.
# touch /home/httpd/html/lightsquid/index.html
# vi /home/httpd/html/lightsquid/index.html
<html>
<head>
<title>LightSquid - lite log analizer for squid proxy.</title>
<meta http-equiv="refresh" content="0; url=http://192.168.3.4/cgi-bin/lightsquid/index.cgi" />
</head>
<body>
Please wait while we redirect you to our LightSquid page.
</body>
</html>

Файлы конфигурации у меня выглядят следующим образом:
### /etc/lightsquid/lightsquid.cfg ###
$tplpath ="/usr/share/lightsquid/tpl";
$langpath ="/usr/share/lightsquid/lang";
$reportpath ="/var/lib/lightsquid";
$logpath ="/var/log/squid/";
$ip2namepath ="/usr/share/lightsquid/ip2name";
$debug = 0;
$debug2 = 0;
$squidlogtype = 0;
$skipurl = "zzz\.zzz";
$ip2name="dns";
%month2dec = ( Jan => 1, Feb => 2, Mar => 3, Apr => 4, May => 5,Jun => 6,
Jul => 7, Aug => 8, Sep => 9, Oct => 10, Nov => 11,Dec => 12);
$timereport = 1;
$lang ="eng";
$templatename ="base";
$DecOutType="class";
$decdelimiter = " ";
$showgrouplink = 1;
$showoversizelink = 1;
$userealname=1;
$bigfilelimit = 2*1024*1024;
$perusertrafficlimit = 10*1024*1024;
$weekendmode="both";
$topsiteslimit = 500;
$usertimelimit = 200;

$graphreport = 1;
$graphmaxuser=0.05*(1024*1025*1024);
$graphmaxall =1.00*(1024*1025*1024);
$barcolor="orange";

Файлы group.cfg и realname.cfg у меня пустые, я пока не совсем разобралась для чего они нужны.

Напоследок нам необходимо проверить правильность нашей установки:
# /usr/share/lightsquid/check-setup.pl
LightSquid Config Checker, (c) 2005 Sergey Erokhin GNU GPL

LogPath : /var/log/squid/
reportpath: /var/lib/lightsquid
Lang : /usr/share/lightsquid/lang/eng
Template : /usr/share/lightsquid/tpl/base
Ip2Name : /usr/share/lightsquid/ip2name/ip2name.dns

all check passed, now try access to cgi part in browser

Если у Вас тот же результат что и у меня, следовательно вы сдали все правильно.

Для получения статистики необходимо выполнить /usr/sbin/lightparser.pl который сформирует отчеты в /var/lib/lightsquid каталог, после чего зайдя браузером по адресу где у вас расположен lightsquid, [no]http://< proxy >/lightsquid/[/no] можно лицезреть созданные отчеты.

Для автоматического формирования отчетов, можно прописать запуск lightparser скрипта в crontab, для этого выполним:

# crontab -e
*/55 * * * * httpd /usr/sbin/lightparser.pl

По окончанию установки нам необходмо удалить ненужные файлы.
# rm -rf /tmp/lightsquid-1.6-beta*[/more]
Автор: sasku
Дата сообщения: 01.02.2006 11:54

Цитата:
является альтернативой SARG,

хоть бы отчеты поменял, что ли:-\
Автор: ginger
Дата сообщения: 01.02.2006 12:59
sasku

Цитата:
хоть бы отчеты поменял, что ли:-\

Я не являюсь автором программы, к тому же я не он, а она.
Что касается отчетов, имеются templates, которые можно менять и создавать новые по своему желанию... соответственно и вид иной будет.

Ах, да и еще, lightsquid не требует компиляции, да и места занимает меньше на диске.
Автор: lightsquid
Дата сообщения: 15.02.2006 13:07
Привет Народ
как человек близкик к созданию, отвечу

не нравится дезигн, там реализован механизм темплейтов
смотри что есть, делай свои

вопросы, предложения ?

из остальных плюсов, больше отчетов, имхо более информативных
несколько интереснее графики
да и дописывать к немк свои фичи - проще.

Автор: Coolmax
Дата сообщения: 21.04.2006 08:20
А можно сделать так чтоб в детализации по юзеру ссылка с домена шлна на расшифровку запрошенных УРЛов? Т.е. не на сам сайт, а на список страниц/файлов запрошенных с этого домена.
Автор: lightsquid
Дата сообщения: 25.04.2006 00:53
сделать можно все.
но к сожалению за все надо платить
в данном случае, для реализации этой штуки надо хранить ВЕСЬ лог файл
а надо это имхо ну ОЧЕНЬ редко.
т.е. оно того не стоит.

все эти рассуждение имеют отношение именно к лайтсквиду, и его идеи
быть простым, и занимаит как можно меньше ресурсов.

для этой фичи - поищи другие анализаторы, они есть
но для них обычно нужна SQL база, e.t.c ....

Автор: w3d
Дата сообщения: 09.06.2006 06:46
А никто не делал на его основе систему ограничения трафика?
Автор: lightsquid
Дата сообщения: 09.06.2006 11:45
конечно сделали

прям на шеле ....
вот письмо от одного из юзеров,
огромное ему спасибо ...



Нужно создать каталог, в директории апачевских документов в каталоге
где лежит lightsquid. У меня это kachki, переменная prefix.
Переменная path это путь к отчётам lightsquid'а. netdom это то по чему
выбираются файлы с отчётами, просто у меня сначала не работал ip2name
а затем я пропарсил лог снова и получились файлы с ip хостов и их
названиями, но в них одно и тоже, поэтому netdom может быть или 10.1
например или aqua.com то есть то что нужно.
Скрипт в каталоге prefix создаёт 2 файла: один 200605 например и
другой blacklist. В 200605 общий трафик всех пользователей за месяц, а
blacklist - список хостов превысивщих limit.
У меня ip2name=dns поэтому в конце так, если ip2name=simple можно
сделать по другому.


----------------
#!/bin/bash

limit=100
prefix=/var/www/localhost/htdocs/squid/kachki/
path=/var/www/localhost/htdocs/squid/report/
netdom=aqua.com

report=$prefix/`date +%Y%m`
temp=$prefix/kachki.temp
blacklist=$prefix/blacklist
year=`date +%Y`
month=`date +%m`

rm $report >/dev/null 2>&1
rm $blacklist >/dev/null 2>&1

ls $path | while read dir
do
if echo $dir | grep $year$month >/dev/null 2>&1; then
ls $path/$dir | while read file
do
if echo $path/$dir/$file | grep $netdom >/dev/null 2>&1
then
was=`grep $file $report 2>/dev/null | awk '{print $2}'`
new=`grep total $path/$dir/$file | awk '{print $2}'`
grep -v $file $report 2>/dev/null > $temp
echo $file $(($was+$new)) >> $temp
mv $temp $report
fi
done
fi
done

cat $report | while read line
do
traf=`echo $line | awk '{print $2}'`
if (( "$traf" > "$limit*1024*1024" ))
then
echo $line | awk '{print $1}' >> $blacklist
fi
done

# Esli ip2name=dns
cat $blacklist | while read host
do
nslookup $host | tail -n 2 | head -n 1 | awk '{print $2}' >> $temp
done
mv $temp $blacklist

----------------

Автор: w3d
Дата сообщения: 09.06.2006 17:13
А вот не работает!
Автор: lightsquid
Дата сообщения: 09.06.2006 17:41
проверяй руки.sys
Автор: w3d
Дата сообщения: 09.06.2006 17:46
Угу.
Сам запусти, и как отработает?
Автор: lightsquid
Дата сообщения: 13.06.2006 18:59
да, с помощью небольшого напильника ....

вот моя вариация на эту тему

создает файл для ТЕКУЩЕГО дня

#!/usr/bin/perl
#
# LightSquid Project (c) 2004-2005 Sergey Erokhin aka ESL
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# detail see in gnugpl.txt


#create file $todaybiguser contain all user nick who TODAY exceed $perusertrafficlimit

$todaybiguser="/var/www/html/lightsquid/kachki/kachki.txt";

use File::Basename;push (@INC,(fileparse($0))[1]);
require "lightsquid.cfg";
require "common.pl";
unlink $todaybiguser;
open BIGUSER,">","$todaybiguser" or die "can't create file $todaybiguser\n";
($sec_,$min_,$hour_,$mday_,$mon_,$year_,$wday_,$yday_,$isdst_)=localtime();$mon_++;$year_+=1900;
$year =sprintf("%04d",$year_);$month =sprintf("%02d",$mon_);$day =sprintf("%02d",$mday_);
$daypath="$reportpath/$year$month$day";
open FF,"<$daypath/.total";
$totaluser=<FF>;chomp $totaluser;$totaluser=~s/^user: //;
$totalsize=<FF>;chomp $totalsize;$totalsize=~s/^size: //;
while (<FF>) {
($user,$size,$hit)=split;
next if ($size < $perusertrafficlimit);
print BIGUSER "$user\n";
}
close FF;
close BIGUSER;

для месяца - тоже можно сделать ...
Автор: w3d
Дата сообщения: 14.06.2006 12:41
А как его запускать?
Автор: lightsquid
Дата сообщения: 14.06.2006 16:57
положить в директорию к lightsquid
дать права на запуск
каказть имя выходного файла
пустить (можно по крону)
Автор: w3d
Дата сообщения: 14.06.2006 17:46
kachki.pl: =/wwa/cgi/addons/ls/kachki/kachki.txt: No such file or directory
kachki.pl: 17: Syntax error: word unexpected (expecting ")")
[root@Freesco] ls /wwa/cgi/addons/ls/kachki
kachki.txt
Автор: w3d
Дата сообщения: 20.06.2006 13:38
Работает!
А как сделать за месяц?
Автор: lightsquid
Дата сообщения: 22.06.2006 18:33
дописать скрипт
Автор: w3d
Дата сообщения: 11.07.2006 06:16
Что-то у меня ls стал неправильно считать...
Такое ощущение, что часть лога просто пропускает ((
ls 1.6 beta
Автор: w3d
Дата сообщения: 13.07.2006 11:55
Скрипт блокирования за месяц:

Код: #!/usr/bin/perl
#
# LightSquid Project (c) 2004-2005 Sergey Erokhin aka ESL
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# detail see in gnugpl.txt
# Show mont user list

use File::Basename;
push (@INC,(fileparse($0))[1]);

require "lightsquid.cfg";
require "common.pl";

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime;
$year=sprintf("%02d",$year+1900);
$month=sprintf("%02d",$mon+1);

$filter="$year$month";

@daylist=glob("$reportpath/$filter*");

foreach $daypath (sort @daylist) {
open FF,"<$daypath/.total";
# GetRealName($daypath,"?"); # init realname for day
while (<FF>) {
($user,$size,$hit)=split;
$h{$user}{size}+=$size;
$h{$user}{hit}+=$hit;
}
close FF;
}

open FF,"</usr/local/squid/limit";
while (<FF>) {
($user,$limit)=split;
$tt{$user}{limit}=$limit;
}
close FF;

open FF,">","/usr/local/squid/blocked_users";

foreach $user (sort {$h{$b}{size}<=>$h{$a}{size}} keys     %h) {
print FF ("$user\n") if ($h{$user}{size} > $tt{$user}{limit});
}
close FF;

exec '/usr/local/squid/sbin/squid -k reconfigure'
Автор: PVVolt
Дата сообщения: 15.09.2006 14:01
У меня squid настроен так, что каждый час он создает новый лог-файл. Можно ли приспособить lightsquid под такую систему, не внося особых изменений в код?
Автор: w3d
Дата сообщения: 16.09.2006 07:22
Поменяй маску файла в lightparser.pl
Автор: ginger
Дата сообщения: 16.09.2006 09:26
PVVolt

Цитата:
У меня squid настроен так, что каждый час он создает новый лог-файл. Можно ли приспособить lightsquid под такую систему, не внося особых изменений в код?

Если для ротации журнала вы используете logrotate, то достаточно в правилах для squid добавить соответсвующюю строку касательно lightsquid.
Например:

Код:
/var/log/squid/access.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
prerotate
/usr/sbin/lightparser.pl
endscript
postrotate
/usr/sbin/squid -k rotate
endscript
}
Автор: PVVolt
Дата сообщения: 17.09.2006 15:15
Просто я попробовал натравить lightparser на 24 файла с логами и он мне посчитал всего 430 Мб трафика вместо 12-13 Гб. Подозреваю, что это только за последний час. Это я сделал что-то не так или lightsquid действительно стирает всю предыдущую информацию, если запустить в тот же день на новом файле?
Автор: w3d
Дата сообщения: 18.09.2006 05:49
Да, он формирует новые данные.
У меня сделано ротирование раз в месяц, а запускается так:
lightparser.pl today
и все отлично считается (каждые 20 минут)
access.log около 100 МБ за месяц.
Автор: PVVolt
Дата сообщения: 18.09.2006 09:50
А как посчитать не с параметром today, а с датой. Например, за 8-ое сентября (сейчас самое актуальное). Может, тогда не будет этого глюка?
Автор: w3d
Дата сообщения: 18.09.2006 10:23
Ну а разница-то?
В lightparser.pl указан скажем файл access.log
Вся информация о трафике хранится в каталоге ГГММДД
После ротирования (каждый час) файл меняется, но каталог для хранения инфы тот же, и файлы в этом каталоге перезаписываются (причем информацией из последнего access.log)
Как вариант могу предложить ротацию раз в сутки.

Добавлено:
Еще вариант - в lightparser.pl указать access.log.*
Автор: PVVolt
Дата сообщения: 18.09.2006 11:13
Вопрос снят. Автор сказал, что работа с такими лог-файлами невозможна - ротация должна быть максимум раз в сутки. Всем спасибо за ответы.
Автор: vworld
Дата сообщения: 10.10.2006 14:15
а как на винде замутить работы этой софтины?
Автор: w3dhome
Дата сообщения: 10.10.2006 17:42
На винде для этого существует прога wrspy.
www.wrspy.ru
Автор: vworld
Дата сообщения: 11.10.2006 14:24
w3dhome
спасибо как сам не подумал?
ведь пробовал его юзать под WinRoute конечно не понравился Интернетакссесмонитор имхо лучше
и кстати в описалове написано что частичная потдержка сквида

Страницы: 1234567891011121314

Предыдущая тема: Какой кабель использовать для VDSL


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.