FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

Vi pÄminner om att Elastic Stack bygger pÄ den icke-relationella databasen Elasticsearch, webbgrÀnssnittet Kibana och datainsamlingsverktyg (det mest kÀnda Àr Logstash, olika Beats, APM och andra). En av de trevliga tillÀggarna till hela denna produktstack Àr dataanalys med hjÀlp av maskininlÀrningsalgoritmer. I artikeln undersöker vi vad dessa algoritmer innebÀr. Vi ber er att lÀsa vidare.

MaskininlÀrning Àr en betald funktion i den kvalitetsfria Elastic Stack och ingÄr i X-Pack. För att börja anvÀnda den behöver man bara aktivera en 30-dagars provversion efter installationen. Efter att provperioden har löpt ut kan man begÀra stöd för förlÀngning eller köpa en prenumeration. Kostnaden för prenumerationen baseras inte pÄ datavolym, utan pÄ antalet anvÀnda noder. Nej, datavolymen pÄverkar sjÀlvklart antalet noder som behövs, men denna licensieringsmetod Àr mer mÀnniskovÀnlig i förhÄllande till företagets budget. Om hög prestanda inte Àr nödvÀndig kan man spara pengar.

ML i Elastic Stack Àr skrivet i C++ och fungerar utanför JVM, dÀr sjÀlva Elasticsearch körs. Det vill sÀga att processen (den kallas för autodetect) konsumerar allt som JVM inte tar hand om. PÄ demovÀggen Àr det inte sÄ kritiskt, men i produktionsmiljö Àr det viktigt att avsÀtta separata noder för ML-uppgifter.

MaskininlÀrningsalgoritmer delas in i tvÄ kategorier - med lÀrare och utan lÀrare. I Elastic Stack tillhör algoritmen kategorin "utan lÀrare". Enligt denna lÀnk kan man se den matematiska grunden för maskininlÀrningsalgoritmer.

För att utföra analys anvÀnder maskininlÀrningsalgoritmen data som lagras i Elasticsearch-index. Uppdrag för analys kan skapas bÄde frÄn Kibana-grÀnssnittet och via API. Om man gör detta via Kibana Àr vissa saker inte nödvÀndiga att veta. Till exempel, ytterligare index som algoritmen anvÀnder under arbetets gÄng.

Ytterligare index som anvÀnds i analysprocessen.ml-state - information om statistiska modeller (analysinstÀllningar);
.ml-anomalies-* - resultat frÄn ML-algoritmer;
.ml-notifications - instÀllningar för aviseringar om analysresultat.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

Databasen i Elasticsearch bestÄr av index och de dokument som lagras i dem. Om man jÀmför med en relationsdatabas kan man likna ett index vid databasens schema och ett dokument vid en post i en tabell. Denna jÀmförelse Àr villkorlig och ges för att förenkla förstÄelsen av det följande materialet för dem som bara hört talas om Elasticsearch.

Genom API:et finns samma funktionalitet tillgÀnglig som via webbgrÀnssnittet, sÄ för tydlighetens skull och för att förstÄ koncepten kommer vi att visa hur man konfigurerar via Kibana. I menyn till vÀnster finns en sektion för maskininlÀrning dÀr man kan skapa en ny uppgift (Job). I Kibana-grÀnssnittet ser detta ut som pÄ bilden nedan. Nu kommer vi att gÄ igenom varje typ av uppgift och visa vilken analys som kan konstrueras hÀr.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

Single Metric — analys av en enda mĂ€tning, Multi Metric — analys av tvĂ„ eller fler mĂ€tningar. I bĂ„da fallen analyseras varje mĂ€tning i en isolerad miljö, det vill sĂ€ga att algoritmen inte tar hĂ€nsyn till beteendet hos de parallellt analyserade mĂ€tningarna, vilket kan ha framkommit i fallet med Multi Metric. För att göra berĂ€kningen med hĂ€nsyn till korrelationen mellan olika mĂ€tningar kan man tillĂ€mpa Population-analys. Advanced Ă€r en finjustering av algoritmerna med ytterligare alternativ för specifika uppgifter.

Single Metric

Analys av förÀndringar i en enda mÀtning Àr det enklaste man kan göra hÀr. Efter att ha klickat pÄ Skapa uppgift kommer algoritmen att söka efter avvikelser.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

I fÀltet Aggregation kan man vÀlja tillvÀgagÄngssÀtt för att söka efter avvikelser. Till exempel, nÀr Min vÀrden som Àr lÀgre Àn typiska kommer att anses som avvikande. Det finns Max, Hign Mean, Low, Mean, Distinct och andra. Beskrivning av alla funktioner kan ses via lÀnken.

