Strona 1 z 1

skuteczne przeszukiwanie duŻej ilości logów squida

: 24 lipca 2009, 11:30
autor: janowskm
Witam.

Jak można skutecznie przeszukiwać duże ilości skompresowanych logów squida, powiedzmy tak 200GB?

Pozdrawiam.

: 28 lipca 2009, 08:26
autor: sigo
Przeszukiwać pod względem konkretnych danych? Użyj grep-a.

: 28 lipca 2009, 08:31
autor: f1.micro
sigo, skompresowanych nie przeszuka grepem.

: 28 lipca 2009, 08:34
autor: sigo
Przez kilka dni nie pojawiło się jakiekolwiek rozwiązanie, zatem póki co, polecam używanie:

Kod: Zaznacz cały

zcat /file.gz | grep string
Podobny temat.
Więcej stron.

: 28 lipca 2009, 10:27
autor: janowskm
sigo pisze:Przez kilka dni nie pojawiło się jakiekolwiek rozwiązanie, zatem póki co, polecam używanie:

Kod: Zaznacz cały

zcat /file.gz | grep string
Ale taką ilość logów nie sposób przeszukiwać tym poleceniem, żeby wyszukać w 20GB logów czegokolwiek z pomocą polecenia grep zajęłoby miesiące.

Jest program sarg, ale bardziej odpowiednim chyba jest logrotate, ktoś używał tego?

Pozdrawiam.

: 28 lipca 2009, 15:08
autor: michnik
Osobiscie polecam rozwiązanie przekazywania logów do MySQL-a i przeszukiwanie ich za pomocą kilku SELECT-ów.
Aby nacieszyć oko można do tego dodać przeglądarkę wpisów SQL-a np: http://myclient.polarlava.com/
i myślę, że będzie o wiele wygodniej.

: 29 lipca 2009, 01:50
autor: Hardiel
Lub stworzyc wlasny wielowatkowy skrypt do przeszukiwania logow

: 03 sierpnia 2009, 14:56
autor: janowskm
michnik pisze:Osobiscie polecam rozwiązanie przekazywania logów do MySQL-a i przeszukiwanie ich za pomocą kilku SELECT-ów.
Aby nacieszyć oko można do tego dodać przeglądarkę wpisów SQL-a np: http://myclient.polarlava.com/
i myślę, że będzie o wiele wygodniej.
A możesz opisać bardziej szczegółowo jak to robisz?

Pozdrawiam.

: 03 sierpnia 2009, 18:27
autor: michnik
To czego potrzebujesz nazywa się

Kod: Zaznacz cały

SYSLOG-NG with pipe to MYSQL
Co jest potrzebne: Tworzenie bazy danych:
  • logujesz się jako użytkownik root do bazy:

    Kod: Zaznacz cały

     mysql -u root -p

    tworzysz bazę danych, do której będą spływać logi:

    Kod: Zaznacz cały

     CREATE DATABASE logi; 

    Kod: Zaznacz cały

     USE logi;
Później tworzysz sobie tabelę według opisu http://code.google.com/p/php-syslog-ng/ ... svn39&r=39

Kopiujesz poszczególne sekcje do konsoli tworząc tabelę.

Następnie w:

Kod: Zaznacz cały

/etc/syslog-ng/syslog-ng.conf
modyfikujesz sekcję:

Kod: Zaznacz cały

destination d_mysql
gdzie podajesz parametry logowania do bazy (tj. użytkownik, hasło itp.).

Kod: Zaznacz cały

destination d_mysql {

        program("/usr/bin/mysql --user=sysloguser --password=syslogpasswd db_log < /var/log/mysql.pipe");

        pipe ("/var/log/mysql.pipe" template("INSERT INTO logi (host, facility, priority, level, tag, datetime, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC','$PROGRAM', '$MSG' );\n") template-escape(yes));

};

log { source(s_all); destination(d_mysql); };

Oglądanie logów / wersja bez GUI /.

Z konsoli logujemy się do bazy MYSQL i wybieramy nasza bazę z logami

Kod: Zaznacz cały

 USE logi;
przykładowym zapytaniem może być np:

1. jakie adresy IP nadał nasz DHCP przez ostatnie 10 minut

Kod: Zaznacz cały

 select host, datetime, msg from logi where program='dhcpd' and datetime > DATE_ADD(CURRENT_TIMESTAMP, INTERVAL -10 MINUTE); 
2. kto łączył się do nas przez VPN`y

Kod: Zaznacz cały

 select host, datetime, msg from logi where ((program='pluto' and msg like '%Main mode peer ID is%CN%') or (program='pppd' and msg like '%remote IP address%')) and datetime > '09-05-01'; 
Same zapytania tworzymy wg własnego uznania i za pomocą CTRL C - CTRL V szybko wyłowimy to co nam potrzebne.

Dla każdego serwera dobrze jest stworzyć osobną bazę i w taki sposób można scentralizować logowanie wszystkich posiadanych serwerów.

Co do GUI to proponuje wg własnego gustu wybrać dowolna nakładkę na MySQLa`a która potrafi wyświetlać zadane zapytania na stronie WWW lub napisać własny kawałek HTML`a i po sprawie :)

Dodam, że konfigurację piszę z głowy i mogłem popełnić gdzieś błąd więc poprawcie mnie jeśli coś znajdziecie nie tak.

: 05 sierpnia 2009, 13:21
autor: janowskm
Wiesz co, nie bardzo mi działa ta baza z logami.

syslog-ng wrzuca logi do /var/log/mysql.pipe - utworzyłem ten plik i nadałem prawa 777, ale logi nie zostają wrzucone do bazy mysql.
Wykonuję:

Kod: Zaznacz cały

select * from logi
i dostaje pusty.

Po zmianach przeładowywałem mysql i syslog-ng ale nadal nie działa, w czym tkwi problem?

[ Dodano: 2009-08-05, 14:41 ]
janowskm pisze:Wiesz co, nie bardzo mi działa ta baza z logami.

syslog-ng wrzuca logi do /var/log/mysql.pipe - utworzyłem ten plik i nadałem prawa 777, ale logi nie zostają wrzucone do bazy mysql.
Wykonuję:

Kod: Zaznacz cały

select * from logi
i dostaje pusty.

Po zmianach przeładowywałem mysql i syslog-ng ale nadal nie działa, w czym tkwi problem?
już działa, trzeba utworzyć pipe fifo:
mkfifo /var/log/mysql.pipe
i był u Ciebie błąd:
program("/usr/bin/mysql --user=sysloguser --password=syslogpasswd db_log < /var/log/mysql.pipe")
powinno być:

program("/usr/bin/mysql --user=sysloguser --password=syslogpasswd logi < /var/log/mysql.pipe")

A po za tym to przechowuje logi z sysloga a squid przchowuje swoje logi w odzielnych plikach, nie wiem czy można jakoś przestawić to?

Pozdr