Cat | tail | grep – nierzadko jest to dla wielu osób podstawowy zestaw komend do wyszukiwania pewnych informacji w logach. Rozwijając jakąkolwiek aplikację, tworzymy pewien ekosystem składający się wielu usług, generujących własne pliki rejestru zdarzeń w różnych formatach. Na przykład w pierwszej lepszej aplikacji którą rozwijałem informacje rejestrowane są przez:
- serwer proxy – NGINX
- serwer http – Tomcat
- bazę danych – PostgrteSQL
- no i aplikację.
Już przy tak podstawowym zestawie usług, generowanych informacji jest ogrom. Przegląd i analiza takich logów jest dosyć problematyczna. Jeszcze pół biedy, gdy wszystkie z tych danych znajdują się na jednym serwerze.
Jak nad tym zapanować? W tym artykule przedstawię open source’owy zestaw narzędzi służących zarządzania logami ELK Stack w skład którego wchodzą:
- Elasticsearch – silnik wyszukiwania pełnotekstowego oparty na Apache Lucene.
- Logstash – narzędzie przetwarzające, filtrujące, normalizujące i wysyłające gdzieś logi (w naszym przypadku do Elasticsearch’a).
- Kibana – interfejs, aplikacja webowa do przeglądania i wizualizacji logów w czasie rzeczywistym.
W poniższym artykule zaprezentuję przykład aplikacji wykorzystującej Javovy Log4J wysyłającej do Logstasha logi za pomocą SocketAppendera (na potrzeby wpisu w Windowsie 10).
Zaczynajmy, jak zwykle bez zbędnego rozpisywania się.