's Picture

Dashboardsafari på data-savannen

Postad av Joel Abrahamsson

För ett par veckor sedan skrev Lars Danielsson på IDG.se om hur vi arbetar med visualisering på vägg- och takhängda skärmar. I artikeln berättar Lars att vi har 220 skärmar på kontoret och att vi använder tidsseriedatabasen Prometheus för att visa applikationsmetriker på de som hänger på utvecklingsavdelningen.

Efter artikeln har vi fått mycket positiv feedback och en hel del frågor från folk som vill veta mer. I det här inlägget tänkte jag följa upp IDG-artikeln genom att visa några exempel på våra skärmar och de dashboards som de visar. Vissa dashboards har vi byggt själva men i de flesta fall använder vi Grafana. Grafana får sitt data från vår tidseriedatabas Prometheus.

För styrning av skärmarna har vi testat ett flertal lösningar. Både fristående mediaspelare kopplade till skärmarna och system som möjliggör fjärrstyrning. Till slut landade vi i ett system från PLAYipp med en liten dator som kör Linux kopplad till respektive skärm. Denna hämtar sin spellista från ett centralt system som går att styra med ett webbgränssnitt.

Låt oss börja med en av våra viktigaste dashboards, den så kallade "Infra-dashboarden".

Den här dashboarden visar övergripande status för vår driftmiljö samt våra viktigaste API:er. Vi använder oss av Docker och i produktion har vi sex fysiska servrar som kör containrar. Den översta raden visar hur många containrar som körs på respektive maskin. På raden under visas status för två av våra viktigaste infrastrukturkomponenter: ElasticSearch och Rabbit MQ. Mellan dem visas totalt antal requests per sekund inom vår miljö.

Därefter följer grafer som visar antal requests och svarstider till våra innehålls-API:er. Svarstiderna visas med två grafer, en för medianvärden och en för 90:e percentilen.

På sista raden visas totalt antal containrar som körs, en graf över antal requests till de största applikationerna samt antalet tjänster (containrar) som har problem.

Ovan dashboard är som sagt generell och används för att få en snabb överblick över hur hela vår miljö mår i stort. För viktiga komponenter, exempelvis ElasticSearch och Rabbit MQ, har vi dedikerade dashboards. Nedan är två exempel på dessa.

Dashboarden är byggd i Grafana. För att få ut data ur våra tjänster använder vi oss av Prometheus exporters.

Det finns exporters tillgängliga för många tjänster. För ElasticSearch metriker använder vi en fork av ewrs exporter: elasticsearch_exporter. Vi skriver även egna exporters till tjänster som saknar dem, till exempel BigIP och Akamai.

ElasticSearch
ElasticSearch
Rabbit MQ
Rabbit MQ

Vi använder Akamai som CDN för vårt innehåll. Detta innebär att långt ifrån alla anrop till `*.expressen.se når våra egna servrar. För att ha koll på all trafik har vi byggt en egen exporter för Akamai och tillhörande dashboard:

Vidare har vi en dashboard som mycket översiktligt visar status för mer eller mindre alla våra system. Denna dashboard heter Inkspot men kallas allt som oftast för Borat. Anledningen till det är att en bild på Borat visas i bakgrunden om alla produktionssystem mår bra.

De dashboards som vi har tittat på hittills handlar alla om vår infrastruktur. Varje utvecklingsteam har minst en skärm och en eller flera dashboards för de applikationer som de arbetar med. Ett första exempel på en sådan är dashboarden för Ariel, vår desktop- och tabletsajt.

Ariels dashboard, vilken visas på en stående TV, visar utförlig information om hur applikationen beter sig och mår i produktion. Att berätta om allt som visas skulle bli en kortare roman, men några exempel på värden som visas är:

  • Antal inkommande requests
  • Antal anrop till innehålls-API:et
  • CPU- och minnesanvändning
  • Svarskoder och svarstider
  • Statistik för cachning

Vår mobilsajt, applikationen Haddock, har en liknande dashboard:

Ett annat exempel på en teamspecifik dashboard är Quickshot-teamets. Deras visar status och grundläggande metriker för tre olika applikationer.

Standard-dashboards

För mindre applikationer är det inte alltid som man känner behov av att bygga en specifik dashboard. För dessa har vi en dashboard som kan visa grundläggande metriker från vilken applikation som helst som vi har i produktion.

Notera drop down-menyn i vänstra hörnet. Denna populeras dynamiskt av våra applikationer som är registrerade i vår Service discovery, Consul.

Innehåll och sidvisningar

Att enkelt få insyn i hur våra applikationer mår och beter sig i produktion är viktigt. Det är dock inte det enda som är viktigt. Vi värdesätter också att de som jobbar på utvecklingsavdelningen har insyn i vad som just nu är publicerat på expressen.se, hur det går för oss trafikmässigt och hur redaktionens arbete fortskrider.

Därför har vi även skärmar som visar statistik, exempelvis antal appnedladdningar och sidvisningar samt hur olika A/B-test går. Vidare har vi skärmar som visar hur våra sajter ser ut just nu samt hur många sidvisningar som just nu görs på våra sajter. Ett par exempel:

Expressen.se i olika kanaler
Expressen.se i olika kanaler
Sidvisningar i realtid
Sidvisningar i realtid

Till sist

Att visualisera applikationsmetriker och annan data runt om på vår avdelning har krävt ganska mycket jobb, inte minst med att hitta ett bra system för styrning av skärmarna samt bra verktyg för datainsamling och dashboards. När vi nu väl gjort det upplever vi dock att arbetet har varit väl värt det. Tar man en kort promenad runt om på vår avdelning, eller kommer tillbaka från lunch, får man snabbt en bra bild av hur våra viktigaste system mår, vilket innehåll som visas på våra sajter och hur mycket trafik vi har. Detta i sin tur gör att vi som arbetar med utveckling kommer närmare både våra egna system och resten av verksamheten.

PS. Missa inte vår nästa bloggpost, följ oss på Twitter!

Till startsidan