Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> Lightsquid

Lightsquid - анализатор(парсер) логов Squid, OOPS на FreeBSD 7.1 + lighttpd, apache13

Автор: gx_ua.


небольшое обновление статьи http://www.lissyara.su/?id=1592 by Morty
сорри за грамматику

1. Установка
2. Конфигурационные файлы и ip2name
3. Алиасы для lighttpd, apache13
4. Запуск


WWW: http://lightsquid.sourceforge.net/

Пару слов :
 Дома стоит squid  с sams для раздачи интернет. Частично lightsquid может заменить sams : быстрая и простая инсталляция, быстрый парсер ,cgi скрипт для динамической генерации отчета, нет привязки к БД, различные графические отчеты, мультиязычный интерфейс.Другие альтернативы - SARG, Calamaris

1. Установка
Обновите порты

# cd /usr/ports/www/lightsquid/
# make install clean

Выбираем предлагаемый единственный пункт

Для графических отчетов нужна эта библиотека:
http://www.boutell.com/gd/
http://search.cpan.org/~lds/GD/

[X] GDSUPPORT

****************************************************************************
Read /usr/local/share/doc/lightsquid/readme.txt.
Edit /usr/local/etc/lightsquid/lightsquid.cfg to suit your needs.
****************************************************************************

Многое установилось в  /usr/local/www/lightsquid - web часть

.htaccess, graph.cgi, tpl , bigfiles.cgi, group_detail.cgi, user_detail.cgi, check-setup.pl, index.cgi, user_month.cgi, common.pl, user_time.cgi, day_detail.cgi, month_detail.cgi, whousesite.cgi, fixreport.pl, report, get.cgi, topsites.cgi              
lightparser.pl         - парсер логов

Языки file:///usr/local/share/lightsquid/lang
Локальная документация  file:///usr/local/share/doc/lightsquid/

И конфигурационные файлы в /usr/local/etc/lightsquid/

group.cfg            lightsquid.cfg       realname.cfg         skipuser.cfg
group.cfg.dist       lightsquid.cfg.dist  realname.cfg.dist    skipuser.cfg.dist

# pkg_info -Ix lightsquid
lightsquid-1.7.1_1  A light and fast web based squid proxy traffic analyser

2. Конфигурационные файлы и ip2name


lightsquid.cfg :

# -------------------- Глобальные переменные  ---------------------------

#путь к `cfg` файлам
$cfgpath             ="/usr/local/etc/lightsquid";
#путь `tpl` папке - шаблонам
$tplpath             ="/usr/local/www/lightsquid/tpl";
#путь к `lang` папке - языки
$langpath            ="/usr/local/share/lightsquid/lang";
#путь к `report` папке - отчеты
$reportpath          ="/usr/local/www/lightsquid/report";
#путь к access.log  - где логи squid, oops ...
$logpath             ="/usr/local/squid/logs/";
#путь к `ip2name` папке - преобразование ip в имена
$ip2namepath         ="/usr/local/libexec/lightsquid";

#путь к `lockfile` ;-)
$lockpath            =$reportpath;

# если lockfile старше  $maxlocktime секунд, удалить старый lock file.
$maxlocktime         = 30*60;

# -------------------- LightParser переменные  ---------------------------
#lightsquid поддерживает 2 типа логов : родной и httpd
#если родной squid-кий формат - должно быть 0
#если EmulateHttpdLog ON - выставте 1
#
$squidlogtype        = 0;

#если вы хотите не учитывать статистику с некоторых сайтов  - измените переменную
#Предупреждение !!!, не оставляйте эту переменную пустой !!!
#example, if you want skip LOCAL site, put it here
#$skipurl             = "zdd.com|192\.168\.1\.|cnn.com";
$skipurl             = "zzz\.zzz";

#Использование ip2name - для преобразования ip в имена

$ip2name="simple";

#используется если нада конвертить text в число  - при EmualteHttpdLog
%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;

# -------------------- Веб переменные---------------------------------------

# язык (lдоступные: bg,eng,fr,hu,it,pt_br,ru,sp)
$lang                ="ru";

#имя html шаблонов
#смотри `tpl/$templatename/`
$templatename        ="base";
#$templatename        ="ric";
#$templatename        ="base.css";

#определенные типы вывода чисел
#fine  123456789 -> 123,456,789
#class 123456789 ->       117.7 G
$DecOutType="class";

