Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » LightSquid

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Открыть новую тему     Написать ответ в эту тему

ginger



Рыжик
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

LightSquid - lite and fast log analizer for squid proxy

Текущая версия 1.8 Изменения  
Домашняя страница автор Сергей Ерохин (Sergey Erokhin).
 
LightSquid маленькая и быстрая программка сбора статистики работы пользователей через прокси-сервер Squid, является альтернативой SARG, представляет собой набор из нескольких скриптов написанных на языке программирования perl.
 
Требования:
 
Apache
Perl
Perl-GD2 (если необходимы графики)
Squid
Cron
 
Установка.

Всего записей: 854 | Зарегистр. 03-09-2001 | Отправлено: 11:18 01-02-2006 | Исправлено: zhe_zho, 18:28 27-01-2014
sasku



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

Всего записей: 413 | Зарегистр. 30-05-2002 | Отправлено: 12:54 01-02-2006
ginger



Рыжик
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sasku

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

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

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

Всего записей: 854 | Зарегистр. 03-09-2001 | Отправлено: 13:59 01-02-2006
lightsquid

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет Народ
как человек близкик к созданию, отвечу
 
не нравится дезигн, там реализован механизм темплейтов
смотри что есть, делай свои
 
вопросы, предложения ?
 
из остальных плюсов, больше отчетов, имхо более информативных
несколько интереснее графики
да и дописывать к немк свои фичи - проще.
 

Всего записей: 105 | Зарегистр. 15-02-2006 | Отправлено: 14:07 15-02-2006
Coolmax



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А можно сделать так чтоб в детализации по юзеру ссылка с домена шлна на расшифровку запрошенных УРЛов? Т.е. не на сам сайт, а на список страниц/файлов запрошенных с этого домена.

Всего записей: 19 | Зарегистр. 30-06-2003 | Отправлено: 09:20 21-04-2006
lightsquid

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сделать можно все.
но к сожалению за все надо платить
в данном случае, для реализации этой штуки надо хранить ВЕСЬ лог файл
а надо это имхо ну ОЧЕНЬ редко.
т.е. оно того не стоит.
 
все эти рассуждение имеют отношение именно к лайтсквиду, и его идеи
быть простым, и занимаит как можно меньше ресурсов.
 
для этой фичи - поищи другие анализаторы, они есть
но для них обычно нужна SQL база, e.t.c ....
 

Всего записей: 105 | Зарегистр. 15-02-2006 | Отправлено: 01:53 25-04-2006
w3d

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А никто не делал на его основе систему ограничения трафика?

Всего записей: 68 | Зарегистр. 07-08-2003 | Отправлено: 07:46 09-06-2006
lightsquid

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
конечно сделали
 
прям на шеле ....
вот письмо от одного из юзеров,  
огромное ему спасибо ...
 
 
 
Нужно создать каталог, в директории апачевских документов в каталоге
где лежит 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
 
----------------
 

Всего записей: 105 | Зарегистр. 15-02-2006 | Отправлено: 12:45 09-06-2006
w3d

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А вот не работает!

Всего записей: 68 | Зарегистр. 07-08-2003 | Отправлено: 18:13 09-06-2006
lightsquid

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
проверяй руки.sys

Всего записей: 105 | Зарегистр. 15-02-2006 | Отправлено: 18:41 09-06-2006
w3d

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Угу.
Сам запусти, и как отработает?

Всего записей: 68 | Зарегистр. 07-08-2003 | Отправлено: 18:46 09-06-2006
lightsquid

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да, с помощью небольшого напильника ....
 
вот моя вариация на эту тему
 
создает файл для ТЕКУЩЕГО дня
 
#!/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;
 
для месяца - тоже можно сделать ...

Всего записей: 105 | Зарегистр. 15-02-2006 | Отправлено: 19:59 13-06-2006
w3d

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как его запускать?

Всего записей: 68 | Зарегистр. 07-08-2003 | Отправлено: 13:41 14-06-2006
lightsquid

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
положить в директорию к lightsquid
дать права на запуск
каказть имя выходного файла
пустить (можно по крону)

Всего записей: 105 | Зарегистр. 15-02-2006 | Отправлено: 17:57 14-06-2006
w3d

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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

Всего записей: 68 | Зарегистр. 07-08-2003 | Отправлено: 18:46 14-06-2006
w3d

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Работает!
А как сделать за месяц?

Всего записей: 68 | Зарегистр. 07-08-2003 | Отправлено: 14:38 20-06-2006
lightsquid

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
дописать скрипт

Всего записей: 105 | Зарегистр. 15-02-2006 | Отправлено: 19:33 22-06-2006
w3d

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что-то у меня ls стал неправильно считать...
Такое ощущение, что часть лога просто пропускает ((
ls 1.6 beta

Всего записей: 68 | Зарегистр. 07-08-2003 | Отправлено: 07:16 11-07-2006
w3d

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скрипт блокирования за месяц:

Код:
#!/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'
 

Всего записей: 68 | Зарегистр. 07-08-2003 | Отправлено: 12:55 13-07-2006
PVVolt

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

Всего записей: 26 | Зарегистр. 03-08-2006 | Отправлено: 15:01 15-09-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » LightSquid


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru