Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Przypominamy, że w podstawie Elastic Stack leży nierelacyjna baza danych Elasticsearch, interfejs webowy Kibana oraz zbieracze-przetworniki danych (najbardziej znany to Logstash, różne Beats, APM i inne). Jednym z miłych dodatków całego wymienionego stosu produktów jest analiza danych przy użyciu algorytmów uczenia maszynowego. W artykule wyjaśniamy, czym są te algorytmy. Zapraszamy do lektury.

Uczenie maszynowe to płatna funkcja warunkowo darmowego Elastic Stack i wchodzi w skład pakietu X-Pack. Aby zacząć z niego korzystać, wystarczy po instalacji aktywować 30-dniowy okres próbny. Po upływie okresu próbnego można poprosić o jego przedłużenie lub wykupić subskrypcję. Koszt subskrypcji obliczany jest nie od ilości danych, lecz od liczby używanych węzłów. Tak, objętość danych ma wpływ na liczbę wymaganych węzłów, jednak takie podejście do licencjonowania jest bardziej przyjazne dla budżetu firmy. Jeśli nie ma potrzeby w wysokiej wydajności, można zaoszczędzić.

ML w Elastic Stack napisany jest w C++ i działa poza JVM, w której działa sam Elasticsearch. Oznacza to, że proces (nazwa to zresztą autodetect) zużywa wszystko, co nie wchłonie JVM. Na demo to nie jest tak krytyczne, ale w środowisku produkcyjnym ważne jest wydzielenie oddzielnych węzłów dla zadań ML.

Algorytmy uczenia maszynowego dzielą się na dwie kategorie — z nauczycielem i bez nauczyciela. W Elastic Stack algorytm należy do kategorii „bez nauczyciela”. Można tym linkiem zobaczyć aparat matematyczny algorytmów uczenia maszynowego.

Do przeprowadzenia analizy algorytm uczenia maszynowego wykorzystuje dane przechowywane w indeksach Elasticsearch. Zadania do analizy można tworzyć zarówno z interfejsu Kibana, jak i za pośrednictwem API. Jeśli robisz to przez Kibana, to niektóre rzeczy nie są konieczne do wiedzenia. Na przykład dodatkowe indeksy, które algorytm wykorzystuje w trakcie pracy.

Dodatkowe indeksy wykorzystywane w trakcie analizy.ml-state — informacje o modelach statystycznych (ustawienia analizy);
.ml-anomalies-* — wyniki działania algorytmów ML;
.ml-notifications — ustawienia powiadomień dotyczących wyników analizy.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Struktura danych w bazie Elasticsearch składa się z indeksów i przechowywanych w nich dokumentów. Porównując to z relacyjną bazą danych, indeks można porównać z schematem bazy danych, a dokument z rekordem w tabeli. To porównanie jest umowne i podano je w celu uproszczenia zrozumienia dalszego materiału dla tych, którzy tylko słyszeli o Elasticsearch.

Za pomocą API dostępna jest ta sama funkcjonalność, co przez interfejs webowy, dlatego dla większej przejrzystości i zrozumienia koncepcji pokażemy, jak skonfigurować wszystko przez Kibana. W lewym menu znajduje się sekcja Machine Learning, w której można utworzyć nowe zadanie (Job). W interfejsie Kibana wygląda to jak na poniższym obrazku. Teraz przeanalizujemy każdy typ zadania i pokażemy rodzaje analizy, które można tu skonstruować.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Single Metric — analiza jednej metryki, Multi Metric — analiza dwóch i więcej metryk. W obu przypadkach każda metryka analizowana jest w izolowanym środowisku, tj. algorytm nie uwzględnia zachowania równolegle analizowanych metryk, jak by się mogło wydawać w przypadku Multi Metric. Aby przeprowadzić obliczenia z uwzględnieniem korelacji różnych metryk, można zastosować analizy populacyjne. A Advanced — to precyzyjne dostosowanie algorytmów poprzez dodatkowe opcje do określonych zadań.

Single Metric

Analiza zmian jednej metryki — najprostsza czynność, którą można tutaj wykonać. Po naciśnięciu na Create Job algorytm poszuka anomalii.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

