
Podsjećamo da se Elastic Stack sastoji od nerelacijske baze podataka Elasticsearch, web sučelja Kibana i alata za obradu podataka (najpoznatiji Logstash, različiti Beats, APM i drugi). Jedan od ugodnih dodataka cijeloj ovoj tehnologiji je analiza podataka pomoću algoritama strojnog učenja. U ovom članku istražujemo što ti algoritmi predstavljaju. Molimo vas da nastavite čitati.
Strojno učenje je plaćena funkcija uvjetno besplatnog Elastic Stacka i dolazi u paketu X-Pack. Da biste počeli koristiti ovu funkciju, dovoljno je nakon instalacije aktivirati 30-dnevno probno razdoblje. Nakon isteka probnog razdoblja možete zatražiti podršku za njegovo produženje ili kupiti pretplatu. Cijena pretplate ne ovisi o količini podataka, već o broju korištenih nodova. Naravno, količina podataka utječe na broj potrebnih nodova, no ovakav pristup licenciranju je prijateljskiji prema budžetu tvrtke. Ako nije potrebna visoka izvedba, moguće je uštedjeti.
ML u Elastic Stacku napisan je na C++ i radi izvan JVM-a, u kojem se pokreće Elasticsearch. To znači da proces (koji se, usput, naziva autodetect) koristi sve što JVM ne može obraditi. Na demo okruženju to nije kritično, ali u produkcijskom okruženju važno je dodijeliti odvojene nodove za zadatke strojnog učenja.
Algoritmi strojnog učenja dijele se u dvije kategorije — i . U Elastic Stacku algoritam pripada kategoriji "bez mentora". Prema možete pogledati matematički aparat algoritama strojnog učenja.
Za provođenje analize, algoritam strojnog učenja koristi podatke pohranjene u indeksima Elasticsearcha. Zadatke za analizu moguće je kreirati i iz sučelja Kibana i putem API-ja. Ako to radite putem Kibana, nije potrebno znati neke stvari. Na primjer, dodatne indekse koje algoritam koristi tijekom rada.
Dodatni indeksi korišteni tijekom analize.ml-state — informacije o statističkim modelima (postavke analize);
.ml-anomalies-* — rezultati rada algoritama strojnog učenja;
.ml-notifications — postavke obavijesti o rezultatima analize.

Struktura podataka u Elasticsearch bazi sastoji se od indeksa i u njima pohranjenih dokumenata. Ako usporedimo s relacijskom bazom podataka, indeks se može usporediti sa shemom baze podataka, a dokument s unosom u tablici. Ova usporedba je uvjetna i navedena je za pojednostavljenje razumijevanja daljnjeg materijala za one koji su tek čuli za Elasticsearch.
Putem API-ja dostupan je isti funkcionalnost kao i putem web sučelja, stoga ćemo za prikaz i razumijevanje koncepata pokazati kako se postavljaju putem Kibane. U izborniku lijevo postoji odjeljak Machine Learning, u kojem možete stvoriti novi zadatak (Job). U sučelju Kibana to izgleda kao na slici ispod. Sada ćemo razraditi svaki tip zadatka i pokazati vrste analiza koje se ovdje mogu konstruirati.

Single Metric — analiza jedne metrike, Multi Metric — analiza dvije ili više metrike. U oba slučaja, svaka metrika analizira se u izoliranom okruženju, tj. algoritam ne uzima u obzir ponašanje paralelno analiziranih metrika kao što bi se moglo činiti u slučaju Multi Metric. Da biste proveli izračun uzimajući u obzir korelaciju različitih metrika, možete primijeniti Population-analizu. A Advanced — to je fino podešavanje algoritama dodatnim opcijama za određene zadatke.
Single Metric
Analiza promjena jedne jedine metrike — najjednostavnije što se može napraviti ovdje. Nakon pritiska na Create Job, algoritam će potražiti anomalije.

U polje Aggregation možete odabrati pristup traženju anomalija. Na primjer, pri Min anomalu će se smatrati vrijednosti ispod tipičnih. Postoje Max, High Mean, Low, Mean, Distinct i drugi. Opis svih funkcija možete pogledati .
U polje Field navodi se numeričko polje u dokumentu po kojem ćemo provoditi analizu.
U polje — granularnost intervala na vremenskoj osi prema kojima će se izvršiti analiza. Možete se osloniti na automatiku ili odabrati ručno. Na slici ispod prikazan je primjer previše niske granularnosti — mogli biste propustiti anomaliju. Ovom postavkom možete promijeniti osjetljivost algoritma na anomalije.

Trajanje prikupljenih podataka — ključna stvar koja utječe na učinkovitost analize. Tijekom analize, algoritam utvrđuje ponavljajuće intervale, izračunava konfidentski interval (bazične linije) i otkriva anomalije — netipična odstupanja od uobičajenog ponašanja metrike. Za primjer:
Osnovne linije na malom uzorku podataka:

Kada algoritam ima na čemu da uči — osnovne linije izgledaju ovako:

Nakon pokretanja zadatka, algoritam definiše anomalne odstupanja od norme i rangira ih po verovatnoći anomalije (u zagradama je prikazana boja odgovarajuće oznake):
Warning (plava): manje od 25
Minor (žuta): 25-50
Major (narandžasta): 50-75
Critical (crvena): 75-100
Na grafu ispod je primer sa pronađenim anomalijama.

Ovde se vidi broj 94, koji označava verovatnoću anomalije. Jasno je da, s obzirom da je vrednost blizu 100, imamo anomaliju. U koloni ispod grafikona prikazana je trivijalno mala verovatnoća od 0.000063634% nastanka te vrednosti metrike.
Pored pronalaska anomalija u Kibani, moguće je pokrenuti prognozu. To se jednostavno radi iz iste te vizualizacije sa anomalijama — dugme Forecast u gornjem desnom uglu.

Prognoza se pravi najviše na 8 nedelja unapred. Čak i ako se jako želi — više od toga nije moguće zbog dizajna.

U nekim situacijama prognoza će biti vrlo korisna, na primer, kada se prati korisnička opterećenost na infrastrukturi.
Multi Metric
Prelazimo na sledeću mogućnost ML u Elastic Stack — analizu više metrika odjednom. Ali to ne znači da će se analizirati zavisnost jedne metrike od druge. To je isto što i Single Metric, samo s više metrika na jednom ekranu radi lakšeg poređenja uticaja jedne na drugu. O analizi zavisnosti jedne metrike od druge govorićemo u delu Population.
Nakon što pritisnete kvadrat sa Multi Metric pojaviće se prozor sa podešavanjima. O njima ćemo se detaljnije osvrnuti.

Prvo je potrebno odabrati polja za analizu i agregaciju podataka po njima. Opcije agregacije su iste kao i za Single Metric (Max, High Mean, Low, Mean, Distinct i druge). Zatim se podaci, ako želite, razdvajaju po jednom od polja (polje Split Data). U primeru to smo uradili po polju OriginAirportID. Obratite pažnju da je grafikon metrika s desne strane sada prikazan kao više grafikona.

Polje Key Fields (Influencers) direktno utiče na pronađene anomalije. Po defaultu ovde će uvek biti barem jedna vrednost, a možete dodati dodatne. Algoritam će uzeti u obzir uticaj ovih polja prilikom analize i prikazati najsnažnije "influencere".
Nakon pokretanja u interfejsu Kibana, izgled će otprilike biti ovakav.

To je tzv. toplotna mapa anomalija za svaku vrednost polja. OriginAirportID, koji smo naveli u Split Data. Kao i kod Single Metric, boja označava razinu abnormalne odstupanja. Sličnu analizu je praktično provoditi, na primjer, po radnim stanicama radi praćenja onih sa sumnjivo mnogo autorizacija itd. Već smo pisali , koje također možemo prikupljati i analizirati ovdje.
Ispod toplinske karte je popis anomalija, s kojih se može prijeći na prikaz Single Metric za detaljnu analizu.
Population
Kako bismo tražili anomalije među korelacijama između različitih metrike u Elastic Stack, postoji specijalizirana analiza Population. Upravo s njom možemo potražiti abnormalne vrijednosti u performansama nekog poslužitelja u usporedbi s ostalima, na primjer, prilikom povećanja broja zahtjeva prema ciljanom sustavu.

Na ovoj ilustraciji, u polju Population, navedena je vrijednost na koju će se odnositi analizirane metrike. U ovom slučaju, to je ime procesa. Kao rezultat, vidjet ćemo kako su opterećenja procesora od strane svakog od procesa međusobno utjecala.
Primijetite da se grafikon analiziranih podataka razlikuje od slučajeva s Single Metric i Multi Metric. To je učinjeno u Kibani s dizajnom radi poboljšanog percepcije raspodjele vrijednosti analiziranih podataka.

Iz grafikona se vidi da je proces stress (usput, stvoren posebnim alatom) na poslužitelju poipu, koji je utjecao (ili se ispostavio influencerom) na nastanak ove anomalije.
Advanced
Analitika s finim podešavanjem. U Advanced analizi u Kibani pojavljuju se dodatne postavke. Nakon što se u izborniku za stvaranje odabere pločicu Advanced, pojavljuje se ovakav prozor s karticama. Karticu Job Details smo namjerno izostavili, jer su tamo osnovne postavke koje se ne odnose izravno na postavke analize.

U summary_count_field_name opcionalno možemo navesti naziv polja iz dokumenata koje sadrži agregirane vrijednosti. U ovom primjeru — broj događaja u minuti. U navodi se naziv polja iz dokumenta koje sadrži neku promjenjivu vrijednost. Prema uzorku na to polje možemo razdvojiti analizirane podatke na podskupine. Obratite pažnju na gumb Add detector na prethodnoj ilustraciji. Ispod je rezultat pritiska na ovu tipku.

Ovdje je dodatni blok postavki za prilagodbu detektora anomalija za određeni zadatak. Specifične primjene (osobito u vezi s sigurnošću) planiramo obraditi u narednim člancima. Na primjer, jedan od obrađenih slučajeva. On se odnosi na pronalaženje rijetko prisutnih vrijednosti i realizira se .
U polje function možete odabrati određenu funkciju za pronalaženje anomalija. Osim rare, postoje još dvije zanimljive funkcije — . One otkrivaju anomalije u ponašanju metrika tijekom dana ili tjedna, odnosno. Ostale analitičke funkcije .
U field_name navodi polje dokumenta prema kojem će se provoditi analiza. By_field_name može se koristiti za razdvajanje rezultata analize po svakoj pojedinačnoj vrijednosti navedenog polja dokumenta. Ako ispunite over_field_name dobit ćete population-analizu, koju smo razmatrali ranije. Ako navedete vrijednost u partition_field_name, tada će se za to polje dokumenta izračunati posebne osnovne linije za svaku vrijednost (vrijednost može biti, na primjer, naziv servera ili proces na serveru). U exclude_frequent možete odabrati all ili none, što će značiti isključenje (ili uključivanje) često prisutnih vrijednosti polja dokumenta.
U članku smo pokušali što sažetije predstaviti mogućnosti strojnog učenja u Elastic Stack, ostalo je još mnogo detalja. Javite nam u komentarima koje ste slučajeve uspjeli riješiti pomoću Elastic Stack-a i za koje se svrhe ga koristite. Za kontakt s nama možete koristiti privatne poruke na Habru ili .
Izvor: habr.com
