Platformy e­commerce przeważnie składają się z wielu systemów informatycznych tj. CRM czy ERP. Naturalnie każdy z tych systemów każdego dnia generuje miliony logów, które dają nam nie tylko techniczne dane o stanie oprogramowania, ale również mogą dostarczać nam wielu biznesowych informacji np. o zachowaniach użytkowników w sklepie.

W tym artykule chciałbym pokazać Ci jak w Divante radzimy sobie z logami by zawarte w nich informację zostały efektywnie wykorzystane czy to w awaryjnych sytuacjach czy też na potrzeby przeprowadzenia zaawansowanych analiz i statystyk. Nim jednak przejdziemy dalej zastanówmy się, jakie napotykamy problemy w codziennej pracy z logami.

Brak spójnego formatu logów

Niestety logi nie posiadają spójnej struktury, bardzo rzadko występują dwa różne systemy posiadające taką samą strukturę logów. Jedną z głównych przyczyn jest to, że logi z każdych systemów muszą opisywać zupełnie inne byty lub zdarzenia, dlatego tak trudno uspójnić ich strukturę.

Trudna analiza logów

Klasyczne logi są dostępne i zrozumiałem wyłącznie dla osób z odpowiednią wiedzą techniczną, są to zazwyczaj administratorzy lub programiści. Dla nich samych niejednokrotnie nie jest łatwym zadaniem analizowanie logów, zwłaszcza gdy posiadamy rozproszony system informatyczny. Pamiętajmy, że w obliczu problemów na produkcyjnym środowisku liczy się każda sekunda, więc im wcześniej zespól zdiagnozuje problem tym szybciej będzie mógł podjąć odpowiednie działania naprawcze. Jest to szalenie istotne w e­commerce gdzie każda niedostępność sklepu internetowego rodzi realne straty finansowe.

Brak ciągłego monitoringu

Wiemy już, że nasze logi nie posiadają wspólnego formatu i nie są łatwe w analizie, zatem w jaki sposób prowadzić ciągły monitoring wszystkich parametrów naszej aplikacji? Kiedy się dowiemy, że w naszym systemie wystąpił nieoczekiwany problem? Istnieją rozwiązania typu Zabbix, NewRelic, które świetnie sprawdzają się jako monitoring, ale nie pozwalają nam zbadać dogłębnie problemu.

Obciążenie serwera

 

ChartNewRelicPageInformation

 

zródło: http://wiki.processmaker.com/index.php/Advanced_Performance_Monitor_Dashboards

Zapis logów zazwyczaj jest synchronicznym zapisem do pliku, który jest blokujący dla kolejnych instrukcji programu. Zapisując bardzo duże ilości logów spotykamy się z ograniczeniem liczby i­node w systemie plików, więc jesteśmy zmuszeni wprowadzić dodatkowe mechanizmy sprzątania starych logów. Jak określić, które logi są stare, niepotrzebne?

Odpowiedzią na te i wiele innych problemów jakie napotykamy w codziennej pracy z logami jest zestaw narzędzi ​ELK Stack​ występujących pod marką Elastic, których połączenie zapewnia ​wysoko skalowalny scentralizowany system zarządzania logami​.

Czym jest ELK Stack? 

elasickELK Stack to zestaw narzędzi: Elasticsearch, Logstash, Kibana

 E jak ElasticSearch

ela

 

 

ElasticSearch to nowoczesny i wydajny indekser danych oraz silnik wyszukiwania oparty na Apache Lucene, który pozwala przeszukiwać i analizować zgromadzone dane.

L  jak Logstash

log

 

 

 

Logstash jest narzędziem zajmującym się zbieraniem logów z wskazanych źródeł a następnie ich ustrukturyzowaniem do pożądanego formatu za pomocą wielu dostępnych filtrów. Ostatnim etapem działania Logstasha jest wysłanie gotowych danych do wskazanego celu jakim w naszym przypadku jest ElasticSearch.

2

Jako źródło logów możemy skonfigurować jeden z (41 źródeł) m.in.: elasticsearch, imap, rabbitmq, redis, sqlite, syslog, tcp, twitter, varnishlog.

Gotowe dane wyślemy do 55 różnych typów m.in. elasticsearch, mongodb,  redis, email, file, csv, hipchat, http, jira, redmine, rabbitmq, tcp, zabbix. Logstash oddaje nam do użytku 50 filtrów, które ułatwią nam parsować gromadzone dane, znajdziemy m.in: filtry: csv, date, fingerprint, geoip, grep, grok, json, ruby, split, urldecode, useragent, xml.

K jak Kibana

kibana

 

 

Kibana to przyjazny dla użytkownika w pełni definiowalny interfejs pozywający przeglądać, przeszukiwać i wizualizować zgromadzone dane za pomocą różnorodnych wykresów.

ELK Stack – jak to działa?

3

 

  1. Dostawcy, czyli instancje Logstasha zainstalowane na poszczególnych serwerach z których chcemy zbierać piki logów i wysyłać je do szybkiej bazy danych Redis’a. Redis posłuży nam jako middleware, którego zadaniem jest kolejkowanie zagregowanych danych. W tym momencie warto zauważyć, że logi nie muszą być zapisywane w plikach na poszczególnych serwerach, równie dobry rozwiązaniem będzie bezpośredni zapis naszych logów do bazy Redisa, która charakteryzuje się bardzo szybkim zapisem.
  2. Kolejnym etapem jest normalizacja przez Indekser logów zapisanych w Redisie. Role Indeksera pełni kolejna instancja Logstasha. Odpowiednio przefiltrowane logi zostaną przesłane bezpośrednio do ElasticSerch’a.
  3. Tak przygotowane dane możemy eksplorować za pomocą panelu Kibany,  która odczytuje dane z bazy Elastichserch’a aby zaprezentować je użytkownikowi za pomocą dashbord’u.

Dashborad Kibany i jego ogromne możliwości indywidualnej konfiguracji, przeszukiwania, filtrowania i  analizowania zgromadzonych danych wydają mi się, najlepszym podsumowaniem i sensem całego trudu jaki musimy włożyć w wdrożenie kompletnego, scentralizowanego systemu logów. Zobaczcie i oceńcie sami, czy chcielibyście mieć takie rozwiązanie w swoim projekcie.

 

5

 

Chcesz agregować i analizować logi razem z Divante? Napisz do nas.