MARGO

Aktualności

Utworzenie scentralizowanej platformy zarządzania logami za pomocą pakietu narzędzi Elastic

Uzyskanie szybkiego i przejrzystego obrazu tego, co się dzieje z monitorowanymi aplikacjami

Autor: Imen Jaouani Software Engineer

04/06/2018

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).

Elasticsearch-Portfolio

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:

Margo - L’architecture globale de la suite Elastic

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:

logo 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:

Logo 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.

vega-lite elastic

 

Beats (Wire Data, Log Files, Metrics)

Margo - Beats suite Elastic

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.

Elastic packetbeat protocols

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.

Elastic filebeat inputs

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.

Elastic metricbeat modules

Możliwe jest wyświetlanie wykresów odpowiadających tym wartościom metrycznym w narzędziu Kibana dzięki wtyczce MetricBeat.

 

Logstash:

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.

Elastic filter

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.

x-pack elastic

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:

clicks_admin suite Elastic

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ą.

Elastic Application Performance Monitoring

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:

 


Autor: Imen Jaouani Software Engineer
Big Data
Dane
Elasticsearch
Machine Learning
Aktualności

Projekty z dziedziny Data Science to wciąż droga pełna przeszkód

Projekty z dziedziny Data Science to wciąż droga pełna przeszkód W czasach, gdy wiele firm pretenduje do miana „spółek działających w oparciu o dane” nadal wiele projektów z zakresu Data Science kończy się porażką. W większości przypadków porażki wynikają z dobrze znanych i powtarzalnych przyczyn. Pierre Fares, Digital Offering & Business Transformation Officer w firmie Margo, opowiada o częstych pułapkach, których bezwzględnie należy unikać.

Więcej 
Aktualności

Tutorial: Podstawy stosowania Pythona do prognozowania szeregów czasowych

W tutorialu wprowadzamy kilka podstawowych pojęć z zakresu szeregów czasowych, aby umożliwić „szybką” predykcję przyszłych wartości w odniesieniu do danych czasowych.

07/11/2018 Więcej 
Aktualności

Data Science w świecie handlu detalicznego: 10 najważniejszych przypadków wykorzystania

Data Science w coraz większym stopniu wpływa na modele biznesowe we wszystkich gałęziach przemysłu, zwłaszcza w sprzedaży detalicznej. Według IBM, 62% detalistów deklaruje, że wykorzystanie technik związanych z Big Data daje im poważną przewagę konkurencyjną. Dzięki data sicence możemy sprawdzić, czego potrzebuje klient i w jakim momencie jest obecnie na wyciągnięcie ręki. Aby to zrobić, musimy jedynie posiadać odpowiednie narzędzia i wdrożyć dobre procedury związane z ich używaniem. W niniejszym artykule przedstawiamy 10 najważniejszych zastosowań data science w handlu detalicznym.

01/06/2018 Więcej 
Aktualności

Zegary Lamporta i wzorzec Idempotent Producer (Kafka)

Znacie zegary Lamporta? Podczas konferencji Devoxx France 2018 była okazja, w trakcie bardzo interesującej prezentacji DuyHai DOAN, do poznania lub ponownego poznania tego algorytmu, sformalizowanego przez Lesliego Lamporta w 1978 r., częściej niż kiedykolwiek używanego dzisiaj w dziedzinie systemów rozproszonych, który w szczególności skłonił twórców Apache Kafka do wprowadzenia wzorca Idempotent Producer.

25/05/2018 Więcej 
Aktualności

Wprowadzenie do TensorFlow na datalab od Google Cloud Platform

TensorFlow to biblioteka programów do obliczeń numerycznych, działająca na zasadzie open source od 2015 r., opracowana przez Google. Szczególną cechą TensorFlow jest wykorzystanie diagramów przepływu danych (data flow graphs).

11/05/2018 Więcej 
Aktualności

Krótkie wprowadzenie do chatbotów tworzonych za pomocą Dialogflow

Ostatnio pracuję nad chatbotem, korzystając z aplikacji Google Dialogflow. Niniejszy artykuł zawiera kilka moich uwag dotyczących Dialogflow i chatbotów. Opisuję w nim też sposób, jak stworzyć prostego chatbota za pomocą platformy Dialogflow.

07/05/2018 Więcej