W polu Agregacja można wybrać podejście do wyszukiwania anomalii. Na przykład, przy Min za anomalia będą uznawane wartości poniżej typowych. Istnieje Max, Hign Mean, Low, Mean, Distinct i inne. Opis wszystkich funkcji można zobaczyć pod tym linkiem.

W polu Pole określa pole numeryczne w dokumencie, według którego będziemy przeprowadzać analizę.

W polu Bucket span — granularność przedziałów na osi czasu, według których będzie prowadzona analiza. Można zaufać automatyce lub wybrać ręcznie. Na poniższym obrazku przedstawiono przykład zbyt niskiej granularności — można przegapić anomalię. Dzięki tej ustawieniu można zmieniać czułość algorytmu na anomalie.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Czas trwania zebranych danych — kluczowy aspekt, który wpływa na skuteczność analizy. Podczas analizy algorytm określa powtarzające się przedziały, oblicza przedział ufności (linie bazowe) i identyfikuje anomalie — nietypowe odchylenia od normalnego zachowania metryki. Dla przykładu:

Podstawowe linie przy niewielkim odcinku danych:

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Gdy algorytm ma na czym się uczyć — podstawowe linie wyglądają tak:

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Po uruchomieniu zadania algorytm określa anomalne odchylenia od normy i klasyfikuje je według prawdopodobieństwa anomalności (w nawiasach podany jest kolor odpowiedniej etykiety):

Warning (niebieski): mniej niż 25
Minor (żółty): 25-50
Major (pomarańczowy): 50-75
Critical (czerwony): 75-100

Na poniższym wykresie przykład z wykrytymi anomaliami.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Tutaj widać liczbę 94, która oznacza prawdopodobieństwo anomalii. Oczywiście, że skoro wartość bliska 100, mamy do czynienia z anomalią. W kolumnie pod wykresem podana jest znikoma wartość 0.000063634% wystąpienia tam wartości metryki.

Oprócz wyszukiwania anomalii w Kibana można uruchomić prognozowanie. Robi się to bardzo łatwo w tym samym widoku z anomaliami — przycisk Forecast w prawym górnym rogu.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Prognoza jest tworzona na maksymalnie 8 tygodni do przodu. Nawet jeśli bardzo się chce — więcej nie można według projektu.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

W niektórych sytuacjach prognoza będzie bardzo przydatna, na przykład, gdy monitoruje się obciążenie użytkowników w infrastrukturze.

Multi Metric

Przechodzimy do kolejnej możliwości ML w Elastic Stack — analizy kilku metryk w jednej paczce. To nie oznacza, że zostanie analizowana zależność jednej metryki od drugiej. To to samo, co Single Metric, tylko z wieloma metrykami na jednym ekranie dla wygody porównania wpływu jednej na drugą. O analizie zależności jednej metryki od drugiej opowiemy w części Population.

Po naciśnięciu kwadratu z Multi Metric pojawi się okno z ustawieniami. Zatrzymajmy się nad nimi dokładniej.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Na początek należy wybrać pola do analizy i agregację danych według nich. Opcje agregacji są takie same jak dla Single Metric (Max, Hign Mean, Low, Mean, Distinct i inne). Następnie dane, jeśli będzie taka potrzeba, są dzielone po jednym z pól (pole Split Data). W przykładzie zrobiliśmy to według pola OriginAirportID. Zwróć uwagę, że wykres metryk po prawej stronie jest teraz przedstawiony w postaci wielu wykresów.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Pole Key Fields (Influencers) ma bezpośredni wpływ na znalezione anomalie. Domyślnie zawsze będzie tu przynajmniej jedna wartość, a możesz dodać dodatkowe. Algorytm uwzględni wpływ tych pól w analizie i pokaże najważniejsze "wpływowe" wartości.

Po uruchomieniu w interfejsie Kibana pojawi się mniej więcej taki obrazek.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

To tzw. mapa cieplna anomalii dla każdej wartości pola OriginAirportID, które wskazaliśmy w Split Data. Tak jak w przypadku Single Metric, kolor oznacza poziom anomalii. Podobną analizę można wygodnie przeprowadzać, na przykład, dla stacji roboczych, aby śledzić te, które mają podejrzanie dużo autoryzacji itd. Już pisaliśmy o podejrzanych zdarzeniach w EventLog Windows, które również można tutaj zbierać i analizować.

