Spring til indhold

Observability

Observability og monitoring

Vi sætter observability op med Sentry, Datadog, Grafana eller Honeycomb — ikke som et grafmuseum, men så I konkret kan svare på hvad der sker, hvorfor det sker og hvem der er ramt.

3D-illustration af en gennemsigtig glas-dome-linse der svæver over et felt af lysende data-noder forbundet af orange waveform-linjer — symbolet på instrumentering der svarer på de spørgsmål der faktisk stilles.

Observability uden grafmuseum

Det her gør forskel klokken to om natten

Exceptions, releases og brugerkontekst
Sentry
OpenTelemetry på tværs af tjenester
Traces
Alerts på brugeroplevelse, ikke på tærskler
SLO
Hver alert har en konkret handling
Runbook

Sådan tænker vi observability

Svar på de spørgsmål I rent faktisk har — ikke et grafmuseum.

De fleste systemer er ikke under-overvåget — de er over-instrumenteret og under-tænkt. Dashboards i ti niveauer, alerts der ringer to gange om dagen og som ingen reagerer på, og når noget faktisk går galt, sidder I alligevel i loggen og søger efter en stack trace. Vi bygger observability der svarer på spørgsmålene I rent faktisk har klokken to om natten: hvad er gået i stykker, hvor mange er ramt, og hvad skal vi gøre nu.

Vores typiske setup er Sentry til exceptions og frontend-fejl, et metrics-system (Datadog, Grafana Cloud eller Honeycomb) til drifts-data og latency, struktureret logging via OpenTelemetry til traces på tværs af tjenester, og en runbook pr. service med konkrete handlingsanvisninger pr. alert. Vi går efter SLOs i stedet for tærskler — vi alarmerer når brugeroplevelsen er truet, ikke når en tilfældig metric krydser et tilfældigt tal.

Vi sætter også det op der gør forskel for det daglige team: pr-deploy-markører på alle grafer (så I kan se hvilken deploy der knækkede noget), pr-tenant-views (når en stor kunde klager, kan I straks se deres specifikke metrics), og en on-call-rotation med klare overdragelser så ingen sidder med et brændende system uden hjælp.

Hvad I får leveret

Sentry, traces, SLO-baserede alerts og runbooks.

Bygget så hver alert kræver en konkret handling, og hver incident efterlader læring i runbooken.

  • Sentry til exceptions og frontend-fejl

    Sentry sat op med source maps, release tracking, performance monitoring og brugerkontekst. Releases kobles til Git commits så I umiddelbart kan se hvilken kodeændring der introducerede en fejl.

  • Metrics, dashboards og forretnings-KPI'er

    Datadog, Grafana Cloud eller Honeycomb afhængigt af jeres stack og budget. Dashboards designes pr. tjeneste og pr. forretningskritisk flow — ikke som et muséum af alle tænkelige metrics.

  • Distribueret tracing via OpenTelemetry

    OpenTelemetry-instrumentering så I kan følge en request på tværs af frontend, API, database og tredjeparts-tjenester. Når noget er langsomt, ved I præcist hvor tiden bliver brugt — ikke kun at det er langsomt.

  • Struktureret logging og log-aggregation

    JSON-strukturerede logs med trace-id, request-id, tenant-id og bruger-id på hver linje. Aggregeret i Datadog, Grafana Loki eller jeres egen ELK-stack — så søgning faktisk finder noget.

  • SLO-baserede alerts der ikke trætter

    Alerts baseret på Service Level Objectives (fx '99.5% af checkout-requests under 500ms over 30 dage'), ikke på vilkårlige tærskler. Vi konfigurerer error budgets, burn-rate-alerts, og sletter alerts der ikke fører til handling.

  • Runbooks og on-call

    Hver alert har en runbook: hvad betyder det, hvilke skridt skal man tage, hvem skal eskaleres til. On-call-rotation sat op i Opsgenie eller PagerDuty med klare overdragelser. Post-mortems efter alvorlige incidents — uden skyld, med læring.