I fÀltet Field anger numeriskt fÀlt i dokumentet som vi ska analysera.

I fĂ€ltet Bucket span — granulariteten av intervallen pĂ„ tidslinjen som analysen kommer att göras pĂ„. Man kan lita pĂ„ automatiseringen eller vĂ€lja manuellt. PĂ„ bilden nedan ges ett exempel pĂ„ för lĂ„g granularitet — du kan missa en avvikelse. Med denna instĂ€llning kan man justera algoritmens kĂ€nslighet för avvikelser.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

Varaktigheten av de insamlade data Ă€r en nyckelfaktor som pĂ„verkar effektiviteten i analysen. Vid analysen bestĂ€mmer algoritmen Ă„terkommande intervall, berĂ€knar konfidensintervall (grundlinjer) och identifierar avvikelser — ovanliga avvikelser frĂ„n normalt beteende hos mĂ€tningen. Bara som exempel:

Grundlinjer för ett litet datasegment:

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

NĂ€r algoritmen har nĂ„got att lĂ€ra sig — ser grundlinjerna ut sĂ„ hĂ€r:

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

Efter att uppdraget har körts, identifierar algoritmen avvikande anomalier frÄn normen och rankar dem efter sannolikheten för anomalier (fÀrgen pÄ motsvarande etikett anges inom parentes):

Varning (blÄ): mindre Àn 25
Mindre (gul): 25-50
Större (orange): 50-75
Kritiskt (röd): 75-100

I diagrammet nedan visas ett exempel pÄ funna anomalier.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

HÀr syns siffran 94, som anger sannolikheten för anomalier. Det Àr uppenbart att eftersom vÀrdet Àr nÀra 100, sÄ Àr detta en anomali. I kolumnen under diagrammet anges en försvinnande liten sannolikhet pÄ 0,000063634% att detta vÀrde förekommer.

Förutom att söka efter anomalier i Kibana kan man ocksĂ„ initiera prognoser. Detta görs enkelt och frĂ„n samma vy med anomalier — knappen Prognos i det övre högra hörnet.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

Prognosen strĂ€cker sig högst 8 veckor framĂ„t. Även om man verkligen önskar — mer Ă€n sĂ„ gĂ„r inte enligt design.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

I vissa situationer kan prognosen vara mycket anvÀndbar, exempelvis nÀr man övervakar anvÀndarlast pÄ infrastrukturen.

Multi Metric

Vi gĂ„r vidare till den nĂ€sta möjligheten av ML i Elastic Stack — analys av flera metrik i en enda sats. Men det betyder inte att en metrik kommer att analyseras i förhĂ„llande till en annan. Det Ă€r samma sak som Single Metric, men med flera metrik pĂ„ en skĂ€rm för att underlĂ€tta jĂ€mförelse av pĂ„verkan av en pĂ„ den andra. Vi kommer att tala om analysen av beroendet mellan en metrik och en annan i delen Population.

Efter att ha klickat pÄ rutan med Multi Metric kommer ett fönster med instÀllningar att dyka upp. Vi kommer att stanna vid dem mer i detalj.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

Först mÄste du vÀlja fÀlten för analys och aggregering av data pÄ dessa. Aggregeringsalternativen hÀr Àr desamma som för Single Metric (Max, Hign Mean, Low, Mean, Distinct och andra). DÀrefter kan data vid behov delas upp enligt ett av fÀlten (fÀltet Split Data). I exemplet delade vi upp detta efter fÀltet OriginAirportID. Observera att diagrammet för metrik nu visas som en mÀngd olika diagram till höger.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

FÀltet Key Fields (Influencers) pÄverkar direkt de funna anomalierna. Som standard kommer det alltid att finnas minst ett vÀrde hÀr, men du kan lÀgga till fler. Algoritmen kommer att ta hÀnsyn till pÄverkan av dessa fÀlt vid analysen och visa de mest "inflytelserika" vÀrdena.

Efter att ha startat kommer grÀnssnittet i Kibana att se ut ungefÀr sÄ hÀr.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

Detta Àr en sÄ kallad vÀrmekarta över anomalier för varje vÀrde av fÀltet. OriginAirportID, som vi angav i Split Data. Precis som i fallet med Single Metric indikerar fÀrgen nivÄn av avvikelse. En liknande analys Àr praktisk att göra, till exempel för arbetsstationer för att spÄra de med misstÀnkt mÄnga inloggningar osv. Vi har redan skrivit om misstÀnksamma hÀndelser i EventLog Windows, som ocksÄ kan samlas in och analyseras hÀr.

