Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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 — s mentorom i bez mentora. U Elastic Stacku algoritam pripada kategoriji "bez mentora". Prema ovoj poveznici 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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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 na linku.

U polje Field navodi se numeričko polje u dokumentu po kojem ćemo provoditi analizu.

U polje Bucket span — 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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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:

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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 o sumnjivim događajima u EventLog Windows, 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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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.

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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

Istražujemo Machine Learning u Elastic Stack-u (poznatom kao Elasticsearch ili ELK)

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, pogledajte jedan od obrađenih slučajeva. On se odnosi na pronalaženje rijetko prisutnih vrijednosti i realizira se funkcijom rare.

U polje function možete odabrati određenu funkciju za pronalaženje anomalija. Osim rare, postoje još dvije zanimljive funkcije — time_of_day i time_of_week. One otkrivaju anomalije u ponašanju metrika tijekom dana ili tjedna, odnosno. Ostale analitičke funkcije nalaze se u dokumentaciji.

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 obrazac za povratne informacije na web stranici.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster