wtorek, 24 stycznia 2012

Logi serwera w bazie danych

Po dłuższej przerwie przyszedł czas na kolejny artykuł. Tym razem podłubiemy troszkę przy logach naszego serwera. Przeglądanie logów na konsoli to dość nudne zajęcie. Kilka bądź kilkanaście plików, setki linii. Spróbujemy linie z plików tekstowych zmienić na wpisy w bazie MySQL.

Nikomu chyba nie trzeba tłumaczyć korzyści płynących z takiej zmiany. Logi z bazy można łatwo przeglądać, filtrować i analizować. Można też uzyskać do nich dostęp z dowolnego hosta za pomocą panelu obsługiwanego przez przeglądarkę. Zrobienie czegoś takiego dla logów opartych na plikach tekstowych jest znacznie trudniejsze. Możemy też agregować logi z wielu maszyn na jednym serwerze bazy danych.

Nie jest to jednak rozwiązanie idealne. Obsługa baza danych jest "cięższa" niż zwykłe pliki tekstowe. Wpisywanie do niej informacji zżera więcej zasobów niż dodawanie linijek pliku tekstowego. Jeśli jednak nasze połączenie sieciowe między serwerem bazy i klientem produkującym logi jest wystarczająco mocne a sam serwer bazy danych ma jeszcze dość niespożytkowanej mocy, to czemu nie?

W tym krótkim artykule nie będziemy zajmowali się konfiguracją panelu webowego udostępniającego dane z bazy. Każdy, w ramach pracy domowej może sobie zrobić taki panel samodzielnie. Można też zainstalować phpLogCon, który świetnie współpracuje z zaprezentowanym poniżej rozwiązaniem.

Rozwiązaniem tym jest instalacja rsyslog-a. Nie nastręcza ona problemów. Wystarczy apt-getnąć rsyslog oraz rsyslog-mysql. Prosty kreatorek skonfiguruje bazę danych. Jeśli nie skonfiguruje, wystarczy wczytać do bazy skrypt createDB.sql znajdujący się w paczce, uprzednio upewniając sie czy nazwa bazy, użytkownik i jego hasło nam odpowiadają. Nie zmieniajcie nazw tabel i pól - będzie problem.

Jeśli ktoś nie lubi rozwiązań domyślnych to rsyslog pozostawia mu spore pole do popisu. Nie lubimy domyślnego schematu tabel, nie podobają nam się informacje w nich zapisywane. Nic nie stoi na przeszkodzie - możemy napisać własne komendy umieszczania danych w tabelach. Według mnie nie ma jednak sensu wynajdywanie koła od nowa. Rozwiązanie działa i na razie jest wystarczające.

Jeśli nie podoba nam sie MySQL, bo mamy zainstalowany PostgreSQL - ok. Wystarczy "apt-getnąć" zamiast rsyslog-mysql, rsyslog-pgsql.

Jeśli potrzebujemy panelu webowego na "już" to wspomniany phpLogCon jest chyba najlepszym darmowym rozwiązaniem. Ja mam jednak chęć napisania czegoś samodzielnie. Co z tego wyjdzie - zobaczymy.

Brak komentarzy:

Prześlij komentarz