Wpis poświęcony jest magicznej trójce: elastic-search, logstash, kibana co w sieci można znaleźć pod skrótem ELK. Opisuje w prosty sposób jak uruchomić i skonfigurować narzędzie wspomagające pracę z plikami logów. Ideą tego rozwiązania jest wykorzystanie istniejących narzędzi jako centrum indeksującego i prezentującego logi. Narzędzie to jest bardzo przydatne w przypadku, gdy monitorujemy kilka środowisk, czy też jedno środowisko, które jest rozproszone. Opisywane zastosowanie dotyczy monitorowania logów w ramach jednej maszyny.
Wymagania
Przechodząc do sedna. Wiemy co chcemy zrobić, pojawia się pytanie jak? Otóż w pierwszej kolejności należy pobrać trzy moduły ze strony dostawcy https://www.elastic.co/:
- https://www.elastic.co/products/elasticsearch
- https://www.elastic.co/products/kibana
- https://www.elastic.co/products/logstash
Do ich uruchomienia niezbędna będzie java w wersji co najmniej 7, aczkolwiek jako że jest narzędziem ciągle rozwijanym, sugeruję użyć najnowszej stabilnej wersji.
Instalacja
- instalacja javy
- rozpakowanie archiwów z powyższymi paczkami
Konfiguracja
- Elasticsearch – konfiguracja znajduje się w pliku:
- <ELASTIC_SEARCH_HOME> /config/elasticsearch.yml – istnieje mozliwość zmiany podstawowych parametrów, domyślnymi są: 9200 oraz 9300, a zmiana ich nie jest konieczna.
- Kibana – konfiguracja znajduje sie w pliku:
- <KIBANA_HOME>/config/kibana.yml – należy zdefiniować źródło danych, w tym przypadku zmienna: elasticsearch.url: „http://localhost:9200„
- Logstash – plik konfiguracyjny podaje się w parametrach startowych. Zawartość tego pliku może wyglądać następująco:
input {
file {
type => "nazwa środowiska|węzła"
path => "/*"
codec => multiline { →sekcja odpowiedzialna za złożenie stacktrace’a w jeden wpis
pattern => "^%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME}.*"
negate => "true"
what => "previous"
}
}
}
output {
elasticsearch { hosts => [":9200"] }
stdout { codec => rubydebug } → linnia opcjonalna, wypisuje na wyjściu standardowym publikowane wpisy, przydatne podczas debugowania
}
Uruchamianie
Aby wszystko działało, należy w pierwszej kolejności uruchomić elasticsearch skryptem:
/bin/elasticsearch
następnie w dowolnej kolejności należy uruchomić:
/bin/kibana
/bin/logstash -f logstash.conf
Dla przykładu filtrowanie logów za pomocą komendy grep Exception:
A tu ten sam log wyszukany komendą kibana *Exception* (stack trace ucięty przez rozmiar okna przeglądarki):
Oczywiście da się to zrobić prościej np. poprzez uruchomienie gotowego obrazu docker’a. Warto pamiętać, że ścieżka ta nie zawsze jest dostępna ze względu na różnego rodzaju polityki bezpieczeństwa. Narzędziem, które warto dopisać to tego zestawu, jest pakiet filebeat dostępny w stajni elastic, będący sugerowanym narzędziem do przesyłania logów wewnątrz sieci.
Zostaw komentarz