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

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
EugeneSG
рядовой
Сообщения: 21
Зарегистрирован: 2007-09-29 21:31:34

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

Непрочитанное сообщение EugeneSG » 2009-01-27 15:20:40

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

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Sla
мл. сержант
Сообщения: 73
Зарегистрирован: 2008-08-19 15:09:19

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

Непрочитанное сообщение Sla » 2009-01-27 15:38:54

а в параметрах запуска попробовать указать другой 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)

EugeneSG
рядовой
Сообщения: 21
Зарегистрирован: 2007-09-29 21:31:34

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

Непрочитанное сообщение EugeneSG » 2009-01-27 16:21:47

Sla писал(а):а в параметрах запуска попробовать указать другой access.log?
дык пробовал уже, смотри пункт 2.

esl
рядовой
Сообщения: 14
Зарегистрирован: 2009-01-27 16:35:35

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

Непрочитанное сообщение esl » 2009-01-27 16:37:41

Попробуйте отстортировать слитый файл ПЕРЕД lightparser :)

EugeneSG
рядовой
Сообщения: 21
Зарегистрирован: 2007-09-29 21:31:34

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

Непрочитанное сообщение EugeneSG » 2009-01-28 0:13:42

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

esl
рядовой
Сообщения: 14
Зарегистрирован: 2009-01-27 16:35:35

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

Непрочитанное сообщение esl » 2009-01-28 12:39:48

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;}	
}
LightSquid author.
Homesite: http://lightsquid.sf.net