Blog (107)
Komentarze (2.3k)
Recenzje (0)
@webnull[Narzędzia] logdetect - monitorowanie logów w czasie rzeczywistym

[Narzędzia] logdetect - monitorowanie logów w czasie rzeczywistym

Witam.

W ramach zdobywania doświadczenia i poszerzania swojej wiedzy z zakresu programowania rozwijam różne swoje projekty, o tym już pisałem jakiś czas temu. Tak więc tym razem przedstawiam Wam projekt logdetect napisany w języku Python. Aktualna wersja jest w fazie alpha więc nie radzę używać tego na serwerze produkcyjnym ;‑)

Strona projektu: https://github.com/webnull/logdetect Paczki: (obecnie niedostępne)

Jak działa logdetect

Głównym zadaniem aplikacji jest monitorowanie zmian w plikach i przepuszczanie ich przez filtr który zależnie od wyniku dopasowania podejmie określone działanie.

Poprzez podjęcie działania można rozumieć dowolną czynność, a przykładowo może to być zbanowanie użytkownika, powiadomienie administratora, wyłączenie serwera, czy po prostu uruchomienie programu X.

Logdetect od środka

Działanie programu to główna pętla w której mamy ustalony w konfiguracji odstęp czasowy pomiędzy sprawdzaniem zdarzeń, może to być 500 ms, 1 sec, 60 minut, różnie - po prostu częstotliwość sprawdzania samej daty modyfikacji wszystkich plików.

Jeśli data modyfikacji różni się od poprzedniego sprawdzenia to znaczy, że plik został zmieniony - w takim razie trzeba ruszać na przód, tutaj jest kolejny krok.

Skoro zaszły jakieś zmiany to trzeba sprawdzić co dokładnie - a możliwe jest to do wykonania poprzez zapisywanie swojej pozycji w pliku, a następnie wracanie do niej przy następnym sprawdzaniu.

Kolejnym etapem jest parsowanie każdej linii przez wtyczkę do tego przeznaczoną, używa ona odpowiednich filtrów które pozwolą wyodrębnić interesujące nas dane.

W zależności od dopasowania może zostać podjęta akcja, ale z tym nie należy się śpieszyć, bo najpierw można przyznać użytkownikowi punkty ostrzeżeń. Dopiero po przekroczeniu ustalonego limitu punktów może zostać podjęta akcja. Można także zrezygnować z tej funkcji ustawiając wymaganą ilość punktów na "immediately".

Czyż to nie wynajdowywanie koła od nowa?

Pisanie tego typu aplikacji w wolnym czasie to dla mnie spore doświadczenie, lubię to robić oraz udostępniać. Myślę, że warto mieć pod ręką tą trzecią alternatywę, kto wie - być może akurat moja aplikacja będzie komuś bardziej pasować od tych popularnych, powszechnie stosowanych. Myślę, że na razie musi tylko wyjść z faz testowych, ale to nie tak prędko nastanie.

Ozdabianie koła

Staram się tak jak to możliwe implementować funkcje które są niedostępne w alternatywnych aplikacjach tego typu dlatego myślę, że jedną z takich funkcji jest obsługa FTP. Możliwe jest zdalne sprawdzanie logów od serwera do którego mamy przykładowo dostęp tylko przez FTP, bo SSH na tanich hostingach WWW przecież nie udostępniają, a serwery logi generują :‑)

A skoro mowa o funkcjach, to myślę, że przy okazji wymienię je w dużym skrócie:


+ Monitoring w czasie rzeczywistym
+ Możliwość zdalnego monitorowania przez FTP
+ Kompatybilność z Pythonem 2 i Pythonem 3, bardzo małe zależności
+ Rozszerzalne przez wtyczki i filtry
+ Prosta konfiguracja przez pliki "INI"
+ Własne poziomy ostrzeżeń
Wybrane dla Ciebie
Komentarze (19)