Varsling er en essensiell del av Elastic Stack, hvor data lagret i Elasticsearch brukes for å utløse varsler basert på definerte betingelser. Kibana tilbyr en intuitiv og kraftfull ramme for å sette opp slike regler, slik at man kan motta varsler via e-post, Slack, webhook eller skrive data til en Elasticsearch-indeks. Dette gjør det mulig å overvåke viktige hendelser i sanntid, som for eksempel trafikkdata hvor gjennomsnittshastigheten synker under et bestemt nivå.

Opprettelsen av varsler i Kibana skjer via Stack Management under Rules i Alerts and Insights. Her kan man definere detaljerte regler basert på indeksdata, tidsfelt og aggregerte metrikker som gjennomsnittshastighet. Ved å sette betingelser som for eksempel at gjennomsnittshastigheten for en trafikkstrøm er under 12 km/t over de siste 35 minuttene, kan systemet automatisk sende varsel ved overskridelse. Filter kan brukes for å snevre inn på spesifikke data, som trafikkstatus «congested», for å unngå unødvendige varsler.

Varslingshandlinger kan konfigureres enkelt, hvor Elastic Cloud sine forhåndsinnstilte SMTP-koblinger gjør e-postvarsler svært tilgjengelige. Handlinger kan settes til å trigge på statusendringer og utføres når terskelen overskrides, med mulighet for flere handlinger per regel. Kibana støtter også avanserte integrasjoner via webhooks og meldingsplattformer som Slack, noe som gir fleksibilitet i hvordan og hvor varslene formidles.

Teknisk sett fungerer Kibanas varslingssystem ved at det utfører periodiske kontroller av data i henhold til forhåndsdefinerte regler. Når en betingelse oppfylles, trigges en eller flere handlinger som kommuniserer med eksterne tjenester eller interne Kibana-komponenter via koblinger, såkalte connectors. Elastic Stack 8.x har introdusert flere forbedringer som øker automatiseringen og reduserer støy i varslingssystemet, for eksempel muligheten til å definere regler som kode via API eller Terraform, betingede handlinger for mer komplekse scenarioer, samt sammendrag av varslinger for å redusere antall meldinger.

For å oppnå effektive varslinger er det viktig å etablere klare strategier og prosesser. Man må sikre at dataene som varsler baseres på, er relevante og korrekte. Overvåkingsreglene bør unngå overdreven antall falske varsler og unøyaktige meldinger som kan svekke tilliten til systemet. Varsler må inneholde klare og handlingsorienterte beskrivelser, og man bør bruke tagger for å gi ekstra kontekst. Det anbefales å basere varsler på symptomer heller enn årsaker, slik at umiddelbare problemer prioriteres. Kritiske varsler bør skilles ut i egne kanaler for å sikre rask respons, mens mindre presserende informasjon kan håndteres separat.

Historisk har Elasticsearch tilbudt Watcher som et innebygd verktøy for automatisering av handlinger. Selv om Watcher fortsatt er tilgjengelig, tilbyr Kibanas varsling et mer moderne og integrert brukergrensesnitt, samt bedre støtte for visuelle data og utvidet funksjonalitet i Elastic Stack 8.x.

Det er avgjørende for brukeren å forstå at effektiv varsling ikke bare handler om å konfigurere systemet teknisk riktig, men også om å designe varslinger med tanke på menneskelig respons og organisasjonsflyt. Riktig eskalering, klare ansvarsområder, og sørge for at varsler faktisk blir tatt hånd om, er like viktige elementer. Uten en helhetlig tilnærming risikerer man at varslinger blir ignorert, og at verdifulle innsikter går tapt.

Endelig kan det være verdifullt å supplere varslinger med analyser som log rate-analyse, log pattern-analyse, endringspunktdeteksjon og bruk av usuperviserte maskinlæringsmodeller for anomalideteksjon. Disse metodene gir dypere innsikt i dataenes oppførsel og kan avdekke subtile mønstre som ikke fanges opp av enkle terskelbaserte varsler. Slik kan man bygge et robust overvåkingssystem som ikke bare reagerer på kjente problemer, men også oppdager nye og uventede hendelser i tide.

Hvordan sette opp deteksjon av anomalier i Elastic Stack med maskinlæring

Når du setter opp en konfigurasjon for deteksjon av anomalier, er det flere viktige skritt som må følges for å sikre at analysene blir pålitelige og effektive. I denne prosessen brukes maskinlæring for å finne avvik i tidsseriedata. Her er en steg-for-steg veiledning som tar deg gjennom oppsettet og hvordan du bruker de forskjellige funksjonene i Elastic Stack.

For å følge denne oppskriften, trenger du et fungerende Elasticsearch og Kibana-oppsett. Hvis du bruker Elastic Cloud, sørg for at du har en ML-node aktivert i din skyløsning. Hvis du administrerer din egen klynge, må du sette node.roller=ML. Det anbefales at du har flere dager med data tilgjengelig for best mulig resultat, slik at modellen kan lære av nok informasjon. Dette eksempelet bruker Rennes trafikdata, men det kan tilpasses ethvert sett med tidsseriedata.

Først går du til Kibana og åpner seksjonen for Maskinlæring under Analytics. Velg "Anomaly Detection" og klikk på "Jobs". Derfra kan du starte et nytt jobb ved å velge "Create anomaly detection job". Du får muligheten til å velge mellom to alternativer: Data View eller Saved Search. Velg "metrics-rennes_traffic-raw" data view for å bruke det relevante datasettet.

Når du er i maskinlæringens jobbopprettingsveiviser, velger du "Single metric" for å fortsette. Først setter du tidsrammen ved å velge "Use full data" for å analysere hele datasettet. Når du har gjort dette, velger du de spesifikke feltene som skal analyseres. I vårt tilfelle er det viktig å velge "High mean(traveltime.duration)", ettersom målet er å oppdage uvanlig høy reisetid.

En annen viktig del av oppsettet er "Bucket span"-innstillingen. Ved å velge "Convert to multi-metric job", kan du finjustere konfigurasjonen ytterligere. Dette gjør det lettere å analysere flere dimensjoner samtidig, for eksempel vei-hierarkier. Under "Split field" velger du "hierarchie" for å segmentere analysen etter veiens hierarki.

Videre kan du i "Influencers"-innstillingen legge til "traffic_status"-feltet. Dette gir deg muligheten til å se hvilke faktorer som kan ha påvirket anomaliene, som for eksempel trafikkforholdene. Etter at alle innstillinger er på plass, kan du gi jobben et navn og en beskrivelse, for eksempel "high_traveltime_duration_by_road_type". Når du er ferdig med konfigurasjonen, klikker du på "Next" for å validere jobben.

Jobben vil automatisk validere konfigurasjonen under oppsettet, og hvis alt er korrekt, får du en bekreftelse. Når du er ferdig med oppsettet, klikker du på "Create job" for å starte analysen. Etter at jobben er opprettet, kan du klikke på "View results" for å se resultatene.

Anomaly Explorer er et svært nyttig verktøy for å visualisere og analysere resultatene av anomalideteksjonen. Når du har kjørt jobben, vil du se en tidslinje for anomalier, som viser hvilke perioder med høy reisetid som skiller seg ut. Ved å klikke på en anomalie i tidslinjen får du detaljert informasjon om hendelsen, inkludert tidspunkt, alvorlighetsgrad, og hvilke faktorer som har påvirket anomalien.

Alvorlighetsgraden av anomalien vises på en skala fra 0 til 100, og jo høyere score, desto mer uvanlig er hendelsen. For eksempel kan en score på 97 indikere at den observerte reisetiden var svært usannsynlig for det spesifikke tidspunktet. Influencers-delen viser hvilke faktorer, som "traffic_status", som kan ha bidratt til anomalien. Dette kan være avgjørende for å forstå hvorfor hendelsen fant sted. I eksempelet vårt har trafikkstatusen "congested" en høy score, noe som indikerer at trafikkforholdene var en viktig faktor.

En annen viktig funksjon i Anomaly Explorer er "Top influencers", som gir informasjon om hvilke faktorer som har hatt størst innvirkning på anomaliene som er oppdaget. Dette kan gi innsikt i de underliggende årsakene til de identifiserte avvikene, og gjør det lettere å forstå hva som skjer i datasettet ditt. Det er også viktig å merke seg at maskinlæring er spesielt nyttig for å identifisere anomalier som ellers kunne vært vanskelig å oppdage med tradisjonelle metoder, som faste terskler.

Prinsippene bak anomalideteksjon i Elastic Stack er basert på tidsseriedata som blir hentet via datafeeds. Disse datafeedene trekker data fra Elasticsearch-indekser og gir det videre til maskinlæringsjobben for analyse. Prosessen deler tidsserien i "buckets" basert på den angitte bucket-spennet, og dette er avgjørende for å kunne oppdage avvik i datasettet.

Anomalideteksjon er et kraftig verktøy for å oppdage uvanlige mønstre i dataene dine. Ved å bruke maskinlæring kan du finne hendelser som ville vært vanskelig å identifisere med vanlige metoder. Dette åpner for dypere innsikt i datasettet og gjør det lettere å ta informerte beslutninger basert på dataanalyse. Det er viktig å huske på at resultatene kan variere avhengig av kvaliteten på dataene, og det er derfor best å ha flere dager med data tilgjengelig for å få meningsfulle resultater.

Hvordan implementere og teste NLP-modeller i Kibana for avansert databehandling

