Overvåkning av student.hioa.no og tilsatt.hioa.no
I forbindelse med utprøving av skytjenester har vi satt opp en løsning for sanntidsovervåkning av logger, med mulighet for å vise "dashboards" på storskjermer, i tillegg til bruk på egen pc. Løsningen er foreløpig tatt i bruk for å overvåke systemene som kjører på Liferay. På sikt ønsker vi å få inn flest mulig av våre interne system inn i tjenesten. Vi viser her hva som er mulig, samt presanterer litt teknisk nerde-gull for de som er interessert.
Grovt sett består systemet av en database, et søkeverktøy, og et verktøy for å vise "dashboards" (om du er interessert i flere tekniske detaljer så dekkes det senere i denne posten). Liferay-loggene dyttes til databasen gjennom et filter som tagger og parser kjente feil og advarsler om vi ønsker å ha ekstra oversikt. "Dashboarded" holder oversikt over alle feilene i sanntid. I tillegg har vi et annet verktøy som vi kan benytte for å gjøre avanserte søk over loggene for å analysere feil, hente ut statistikk for gitte tidsperioder og lignende.
Formål
Systemet er tiltenkt tre ulike formål. "Dashboard" på skjerm lar oss som jobbe med systemet fort oppdage feil og problemer med systemet. Vi oppdager fort når antall feilmeldinger og advarsler stiger og kan ta tak i problemet. Vi har også mulighet for å overvåke utvalgte feil vi vet kan oppstå fra tid til annen, og fortere oppdage og ta tak i disse.
Det andre formålet er at vi lettere kan føre statistikk og feilsøke feil som oppdages, samt undersøke når ulike feil oppstår. Dette gjør vi gjennom søkegrensesnittet. Her har vi muligheten for å «drille» ned i feil, finne ut hvor, når og hvordan feil har skjedd, samt lage avanserte grafer og uttrekk.
Til sist gir vi også mulighet for eksterne brukere å overvåke ikke-tekniske aspekter av systemet. Eksempelet her er enkelte brukere hos SK, som har tilgang, og dermed overvåkningsmulighet over logiske publiseringsfeil som vil kunne oppstå uten at dette nødvendigvis fanges opp av hverken publisist eller redaktør. Noen eksempler på dette er:
- Studiesider som mangler studiestartinformasjon
- Nyhet som har et privat illustrasjonbilde slik at eksterne brukere ikke får sett bildet.
- Programplaner systemet ikke klare å finne i ekstern publiseringsløsning
- Tomme sider
- etc.
Behov
Vi har mulighet for å slippe til eksterne brukere som har behov, og ikke mist tilpasse egne dashboards med egne oversikter der hvor dette er hensiktsmessig. Andre som ikke allerede er brukere av løsningen ønsker tilgang, har lignende behov, eller har idéer, må gjerne ta kontakt for en demonstrasjon eller en samtale.
Teknisk oversikt
Systemet kjører i Google sin skyløsning og på lavt nivå Kubernetes og Docker. Vi valgte dette prosjektet som en mulighet for å teste ut moderne skyløsninger, og lære mer om disse, uten at det skulle ha innvirkning på den daglige driften av eksisterende system. Systemet kjører på samme løsning som denne bloggen.
Systemet er i utgangspunktet selvhelbredende, og vil automatisk rette seg selv ved feil, og alle komponentene kan også restartes ved behov. Vi har ikke noen form for backup eller langtidslagring av data, da systemet er tiltenkt feilsøkings behov "her og nå". Ved omstart vil systemet "miste" sine data og starte med blanke ark. Dette er hensiktsmessig da systemet ikke skal fungere som langtidslager for logger. Systemet er heller ikke laget med tanke på failover eller kontinuerlig tilgang. Dette er en av mulighetene vi i fremtiden ønsker å utforske i skyen, men dette prosjektet er ikke særlig egnet til slikt.
Komponenter
- Et elasticsearch cluster bestående av 3 master-noder, 2 data-noder og 2 klient-noder. Dette er databasen som ligger i bunn av systemet.
- En kibana-node. Dette er grensesnittet som gir oss avanserte søke-, uttrekks- og grafe-muligheter. (Se skjermbilde nr 2 lenger opp i artikkelen)
- En logstash-node. Dette er et system som "oversetter" rå-loggdata fra tjenenerene før den puttes i databasen. Vi benytter dette for å tagge, og trekke ut interesant informasjon i loggmeldingene før de lagres i databasen. Et eksempel på dette er at vi identifiserer loggmeldinger om studieprogram som mangler studiestartsinformasjon, trekker ut programkode, semester og år, og tagger dem med "mangler_studieprograminfo". Da kan vi lett før sanntidsstatistikk over slik feil, bygge grafer og andre typer illustrasjoner og lignende. Når vi ønsker å trekke ut nye typer informasjon, legger vi nye instrukser i logstash-konfigurasjonen.
- En grafana-node. Her bygger vi dashboardene vi ønsker å ha tilgang til. Første skjermbildet som vises i artikkelen er et eksempel på dette.
- Til slutt kjører vi filebeat-agenter på alle tjenerene som mater systemet med logg-data.
Fysiske skjermer
Systemet lar oss også enkelt vise ett eller flere dashboards på fysiske skjermer i den virkelige verden, der hvor man har en behov for en "kontinuerlig" overvåkning av systemene. Alt som behøves er en fysisk skjerm, samt en raspberry pi.
Fremover
Vi ønsker etterhvert å inkludere flere system i samme løsning. Vi ønsker også å utvide med flere brukere, flere dashboards og flere visninger.
Videre har vi undersøkt flere mer avanserte loggsystemer som gir tilgang til feilmeldinger på et mye dypere nivå. F. eks. muligheten for å se feilmeldinger som oppstår i brukernes nettlesere, og kunne følge disse helt tilbake til koden hvor feilen ligger. Muligheten for sporing av feil i alle nivå, og alle komponenter er også en av fordele slike system tilbyr. Til slutt er muligheten for varsling av feil i det det oppstår noe som er ønskelig.
Vi har tidligere sett på dynatrace som en mulig utvidelse av systemet. Dynatrace er et svært kraftig verktøy, og ser svært lovende ut. Desverre er prisen tilsvarende høy, særlig når man kjører mange system og bruker kraftige tjenere. I etterkant har vi også fått tips om sentry.io. Dette er et system som ligner på dynatrace, er open source og kan kjøre on premisse, eller kjøpes i skyen. Systemet gir mye av den samme funksjonaliteten som dynatrace. Vi har ikke hatt muligheten for å teste sentry.io endra, men det er nærliggende å tro at dette er et system vi ønsker å inkludere i dette prosjektet i fremtiden.
Hør fra deg
Lurer du på noe? Har du idéer til utvidelser, bruk, eller annen teknologi som kunne bli inkludert eller bli brukt i prosjektet? Ta gjerne kontakt.