Logparser-logi serwerów prosto na biurko

Przeglądanie dziennika zdarzeń (eventlog) z jednego serwera nie jest problemem, trzeba tylko o tym pamiętać i od czasu do czasu zajrzeć do dziennika zdarzeń. Jednak zwykle nie interesują nas informacje o pomyślnych wydrukach czy też o tym, że komuś udało się pomyślnie zalogować. Jeszcze gorzej gdy powinniśmy przejrzeć zdarzenia z kilku albo kilkunastu serwerów. Co zrobić z dzienników zdarzeń wyciągnąć te najbardziej interesujące administratora tak by mógł je sobie przejrzeć przy porannej kawie?

Autofiltry pod excelem pozwolą na wygodne przeszukiwanie logów

Autofiltry pod excelem pozwolą na wygodne przeszukiwanie logów

Skorzystamy tutaj z dwóch darmowych narzędzi logparser (firmy Microsoft) i smtpsend (DataEnter). Pierwsze z nich posłuży do wyłuskania zdarzeń z plików dziennika i wpisania do pliku CSV (choć narzędzie pozwala też na zasilanie zdarzeniami bazy danych czy syslog), drugie zaś będzie z tego pliku robiło załącznik do maila i wysyłało pocztą elektroniczną. Napiszemy też samodzielnie dość prymitywne narzędzie (czyli plik batch), które dodamy do zaplanowanych zadań (scheduled tasks) by uruchamiało się co rano. Dla wygody listę serwerów będziemy trzymać w oddzielnym pliku serwery.txt. Dzięki temu łatwe będzie dodawanie i zmiany w tej liscie. Plik zawierał będzie nazwę serwera i typ logów np:

mars, System
mars,Applicaton
jowisz,System
neptun,System

Na początku sprzątanie czyli usuwanie starego załącznika. Jako pierwsza w naszym pliku znajdzie się więc linia

del d:\logparser\evt-24.csv /q

Skoro już posprzątaliśmy to pora na pętlę odczytującą listę logów do przerobienia:

for /f „tokens=1,2 delims=, ” %%1 in (d:\logparser\serwery.txt) do

pora na kolejną linię czyli właściwe polecenie:

@logparser -i:EVT „SELECT TimeGenerated, EventID, EventType, EventTypeName, EventCategory, EventCategoryName, SourceName, Strings, ComputerName, SID, Message FROM \\%%1\%%2 WHERE TimeGenerated > TO_TIMESTAMP(SUB(TO_INT(SYSTEM_TIMESTAMP()),86400)) AND EventType IN (1;2) ORDER BY TimeGenerated DESC” -o:CSV -q:ON -stats:OFF >> d:\logparser\evt-24.csv

Zmienne %%1 i %%2 zostaną w trakcie wykonania przetworzone na ścieżkę do logu (czyli np. \\mars\System), zaś jak widać składnia samego logparsera przypomina trochę SQL. Pojawiają się klauzule SELECT, FROM, WHERE. Jeśli zauważymy, że doba ma 86400 sekund, to już bez trudu się domyślimy, że to dziwne zaklęcie zaczynajęce się od TO_TIMESTAMP… odpowiada za wybieranie wiadomości z ostatnich 24 godzin (jeśli chcielibyśmy w ten sposób przetworzyć logi z ostatniej godziny wystarczy wpisać liczbę 3600). Wartości 1 i 2 dla EventType odpowiadają za ostrzeżenia (warning) i błędy (error), dalej wybieramy sortowanie po czasie utworzenia wpisu i wskazujemy jako wyjście format CSV. Dwie strzałki w prawo (>>) powodują dopisanie wyniku do pliku o wskazanej nazwie (jedna powodowałaby jego nadpisanie)

Skoro plik CSV został już utworzony, pora na jego wysłanie za pomocą komendy:

smtpsend -fevtlogmonitor@naszadomena.pl -tadmin1@naszadomena.pl -tadmin2@naszadomena.pl -hNaszSerwer.SMTP.domena.pl -slog -aevt-24.csv -luloginSMTP -lphasloSMTP

Ustawiamy parsowanie logów i wysyłanie pocztą jako automatyczne zadanie

Ustawiamy parsowanie logów i wysyłanie pocztą jako automatyczne zadanie

Jeszcze tylko pozostaje zaplanować zadanie uruchamiające co rano nasz plik batch i teraz już wystarczy otworzyć załącznik pod excelem, założyć autofiltr i już możemy łatwo przeglądać logi na wszystkie sposoby i żadne istotne wydarzenie nie ujdzie naszej uwagi.

VN:F [1.9.7_1111]
oceń artykuł:
Rating: 4.0/5 (1 vote cast)

wydrukuj wydrukuj

Logparser-logi serwerów prosto na biurko, 4.0 out of 5 based on 1 rating