# = " " -> 12 345 678
# = "," -> 12,345,678
# = ""  ->   12345678
$decdelimiter        = " ";

#если надо Group режим установите =1
$showgrouplink         = 1;

#если не 0 - выглядит так "01. Group1", если 0 - "Group1"
$showgroupid         = 1;

$showoversizelink    = 1;


#использование .realname файлов. См Дальше
$userealname         = 1;

#большие файлы  - с 500Мб
$bigfilelimit        = 500*1024*1024;

#лимит для пользователей - 1000Мб
$perusertrafficlimit = 1000*1024*1024;

# недельный режим отображения
# both - select sunday & monday
# monday - only monday
$weekendmode="both";

#как много сайтов показывать TopSites отчете
$topsiteslimit       = 500;

#как много сайтов показывать в user time отчете
$usertimelimit       = 500;

 
#если вам надо графический отчет установите =  1
#WARNING !!!, нужна, GD.PM , ту которую мы отметили перед сборкой!!!
#запустите check-setup.pl для определения библиотеки !!!!
$graphreport         = 1;

#максимальное значение на графике
# для пользователя за месяц (0.05*(...) = 50mb)
$graphmaxuser=2*(1024*1024*1024);
#для всех пользователей за месяц (1.05*(...) = 1 Gb)
$graphmaxall =2*(1024*1024*1024);

# темы для графиков, доступные :"orange","blue","green","yellow","brown","red"
$barcolor="blue";

Обьединить пользователей в группы и смотреть отчёты по группе
# ee /usr/local/etc/lightsquid/group.cfg 
192.168.0.63     01      gx-grp
192.168.0.197  02       nata-grp
192.168.0.195     01      gx-grp

после изменений перепарсите :
# /usr/local/www/lightsquid/lightparser.pl      
# cd /usr/local/www/lightsquid/ && ./check-setup.pl

---

Далее ip2name - преобразование ip в имена

правим lightsquid.cfg :

$ip2name       = "list";
$showgrouplink = 1;
$userealname   = 1;

В /usr/local/libexec/lightsquid/ip2name.list изменяем :
my $ipfile = "/usr/local/www/lightsquid/users.txt";

# :>/usr/local/www/lightsquid/users.txt
# cat /usr/local/www/lightsquid/users.txt
192.168.0.63    gxpda
192.168.0.197   nata
192.168.0.195   gxlaptop

Теперь в group.cfg нужно заменить все IP адреса на соответственние им имена компьютеров, а в файле realname.cfg сопоставить эти имена с реальными людьми:

# cat /usr/local/etc/lightsquid/group.cfg
gxpda     01      gx-grp
nata  02       nata-grp
gxlaptop     01      gx-grp

# cat /usr/local/etc/lightsquid/realname.cfg
gxpda     gx1-pda user name
nata      nata user
gxlaptop  gx2 -laptop user name

после изменений перепарсите :
# /usr/local/www/lightsquid/lightparser.pl      
# cd /usr/local/www/lightsquid/ && ./check-setup.pl

Скрины:
Lightsquid:



ip2name


Пример графического отчета:


А это sams:






3. Алиасы для lighttpd, apache13

Добавте нужные алиасы в нужные секции для вашего апача или лайти:

Apache13

Alias /lightsquid "/usr/local/www/lightsquid"
   <Directory "/usr/local/www/lightsquid">
       AddHandler cgi-script .cgi
       AllowOverride All
    </Directory>


#apachectl restart

Для lighttpd-1.4.21_2

Исправьте такое в lighttpd.conf:

alias.url+=("/lightsquid/" => "/usr/local/www/lightsquid/")
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm", "index.cgi" )

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi" )

cgi.assign = (
".pl" => "/usr/bin/perl",
".cgi" => "/usr/bin/perl"
)

и "mod_cgi" в server.modules
 Для PHP не забудьте установить cgi.fix_pathinfo = 1 в php.ini.
# /usr/local/etc/rc.d/lighttpd restart

4. Запуск

сделайте рестарт web-servera

проверяем конфиги:
# cd /usr/local/www/lightsquid/ && ./check-setup.pl
LightSquid Config Checker, (c) 2005 Sergey Erokhin GNU GPL

LogPath   : /usr/local/squid/logs/
reportpath: /usr/local/www/lightsquid/report
Lang      : /usr/local/share/lightsquid/lang/ru
Template  : /usr/local/www/lightsquid/tpl/base
Ip2Name   : /usr/local/libexec/lightsquid/ip2name.list

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

