Sånn fungerer lynkartet på lyn.met.no: - Mye "live debugging"

- Det har vært vanskelig å teste systemet med mange brukere, forteller utviklerne i Metrologisk institutt.

Det er Christoffer Elo og Morten Salomonsen som har utviklet lynoversikten.📸: Privat/Metrologisk institutt
Det er Christoffer Elo og Morten Salomonsen som har utviklet lynoversikten.📸: Privat/Metrologisk institutt Vis mer

Sjansen er stor for at du har vært innom lyn.met.no når det tordner som verst.

Tjenesten, som har vært drevet av Metrologisk institutt siden 2017, gir en så og si samtidsvisning av hvor lynet slår ned i Norge, Sverige, Danmark og Finland.

Bak tjenesten står to personer: Utviklerne Christoffer Elo og Morten Salomonsen.

- Når meteorologene i NRK lenker til oss, kan vi ha opptil 50.000 brukere samtidig, forteller de til kode24.

Fikk ansvaret for å lage tjenesten

Frem til og med 2016 drev Statnett systemet for registrering av lynaktivitet. I 2017 overtok Metrologisk institutt løsningen.

Det var Elo og Salomonsen som fikk ansvaret for å utvikle tjenesten.

- Selv om vi ikke er web-utviklere, måtte vi hive oss rundt og lære oss JavaScript. Det skjer en utvikling hver sommer, når det kommer mye trafikk og lyna hamrer inn. Da gjør vi en innsats, og det blir mer stabilt, sier Elo.

Lynoversikten til Metrologisk institutt viser hvor lyna slår ned i Norge, Sverige, Danmark og Finladn. 📸: Skjermdump
Lynoversikten til Metrologisk institutt viser hvor lyna slår ned i Norge, Sverige, Danmark og Finladn. 📸: Skjermdump Vis mer

Salomonsen forteller at de også har noen teknikere som reiser rundt og steller med sensorene, som samler inn data om lynene:

I Norge finnes det 14 lynsensorer, som er spredt fra Vardø i nord til Lindesnes i sør. Meteorologisk institutt har også en sensor på Shetland som er viktig med tanke på å registrere aktivitet i nordlige delen av Nordsjøen.

- Så har vi tilgang til ni sensorer fra Sverige, 12 fra Finland og seks fra Danmark. I tillegg til å samarbeide med kommersielle aktører ute i Europa om tilgang til deres sensordata, sier Salomonsen.

Lyn blir til datapakker

Hver sensor er i prinsippet en peileantenne med en GPS-klokke og en datamaskin. Disse måler de elektriske støysignaturene til lynutladningene.

Sensoren sampler støyen den registrerer med høy frekvens, og plukker ut parametere om hvordan signalet oppfører seg. Dette gir da informasjon om hvorvidt det er en lynutladning eller annen elektrisk støy.

Dette er en av lynsensorene som leverer data til lyn.met.no. 📸: Metrologisk institutt
Dette er en av lynsensorene som leverer data til lyn.met.no. 📸: Metrologisk institutt Vis mer

Er det snakk om en lynutladning, blir dette redusert til en datapakke som blir sendt inn til en sentral prosesseringsenhet, det produsenten Vaisala kaller for en Total Lightning Processor (TLP).

Dette signalet inneholder både informasjon om tid, styrke og retning på lynet. Den sentrale enheten samler informasjon fra så mange sensorer som mulig, og ser hvilke av pakkene som hører sammen.

Når den har nok pakker, beregner den med en viss sikkerhet at det har vært lyn der og der.

«Vi har holdt på med mye "live debugging", da det har vært vanskelig å teste systemet med mange brukere.»

Enklere å forholde seg til SSE

Posisjonene som sentralenheten har beregnet, blir så sendt ut på en datastrøm via en "ZeroMQ publish-subscribe"-løsning.

- Fra ZMQ-livestrømmen som går ut, blant annet til lyn.met.no, bruker vi en livevisning med server-sent events (SSE). Dette er en enveis motorvei som går fra oss til alle sammen, forteller Elo.

Han legger til at de tidligere brukte WebSocket, men syntes at SSE var en mye enklere løsning å forholde seg til.

- Problemet er at den må holde på en kobling til hver bruker, noe som tar mye ressurser på alle serverne. Men nå begynner hvertfall livevisningen å fungere veldig bra, sier Elo.

- Hvor lang tid tar det fra lynet kommer til man ser det på lyn.met.no?

- Nå går det ti sekunder fra den får dataene til den gjør beregningene. Dette skyldes at noen av sensorene har to til tre sekunders forsinkelse. Så det tar rundt 12 sekunder fra lynet slår ned, til du ser prikken på kartet, forteller Salomonsen.

Titalls tusen på det meste

For å håndtere lynene på kartet bruker utviklerne biblioteket OpenLayers.

- Det var det som fungerte best da vi opprettet løsningen, men det er en stor og kompleks løsning, så vi burde sikkert brukt noe lettere i dag. Instansene kjører i en OpenStack-løsning hos oss. Dersom trafikken tar helt av i sommer, kan vi forsøke å skalere opp flere instanser, sier Elo.

- Hvor høy trafikk er det på det meste?

- Det er noen titalls tusen samtidige brukere. Dersom du har en vanlig nettside, kommer brukeren inn, henter data og så stenges oppkoblingen. Men hver bruker som kommer inn på lyn.met.no må ha en åpen kobling som hele tiden henter data, sier han.

«Vi har klort oss fast, men etter hvert møtt veggen. Det er jo en grunn til at det er et eget fagfelt.»

Krasjet ofte i begynnelsen

lyn.met.no kan du velge ulike tidsvisninger for lynhistorikk. Når det er stor pågang, må tidsvisningen ned fra en time til tretti minutter for å få litt mindre respons.

- Vi gir både posisjon og tid til brukeren. Dette blir en stor mengde med JavaScript-objekter og det oppstår en flaskehals til databasen. Avhengig av trafikk kan det også ta litt tid før du kan se lynhistorikken, sier Elo.

- Har dere hatt mye nedetid?

- Ikke på selve siden. Vi kjører NGINX i front, så den statiske delen kommer som regel alltid opp, deretter kommer sanntidslynene relativt kjapt ved mye aktivitet. De historiske lynene kan komme sekunder eller minutter senere avhengig av trafikk, sier Elo.

I begynnelsen, da lyn.met.no kjørte på Node og socket.io, krasjet systemet ofte.

- Vi måtte manuelt restarte for å kvitte oss med frakoblede brukere. Vi har holdt på med mye "live debugging", da det har vært vanskelig å teste systemet med mange brukere, sier Elo.

Du kan leke deg med dataene

Når det lyner på om sommeren kan det bli litt overtid for utviklerne.

- Jeg pleier å følge med og bruker Grafana og Prometheus for å logge data om last og responstid. Vi kjører nå fire virtuelle servere, så får vi se om det holder, forteller Elo.

- Kan utviklere leke seg med dataene?

- Det som er åpent ligger på frost.met.no. Da burde man bruke Frost versjon 1. Dette er et rest-API, og da henter du bare når du vil, sier Elo.

Utviklerne kan fortelle om spennende planer videre for lyn.met.no. For om en liten stund skal også Yr.no begynne å ta inn lyn.

- Først må de kunne håndtere den store livetrafikken. Når de løser det, kommer det til å bli mye mer tilgjengelig. Hverken meg eller Morten kan så mye om brukerinteraksjon. Vi har klort oss fast, men etter hvert møtt veggen. Det er jo en grunn til at det er et eget fagfelt, sier Elo.

Venter på ny versjon

I utgangspunktet kan sentralenheten beregne både lyn fra sky til sky og fra sky til bakke, som du ikke vil se forskjell på på lyn.met.no, men får opp i dataene om du henter dem ut selv.

Men programvaren som TLP-en bruker i dag, har ifølge Salomonsen antakeligvis en tendens til å klassifisere en del lynutladninger som sky til sky, der det skulle vært klassifisert som sky til bakke.

- Det er en kjent feil. Lynutladningen som er beregnet med lav strømstyrke klassifiserer mye som sky til sky, men en del av dette burde vært sky til bakke.

Salomonsen legger til at de venter på en ny versjon av TLP-en.

- Men leverandøren er ennå ikke kommet med en oppdatering. Vi håper den kommer i løpet av året, sier han.