Inden I forpligter jer

Det her bør I overveje først.

  • Hvor mange værktøjer har I egentlig brug for?

    Det er fristende at have separate værktøjer for logs, metrics, traces, exceptions og uptime. Det giver bedst-i-klassen pr. lag, men også fem dashboards I skal jonglere mellem under en incident. Vi anbefaler ofte at samle på færre værktøjer (Datadog dækker det meste; Grafana Cloud også) — medmindre I har specifikke krav til ét lag.

  • Sampling og omkostning

    Fuld instrumentering på alt kan blive uoverskueligt dyrt. Vi designer en sampling-strategi: 100% af exceptions, 100% af alle 5xx-responses, 5–10% af succesfulde requests — med smart sampling der altid beholder slow requests og fejlende traces. Budget-alarmer på telemetry-forbruget selv så I ikke får en overraskelse-regning.

  • GDPR og brugerdata i logs

    Strukturerede logs må ikke indeholde PII (e-mail, navne, adresser, CPR). Vi sætter automatisk redaktion op i logging-laget og auditerer ved opsætningen. Bruger-kontekst i fejlrapporter holdes til bruger-ID og tenant-ID — alt andet kræver eksplicit beslutning.

  • Alert-fatigue er en reel risiko

    En alert der går af tre gange om dagen og som ingen reagerer på, har mistet sin betydning. Vi gennemgår alle alerts kvartalsvis: dem ingen har handlet på fjernes eller justeres. Mål er at hver pager-alert kræver konkret handling — ellers er det støj.

FAQ

Det folk plejer at spørge om.

  • Hvor lang tid tager en observability-opsætning?

    En grundlæggende opsætning med Sentry, struktureret logging, tre kerne-dashboards og en on-call-rotation er typisk 3–5 uger. En fuld opsætning med distribueret tracing, SLOs, runbooks pr. service og post-mortem-proces tager 6–10 uger. Vi anbefaler at starte med basis og bygge ud — fuld instrumentering på dag ét er ofte støj uden læring.

  • Hvilket værktøj skal vi vælge?

    Sentry er næsten altid med — det dækker exceptions og frontend-fejl godt og er rimeligt til de fleste stacks. Til metrics og traces afhænger det af jeres team: Datadog er den mest omfattende men kræver disciplin på forbrug; Grafana Cloud giver god værdi for små teams; Honeycomb er suverænt til komplekse distribuerede systemer. Vi vælger sammen i discovery efter jeres stack og drifts-team.

  • Kan vi bruge OpenTelemetry og undgå vendor lock-in?

    Ja — og det anbefaler vi som default. OpenTelemetry-instrumentering eksporteres til hvilken backend I vil. I kan starte med fx Datadog og senere skifte til Grafana Cloud uden at re-instrumentere koden. Det er en lille up-front investering der giver fleksibilitet senere.

  • Hvordan håndterer I on-call uden at brænde teamet ud?

    Med streng disciplin på alerts — kun det der kræver handling pager. Med en rotation der ikke er tungere end teamet kan håndtere (typisk én uge pr. person, ikke nødvendigvis 24/7 hvis forretningen ikke kræver det). Med follow-the-sun hvis I har spredt team. Og med post-mortems efter hver alvorlig incident der reelt rører ved processen — ikke kun finder skyld.

  • Kan I tage on-call for os?

    Ja, på en månedlig drifts-aftale. Vi tager typisk en hybrid model hvor jeres team er primær on-call (de kender produktet bedst), og vi er secondary for at backe op udenfor arbejdstid eller når en incident eskalerer. Vi har også taget primary on-call for kunder der ikke har et internt drifts-team.

Klar til at starte?

Lad os tage en uforpligtende snak.

Vi vender tilbage indenfor en arbejdsdag med konkret input — ikke et standardtilbud.