Вручную парсим логи:
# /usr/local/www/lightsquid/lightparser.pl

Crontab(каждые 30 мин) :



*/30 * * * * /usr/local/www/lightsquid/lightparser.pl



размещено: 2009-03-24,
последнее обновление: 2009-05-26,
автор: gx_ua


arksu, 2009-03-25 в 8:20:42

весьма симпатично.
почти SARG...(в смысле похожести, функционала у SARG поменьше будет)

-=AmoN=-, 2009-03-25 в 22:12:12

Спасибо, помог , статья супер)))
З.Ы. ресурс - лучший! спс за все ))

vadiko, 2009-03-26 в 18:37:48

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

mazay, 2009-03-27 в 12:40:10

статью в раздел подсчет трафика скорее

mazay, 2009-03-27 в 13:09:45

lightsquid на самом деле малофункционален, хотя и удобен.
+ Простота настройки, использования
Недостаточный базовый функционал преподносится на сайте как фича
fast and simple install
fast log parser generatesmall per user data file
perl based cgi script for dynamic generated report pages
html template for design
no database required
no additional perl module
various reports
user groups support
graphics report (v 1.6+)
real name (v 1.6+)
multilangual interface

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

Но все решаемо: и изменение интерфейса, и работа с базой. Я привязал отчеты lightsquid к внутреннему jabber боту. Получается довольно удобно. Пишешь боту 'статистика' и получаешь ответ.

lightsquid, 2009-03-28 в 11:14:15

2mazay:
а поделится своими наработками с народом ????
включим в дистрибутив ...

з..ы. а какой лог анализер позволил бы такое сделать кроме lightsquid ;)

lightsquid, 2009-03-28 в 11:18:50

>Так, между тем... А как быть, если много пользователей и прошло достаточно много времени, может всю эту прелесть хранить в mysql?

нескромный вопрос, а зачем ?????
кому нужна статистика за прошлый год ?
да даже за два месяца назад ????

если можно - реальные примеры

и еще, а кто сказал что файловая система это не база данных ....
да - специальная, но оно в общем устраивает почти всегда ...
:)

mazay, 2009-03-30 в 20:36:33

>>а поделится своими наработками с народом ????
включим в дистрибутив ...

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

>>з..ы. а какой лог анализер позволил бы такое сделать кроме lightsquid ;)

ATSlog Программа для анализа логов (в том числе realtime) для миниАТС. Имеет возможность выдачи статистики только по звонкам одного пользователя. Описание есть на этом сайте

Эл, 2009-04-06 в 9:27:39

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

gx_ua, 2009-04-11 в 6:02:52

Эл,
возможно вы имели ввиду нечто похожее на это: http://silverghost.org.ua/2007/03/04/lightsquid-i-statistika-polzovateley/

Альфи, 2009-07-24 в 10:31:26

Страничка то может и хорошая только лучше бы он сделал авторизацию в АД для просмотра статистики а не определение по ИП, а то кривовато вышло

Sash, 2009-09-30 в 14:07:03

to Альфи
$ip2name=\"squidauth\"

и будет показывать логины из AD

Бублик, 2009-10-02 в 18:37:56

Как исключить из статистики машинку по ip? o_O

keks, 2009-10-26 в 10:19:32

исключить из статистики машинку по ip
/usr/local/etc/lightsquid/skipuser.cfg

Oleg, 2011-01-24 в 12:49:41

Одна неточность в статье в определении языка для FreeBSD:
---
# язык (lдоступные: bg,eng,fr,hu,it,pt_br,ru,sp)
$lang                ="ru";
---
Нужно указывать:
$lang                ="ru-koi8";
---
Иначе при указании групп пользователей и ФИО пользователей на русском, буквы будут выводится не в той кодировке. Язык ru это UTF-8 и подходит для Linux систем.

olbor, 2011-02-17 в 0:32:54

Очень удобно и просто в установке. Автору большое спасибо за статью!

ttys, 2011-11-21 в 21:26:38

2 Oleg
$lang                ="ru";
это ср1251 а не утф
для утф я через иконв перегнал ru.lng и в нём указал кодировку ту которая мне нужна, то есть utf-8



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1974 секунд
Из них PHP: 50%; SQL: 50%; Число SQL-запросов: 82 шт.
Исходный размер: 56120; Сжатая: 11336