skuteczne przeszukiwanie dużej ilo

Konfiguracja serwerów, usług, itp.
janowskm
Posty: 19
Rejestracja: 16 marca 2009, 23:24

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

Post autor: janowskm »

Witam.

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

Pozdrawiam.
sigo
Junior Member
Posty: 501
Rejestracja: 21 marca 2009, 19:12

Post autor: sigo »

Przeszukiwać pod względem konkretnych danych? Użyj grep-a.
Awatar użytkownika
f1.micro
Beginner
Posty: 119
Rejestracja: 24 lutego 2009, 11:32
Lokalizacja: Kraków

Post autor: f1.micro »

sigo, skompresowanych nie przeszuka grepem.
sigo
Junior Member
Posty: 501
Rejestracja: 21 marca 2009, 19:12

Post 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.
janowskm
Posty: 19
Rejestracja: 16 marca 2009, 23:24

Post 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.
Awatar użytkownika
michnik
Beginner
Posty: 162
Rejestracja: 20 lipca 2009, 12:54
Lokalizacja: Kraków

Post 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.
Hardiel
Posty: 84
Rejestracja: 22 lipca 2009, 17:21

Post autor: Hardiel »

Lub stworzyc wlasny wielowatkowy skrypt do przeszukiwania logow
janowskm
Posty: 19
Rejestracja: 16 marca 2009, 23:24

Post 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.
Awatar użytkownika
michnik
Beginner
Posty: 162
Rejestracja: 20 lipca 2009, 12:54
Lokalizacja: Kraków

Post 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.
janowskm
Posty: 19
Rejestracja: 16 marca 2009, 23:24

Post 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
ODPOWIEDZ