Under vÀrmekartan finns en lista över avvikelser, och man kan gÄ till varje enskild avvikelse för en detaljerad analys.

Population

För att söka efter avvikelser mellan correlationer mellan olika metrik i Elastic Stack finns det en specialiserad Population-analys. Just med hjÀlp av den kan man leta efter avvikande vÀrden i prestandan hos en server i jÀmförelse med andra, till exempel vid en ökning av antalet förfrÄgningar till det mÄl systemet.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

I denna illustration anges i Population-fÀltet det vÀrde som de analyserade metrikerna kommer att relatera till. I detta fall Àr det namn pÄ processen. Som resultat kommer vi att se hur CPU-belastningen hos varje process pÄverkade varandra.

Observera att grafen med de analyserade uppgifterna skiljer sig frÄn fallen med Single Metric och Multi Metric. Detta gjordes i Kibana av design för att förbÀttra uppfattningen av distributionen av vÀrdena i de analyserade uppgifterna.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

FrÄn grafen kan man se att processen stress (för övrigt skapad av ett specialverktyg) pÄ servern poipu, som pÄverkade (eller var inflytelserik) i uppkomsten av denna avvikelse.

Avancerad

Analys med finjustering. Vid avancerad analys i Kibana visas ytterligare instÀllningar. Efter att ha klickat pÄ skapande-menyn pÄ rutan Avancerad visas en sÄdan hÀr dialogruta med flikar. Fliken Job Details har medvetet utelÀmnats, dÀr finns grundlÀggande instÀllningar som inte rör sjÀlva analysinstÀllningen.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

I summary_count_field_name kan valfritt ange namnet pĂ„ fĂ€ltet i dokumenten som innehĂ„ller aggregerade vĂ€rden. I detta exempel — antalet hĂ€ndelser per minut. I categorization_field_name anges namnet pĂ„ fĂ€ltet i dokumentet som innehĂ„ller ett visst variabelvĂ€rde. Med mönstrets hjĂ€lp kan detta fĂ€lt anvĂ€ndas för att dela upp de analyserade uppgifterna i delmĂ€ngder. Observera knappen Add detector pĂ„ föregĂ„ende illustration. Nedan resultatet av att klicka pĂ„ denna knapp.

FörstÄelse av MaskininlÀrning i Elastic Stack (Àven kÀnd som Elasticsearch, Àven kÀnd som ELK)

HÀr Àr ett ytterligare instÀllningsblock för att anpassa anomalidetektorn för en specifik uppgift. Konkreta anvÀndningsfall (sÀrskilt inom sÀkerhet) planerar vi att ta upp i kommande artiklar. Till exempel, titta pÄ ett av de behandlade fallen. Det handlar om att hitta sÀllan förekommande vÀrden och realiseras med funktionen rare.

I fĂ€ltet function kan du vĂ€lja en specifik funktion för att söka efter anomalier. Förutom rare, finns det ett par andra intressanta funktioner — time_of_day och time_of_week. Dessa identifierar anomalier i beteendet hos mĂ€tvĂ€rden under dagen eller veckan respektive. Andra analysfunktioner finns i dokumentationen.

I field_name anger det fÀlt i dokumentet som analysen kommer att baseras pÄ. By_field_name kan anvÀndas för att dela analysresultaten efter varje sÀrskilt vÀrde av det angivna fÀltet. Om over_field_name anvÀnds blir det population-analys, som vi diskuterade ovan. Om ett vÀrde anges i partition_field_name, kommer separata baslinjer att berÀknas för varje vÀrde av detta dokumentfÀlt (till exempel kan namnet pÄ servern eller processen pÄ servern fungera som vÀrde). I exclude_frequent kan du vÀlja all eller none, vilket innebÀr uteslutning (eller inkludering) av ofta förekommande vÀrden i dokumentfÀlten.

I artikeln har vi försökt ge en sÄ kortfattad presentation som möjligt av maskininlÀrningens möjligheter i Elastic Stack, men det finns fortfarande mÄnga detaljer kvar att ta upp. BerÀtta gÀrna i kommentarerna om vilka fall ni har lyckats lösa med hjÀlp av Elastic Stack och för vilka uppgifter ni anvÀnder det. För att kontakta oss kan ni anvÀnda privata meddelanden pÄ Habr eller kontaktformulÀret pÄ webbplatsen.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster