
Ilość danych generowanych przez nasze systemy i aplikacje stale rośnie, co powoduje wzrost liczby centrów danych i systemów przechowywania danych.
W obliczu tej eksplozji danych i inwestycji w wiedzę fachową i zasoby, decydenci potrzebują uzasadnionych analiz i zaawansowanych tabel, umożliwiających im zarządzanie swoimi systemami i klientami.
W tym kontekście konsultanci Margo mieli możliwość poznania jednego z rozwiązań spełniających tę potrzebę podczas dni Devoxx Francja 2018: pakiet narzędzi Elastic (Elasticsearch, Logstash, Kibana, Beats, …).
Konferencja „Utworzenie scentralizowanej platformy zarządzania logami za pomocą pakietu narzędzi Elastic” odbyła się w środę, 18 kwietnia, w ramach koncepcji „University”, będącej długą, trwającą trzy godziny prezentacją. Była ona prowadzona przez Davida Pilato, programistę i ewangelistę w elastic.co oraz Emmanuela DEMEY’a, dyrektora technicznego i trenera w zakresie tworzenia stron internetowych w Zenika Lille.
Podczas tej prezentacji prelegenci połączyli teorię z praktyką. Rozpoczęli od zaprezentowania najnowszych, a także przyszłych funkcji dla różnych komponentów, następnie przedstawili krótkie demo i zakończyli widokiem architektury w pakiecie Elastic.
Zainspirowani konferencją, w niniejszym artykule przedstawimy pakiet narzędzi Elastic. Wybraliśmy jednak podejście „z góry na dół” i zaczniemy od prezentacji i przypadków użycia. Przedstawimy szczegółowo globalną architekturę, a na koniec omówimy mniej znane produkty, takie jak X-PACK czy Elastic APM.
Co to jest pakiet Elastic?
Elastic Stack to grupa produktów open source zaprojektowana do pobierania danych (z dowolnego źródła i w dowolnym formacie), analizowania ich i wyświetlania w celu zapoznania się z tendencjami w czasie rzeczywistym. Ta grupa produktów była powszechnie znana pod skrótem ELK (ElasticSearch, Logstash, Kibana). Dodanie czwartego produktu o nazwie „Beats” sprawiło, że akronim stał się niemożliwy do wymówienia, co dało początek nowej nazwie – Elastic Stack. Elastic Stack może być używany na stronie internetowej lub udostępniany jako Software as a Service (SaaS).
Jak w praktyce możemy korzystać z pakietu Elastic?
Istnieje wiele możliwości użycia tego produktu. Na przykład korygowanie nieprawidłowego działania aplikacji poprzez odzyskiwanie wyraźnych błędów (wyjątek, komunikat o błędzie itd.) oraz monitorowanie obciążenia aplikacji (zużycie pamięci, CPU itd.), umożliwiające uzyskanie kompleksowego obrazu produkcji. Firmy mogą użyć pakietu do sprawdzenia poprawności łańcucha przepływu zadań poprzez wyodrębnienie określonych danych i ich analiz.
Na stronie elastic.co można poznać więcej przypadków użycia, a także przeczytać kilka opinii klientów, którzy zdecydowali się na pakiet Elastic w celu wykorzystywania swoich danych. (Patrz https://www.elastic.co/fr/use-cases)
Ogólna architektura pakietu Elastic
Poniżej przedstawiamy przegląd wszystkich komponentów i ich relacji:
Poszczególne komponenty pakietu Elastic zostały zaprojektowane w sposób zapewniający ich współpracę i interakcję bez konieczności wykonania wielu specyficznych konfiguracji. Jednak początkowa konfiguracja będzie w dużym stopniu uzależniona od środowiska i zakresu użycia.
Pakiet Elastic: jakie komponenty?
Elasticsearch:
Elastic search jest sercem pakietu i odgrywa kluczową rolę. Jest to nowoczesna wyszukiwarka RESTful, w pełni open source, oparta na Apache Lucene. Umożliwia wyszukiwanie i indeksowanie dokumentów w różnych formatach. Często określamy terminem klaster Elasticsearch grupę jednej lub wielu instancji połączonych ze sobą węzłów Elasticsearch. Klaster Elasticsearch umożliwia dystrybucję zadań, wyszukiwanie i indeksowanie we wszystkich węzłach klastra. Aby uzyskać więcej informacji na temat różnych typów istniejących węzłów, kliknij link: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html
Nowości zaprezentowane na konferencji: nowa aktualizacja gwarantująca brak przestojów, zmniejszenie używanego obszaru przechowywania i poprawę replikacji. W kolejnych wersjach planowane są nowe funkcje, takie jak dodanie API Rollup dla Elasticsearch, usunięcie typów lub obsługa SQL.
Kibana:
Kibana to platforma analizy i wizualizacji open source, zaprojektowana do współpracy z Elasticsearch. Prosty interfejs, oparty na przeglądarce, umożliwia szybkie tworzenie i udostępnianie dynamicznych tabel w czasie rzeczywistym, ułatwiając zrozumienie dużych wolumenów danych.
Podczas demonstracji mogliśmy potwierdzić prostotę konfiguracji Kibany. Kibanę można zainstalować w kilka minut i natychmiast rozpocząć poznawanie wskaźników Elasticsearch – brak wymaganego kodu czy dodatkowej infrastruktury.
W kolejnych wydaniach pojawią się również nowe funkcje, takie jak: autouzupełnianie (KQL Syntax), waffle maps, Rollups UI i Vega visualization. To ostatnie narzędzie umożliwia użytkownikom tworzenie spersonalizowanych wizualizacji przy użyciu języka deklaratywnego opartego na JSON open source zwanego Vega lub jego uproszczonej wersji Vega-Lite.
Beats (Wire Data, Log Files, Metrics)
Beats to platforma lekkich rozwiązań transferowych, zainstalowanych na naszych serwerach w celu zbierania danych i ich gromadzenia w Elasticsearch. Jeśli życzymy sobie większej zdolności przetwarzania danych, Beats może również przesyłać te dane do Logstash, który będzie odpowiedzialny za ich przekształcenie i analizę. Trzeba zauważyć, że istnieje kilka rodzajów beats w zależności od rodzaju danych. W trakcie prezentacji prelegenci omówili PacketBeat, który jest lekkim analizatorem pakietów sieciowych, wysyłającym dane bezpośrednio do Logstash lub Elasticsearch, umożliwiając w ten sposób monitorowanie bieżących działań w różnych aplikacjach.
W dalszej części skupili się na FileBeat. FileBeat jest prostym narzędziem umożliwiającym przesyłanie i gromadzenie logów niezależnie od ich liczby, rozmiarów i źródeł (serwery, maszyny wirtualne, kontenery generujące logi). W przypadku niedostępności aplikacji lub przerwania połączenia, po jego przywróceniu filebeat wznawia odczyt lub przenoszenie od miejsca, w którym się zatrzymał. Ponadto Filebeat dostosowuje się do logstash w trakcie wysyłania danych w przypadku spowolnienia lub przeciążenia, dzięki protokołowi kontroli przepływu.
Pod koniec prezentacji prelegenci przedstawili MetricBeat, lekkie narzędzie do transferu statystyk, takich jak wskaźniki CPU, pamięci, Redis czy NGINX, bezpośrednio z naszych systemów i serwisów, z możliwością konfiguracji przedziałów czasowych pobierania statystyk.
Możliwe jest wyświetlanie wykresów odpowiadających tym wartościom metrycznym w narzędziu Kibana dzięki wtyczce MetricBeat.
Logstash:
Logstash to narzędzie open source, odpowiadające za agregację danych pochodzących z wielu źródeł, ich przetwarzanie i przesyłanie do narzędzia, zasadniczo w celu bezpośredniego indeksowania w Elasticsearch.
Inputs:
Jednym z argumentów podkreślających wagę Logstash jest możliwość agregowania dzienników i zdarzeń z wielu źródeł przy użyciu ponad 50 wtyczek wejściowych dla różnych platform, baz danych i aplikacji.
Najpopularniejsze wejścia to: plik, godzina, syslog, http, tcp, udp i stdin, ale można łączyć dane z wielu innych źródeł.
Filters:
Kluczowym zadaniem Logstash w pakiecie jest umożliwienie użytkownikom filtrowania i kształtowania danych, aby ułatwić ich zrozumienie. W tym celu logstash obsługuje wiele niezwykle efektywnych wtyczek filtrów, które umożliwiają manipulowanie, mierzenie i tworzenie zdarzeń. Skuteczność filtrów sprawia, że Logstash jest niezwykle wszechstronnym i cennym narzędziem.
Dla przykładu filtr daty jest często używany do określenia, która data została użyta do zdarzenia odpowiadającego wygenerowanemu logowi. Ta data jest pobierana z loga, pozwalając na wypełnienie pola @timestamp. Filtr geoip używany jest do dodawania informacji geolokacyjnych za pośrednictwem adresu IP (lub hostname), wykorzystując bazę danych GeoCityLite.
Outputs:
Logstash obsługuje wiele wtyczek wyjściowych, które umożliwiają przesyłanie danych do różnych lokalizacji, serwisów i technologii. Duża liczba kombinacji wejściowych i wyjściowych w Logstash sprawia, że jest on naprawdę wszechstronnym procesorem zdarzeń.
Podsumowując, w razie potrzeby możliwe jest utworzenie wielu strumieni danych. Możemy na przykład odróżnić strumień logów dostępu od strumienia logów błędów.
Aby poznać więcej różnic między logstash i Beats, zachęcamy do kliknięcia linku: https://logz.io/blog/filebeat-vs-logstash/
Najmniej znane produkty pakietu Elastic
X-Pack
X-Pack jest rozszerzeniem pakietu narzędzi Elastic, łączącym nowe funkcje w jednym pakiecie, jest łatwy w instalacji, z możliwością włączenia lub wyłączenia żądanej funkcji. Dzięki niemu pakiet Elastic stał się kompletnym narzędziem do analizy i monitorowania. Poniższy schemat prezentuje ogólny widok poszczególnych funkcji.
Podczas prezentacji prelegenci skupili się na trzech głównych tematach: bezpieczeństwie, ostrzeganiu i w pokrótce omówili machine learning.
W tym artykule omówimy jedynie bezpieczeństwo i Machine Learning. Zacznijmy od X-Pack Security, który pozwala nam w łatwy sposób zabezpieczyć klaster i chronić nasze dane. Ta funkcja chroni przed nieautoryzowanym dostępem poprzez ochronę hasłem i kontrolę dostępu opartą na rolach i filtrowaniu IP. Możliwe jest także użycie bardziej zaawansowanych środków bezpieczeństwa, takich jak szyfrowanie komunikacji w celu zachowania integralności danych lub audyt w celu śledzenia działań wykonywanych na danych przechowywanych w klastrze.
Na poniższym zrzucie ekranu widzimy przykładową definicję roli clicks_admin:
Na koniec przedstawiamy X-Pack Machine Learning, który stanowi zestaw narzędzi umożliwiających użytkownikom korzystanie ze wskaźników związanych z ich danymi Elasticsearch, wykrywanie nieprawidłowości w danych czasowych i otrzymywanie w takim wypadku automatycznego powiadomienia. Możliwe jest również definiowanie zadań machine learning w Kibana w celu zautomatyzowania zmiany tysięcy wskaźników i przewidywania przyszłość za pomocą API Forecast.
APM (Application Performance Monitoring)
Elastic APM to rozwiązanie, które dostarcza informacji o efektywności na poziomie aplikacji i umożliwia szybkie debugowanie i korygowanie błędów w przypadku problemów z produkcją. Składa się z trzech elementów: interfejsu, agenta i serwera. Ten ostatni indeksuje informacje w Elasticsearch, przy czym interfejs ułatwia monitorowanie za pośrednictwem Kibany.
Poniższy schemat przedstawia sposób integracji APM z ogólną architekturą.
Dodanie agenta APM do nowej aplikacji jest proste i wymaga jedynie kilku linii kodu. Po zainstalowaniu serwera i agentów można uzyskać dostęp do danych dotyczących efektywności i korzystać ze wstępnie skonfigurowanych i spersonalizowanych tabel dostarczonych z serwerem.
Wnioski
Pakiet Elastic to zestaw prostych i jednocześnie kompleksowych produktów. W tym artykule wyjaśniliśmy podstawowe pojęcia, opisaliśmy szczegółowo ogólną architekturę i przedstawiliśmy kilka przykładów mniej znanych produktów.
Mamy nadzieję, że ułatwi on zrozumienie, a co najważniejsze, zainspiruje do przetestowania pakietu Elastic, który jest rozbudowanym narzędziem do analizy danych, zapewniającym szybki i jasny obraz tego, co dzieje się w monitorowanych aplikacjach. Należy jednak pamiętać, że zbadanie potrzeby jest niezbędne przed dokonaniem wyboru rozwiązań, a wybór ten będzie uzależniony od kontekstu projektu.
Bibliografia:
- https://searchitoperations.techtarget.com/definition/Elastic-Stack
- https://www.elastic.col
- http://blog.d2-si.fr/2016/08/23/bonnes-pratiques-elastic-stack/
- https://logz.io/learn/complete-guide-elk-stack/
- http://xebia-france.github.io/workshop-kibana/groups/io.html