Når vi har importert NLP-modellene, navigerer vi til Kibana | Analytics | Machine Learning | Model management | Trained models for å få tilgang til de importerte modellene. Ved å søke etter "ner" i søkefeltet finner vi modellen "dslim_bert-base-ner", som er vellykket importert og nå er klar til å brukes. For å teste modellen klikker vi på knappen med tre prikker for å åpne menyen for handlinger, som vist i Figur 8.42. Hvis de nylig importerte modellene ikke vises, kan det være en advarsel øverst på skjermen som indikerer at ML-jobben og de trente modellene trenger å synkroniseres. Ved å klikke på "Synchronize your jobs and trained models" og deretter "Synchronize", kan vi importere de manglende modellene.

For å teste modellen, kan vi bruke et eksempel på et filmplot som er tilgjengelig på GitHub. Når vi klikker på "Test model", åpnes et vindu hvor vi kan lime inn tekst fra filmplottet og trykke på "Test"-knappen. Vi ser at de navngitte entitetene korrekt gjenkjennes av modellen, som vist i Figur 8.43.

Deretter kan vi teste en annen modell, en tekstklassifiseringsmodell, ved å søke etter "movie" i søkefeltet og finne modellen for filmgenreprediksjon. Vi tester modellen på samme måte som med NER-modellen. Denne modellen spår hvilke filmgenrer som passer best til det gitte filmplottet, og rangerer dem etter sannsynlighet, som vist i Figur 8.44.

I dette kapitlet har vi brukt Python Elasticsearch-klienten Eland for å importere to tredjeparts NLP-modeller fra Hugging Face. Når modellene var importert og distribuert, testet vi deres inferenskapasitet via Kibanas ML-grensesnitt. Strømmen av operasjoner som ble utført, er oppsummert i Figur 8.45.

Utover NER og tekstklassifisering støtter Elasticsearch også andre NLP-modelltyper, som fill-mask, spørsmål-svar, tekstlikhet, zero-shot tekstklassifisering og tekstembedding. Hvis man er interessert i å eksperimentere med andre NLP-modeller fra Hugging Face i Elasticsearch, finnes det flere eksempler på modeller som kan prøves, for eksempel tekstembedding, zero-shot klassifisering og spørsmål-svar-modeller.

For videre utforsking kan dokumentasjonen for Eland og for de støttede tredjepartsmodellene i Elasticsearch finnes via følgende lenker:

I neste kapittel vil vi se på hvordan vi kan bruke tekstembedding-modeller i semantiske søk.

Når vi nå ser på mer avansert databehandling, er vårt mål å implementere en prosess for datainntasting der vi bruker de importerte NLP-modellene til å analysere filmplottene våre. For dette formålet skal vi bruke en nedkortet versjon av filmsettet som ble brukt i tidligere kapitler, og vi vil kombinere det med avanserte databehandlingsprosesser som anonymisering av navngitte entiteter. Denne prosessen omfatter blant annet bruk av en inferensprosessor som benytter den NER-modellen vi har importert. Når vi importerer dataene, anvender vi en skreddersydd ingest pipeline som blant annet inkluderer bruk av prosessorer som anonymiserer navngitte entiteter i filmplottet.

Fremgangsmåten er som følger: Vi går til Kibana | Analytics | Machine Learning | Data visualizer | File og drar og slipper filen "wiki_movie_plots_short.csv" til opplastingssonen. Deretter velger vi "Advanced" i importskjermen og setter index-navnet til "movie-anonymized" før vi fortsetter med å opprette data visningen. Vi erstatter innholdet i tekstområdet for mapping og ingest pipeline med de spesifiserte verdiene, som finnes i dokumentasjonen for denne oppskriften. Dette inkluderer bruk av en inferensprosessor som gjenkjenner de navngitte entitetene og lagrer dem i et nytt felt kalt "anonymized_plot". Etter importen kan vi verifisere at dataene er vellykket lastet opp og anonymisert ved å søke etter spesifikke filmtitler i det anonymiserte feltet.

I selve prosessen har vi brukt flere prosessorer som jobber sammen for å oppnå anonymisering. Inferensprosessoren gjenkjenner og merker entiteter i plottet, mens en skriptprosessor fjerner de originale entitetene og etterlater bare etikettene. En redigeringsprosessor identifiserer mønstre som telefonnumre eller e-postadresser og erstatter dem med etiketter, mens andre prosessorer hjelper til med å sette dataene på riktig format og fjerne unødvendige felt.

Med denne tilnærmingen kan vi håndtere sensitive data på en trygg og effektiv måte under databehandlingen. Prosessen beskrevet her er bare en del av et mer omfattende system for avansert databehandling som kan integreres i mange forskjellige scenarier, fra analyse av filmplotter til mer generelle databehandlingsbehov.