Pod mapą cieplną znajduje się lista anomalii, z każdego elementu można przejść do widoku Single Metric dla szczegółowej analizy.

Population

Aby szukać anomalii wśród korelacji między różnymi metrykami, w Elastic Stack dostępna jest specjalizowana analiza Population. Dzięki niej można poszukać anomali w wydajności danego serwera w porównaniu z innymi podczas, na przykład, zwiększenia liczby zapytań do docelowego systemu.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Na tej ilustracji w polu Population wskazane jest wartość, do której będą odnosić się analizowane metryki. W tym przypadku to nazwa procesu. W rezultacie zobaczymy, jak obciążenie procesora przez każdy z procesów wpływało na siebie nawzajem.

Z wykresu widać, że interpretacja analizowanych danych różni się od przypadków z Single Metric i Multi Metric. Jest to wykonane w Kibana zgodnie z zamysłem, aby poprawić percepcję rozkładu wartości analizowanych danych.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Z wykresu można zauważyć, że proces stress (nawiasem mówiąc, wywołany przez specjalne narzędzie) na serwerze poipu, który wpłynął (lub okazał się influencerem) na powstanie tej anomalii.

Advanced

Zaawansowana analiza. W przypadku analizy Advanced w Kibana pojawiają się dodatkowe ustawienia. Po kliknięciu w menu tworzenia na kafelek Advanced pojawia się takie okno z zakładkami. Zakładkę Job Details pominęliśmy celowo, tam znajdują się podstawowe ustawienia, które nie odnoszą się bezpośrednio do konfiguracji analizy.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

W summary_count_field_name opcjonalnie można podać nazwę pola w dokumentach zawierającego agregowane wartości. W tym przykładzie — liczba zdarzeń na minutę. W categorization_field_name wskazuje się nazwę pola w dokumencie, które zawiera pewną zmienną wartość. Na podstawie tego pola można dzielić analizowane dane na podzbiory. Zwróć uwagę na przycisk Add detector na wcześniejszej ilustracji. Poniżej znajduje się wynik kliknięcia tego przycisku.

Odkrywamy Machine Learning w Elastic Stack (znanym również jako Elasticsearch, znanym również jako ELK)

Tutaj znajduje się dodatkowy blok ustawień do konfiguracji detektora anomalii dla konkretnego zadania. Konkretne przypadki użycia (szczególnie w zakresie bezpieczeństwa) zamierzamy omówić w kolejnych artykułach. Na przykład, zobacz jeden z omawianych przypadków. Jest związany z wyszukiwaniem rzadko pojawiających się wartości i realizowany jest funkcją rare.

W polu function można wybrać określoną funkcję do wyszukiwania anomalii. Oprócz rare, jest jeszcze kilka interesujących funkcji — time_of_day i time_of_week. Wykrywają one anomalia w zachowaniu metryk w trakcie dnia lub tygodnia, odpowiednio. Pozostałe funkcje analizy są w dokumentacji.

W field_name wskazuje pole dokumentu, według którego będzie prowadzona analiza. By_field_name może być używane do dzielenia wyników analizy na każde osobne wartości wskazanego tutaj pola dokumentu. Jeśli wypełnisz over_field_name uzyskasz analizę populacji, którą omawialiśmy powyżej. Jeśli podasz wartość w partition_field_name, to na podstawie tego pola dokumentu będą obliczane osobne podstawowe linie dla każdej wartości (jako wartość mogą występować, na przykład, nazwa serwera lub procesu na serwerze). W exclude_frequent można wybrać wszystko lub none, co będzie oznaczać wykluczenie (lub uwzględnienie) często występujących wartości pól dokumentów.

W artykule staraliśmy się jak najkrócej przedstawić możliwości uczenia maszynowego w Elastic Stack, w tle pozostaje jeszcze wiele szczegółów. Podzielcie się w komentarzach, jakie przypadki udało się rozwiązać za pomocą Elastic Stack i do jakich zadań go wykorzystujecie. Aby się z nami skontaktować, możecie użyć wiadomości prywatnych na Habrze lub formularza kontaktowego na stronie.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster