Страница 1 из 1

Один lightsquid и два squid`а

Добавлено: 2009-01-27 15:20:40
EugeneSG
Может кто-то уже дала такое?
Смысл следующий: есть два офиса центральный и филиал, везде стоит squid нужно что бы статистика была по обоим офисам в одном месте.
Пробовал делать так:
1. Копируем файл лога филиала и с помощью "cat >>" сливаем с логом центрального офиса, потом отдаем полученное lightsquid. Получаем следующее: показывается статистика только центрального офиса, но в папке отчета есть файлы юзеров филиала.
2. Пробовал по очереди отдавать файлы lightsuiqd`у получаем статистику только последнего файла.

Вот собственно и вопрос, как сделать что бы статистика была двух squid`ов?

Re: Один lightsquid и два squid`а

Добавлено: 2009-01-27 15:38:54
Sla
а в параметрах запуска попробовать указать другой access.log?
#usage: lightparse.pl {param}
#if param omit - parse full access.log file
# today - only current day
# yesterday - yesterday
# data in format YYYYMMDD - parse day
# access.log.{\d}.{gz|bz2} - parse file (for process archived)

Re: Один lightsquid и два squid`а

Добавлено: 2009-01-27 16:21:47
EugeneSG
Sla писал(а):а в параметрах запуска попробовать указать другой access.log?
дык пробовал уже, смотри пункт 2.

Re: Один lightsquid и два squid`а

Добавлено: 2009-01-27 16:37:41
esl
Попробуйте отстортировать слитый файл ПЕРЕД lightparser :)

Re: Один lightsquid и два squid`а

Добавлено: 2009-01-28 0:13:42
EugeneSG
esl писал(а):Попробуйте отстортировать слитый файл ПЕРЕД lightparser :)
И как я сам не догодался... работает! С меня :drinks:

Re: Один lightsquid и два squid`а

Добавлено: 2009-01-28 12:39:48
esl
EugeneSG писал(а):
esl писал(а):Попробуйте отстортировать слитый файл ПЕРЕД lightparser :)
И как я сам не догодался... работает! С меня :drinks:
Будеш в Харькове - угостиш :)

Поделись пожалуйста временем сортировки ;)
размеры файлов/время сортировки, просто интенесно узнать

и еще, если в обоих логах будут одинаковые юзера, они будут считаться как один, имейте в виду

и написал тут скриптик для более умного? слияния ....
можно потестировать ...
имена что сливать в @flist
вывод на stdout ....

Код: Выделить всё

#!/usr/bin/perl
#
# LightSquid Project (c) 2004-2009 Sergey Erokhin aka ESL
# MultiLogMerger

@flist=qw(b1.log b2.log b3.log b4.log b5.log b6.log b7.log);

$MAX_INT=99999999999;

$filenum=$#flist+1;
$i=0;
foreach $name (@flist) {local *FILE;open FILE,"<","$name" or die "can't open file $name\n";$fHandle[$i++]=*FILE;}
for ($i=0;$i<$filenum;$i++) {UpdateFile($i);}

$run=1;
while ($run) {
  $run=0;$mint=$MAX_INT-1;$mini=-1;
  for ($i=0;$i<$filenum;$i++) {	if ($T[$i]<$mint) {$mint=$T[$i];$mini=$i;}}
  if ($mini != -1) {print $L[$mini];UpdateFile($mini);$run=1;}
}

for ($i=0;$i<$filenum;$i++) {close $fHandle[$i];}

sub UpdateFile($) {
	my $i=shift;$file=$fHandle[$i];
	unless (eof($file)) {$tmp=<$file>;$L[$i]=$tmp;($time,@rest)=split /\s/,$tmp;$T[$i]=$time;return 1;} 
        else {$T[$i]=$MAX_INT;return 0;}	
}