Gå til indhold
atlas

Observerbarhed

Hvor godt man kan regne ud, hvad der foregår inde i et kørende system, alene ud fra de signaler, det sender ud.

Kladde - dette opslag er endnu ikke gennemgået.

Formelt

En egenskab ved et system, opnået ved at lade det udsende detaljerede logs, metrikker og sporinger, som gør det muligt at besvare nye spørgsmål om dets indre tilstand, også dem ingen havde tænkt på på forhånd, uden at ændre systemet.

Forklaret enkelt

Som en læge, der kan finde ud af, hvorfor du er syg, ud fra blodprøver, scanninger og din egen forklaring, ikke kun ud fra om du har feber.

I praksis

I en dansk webshop er betalingen kun langsom for nogle kunder; ved at koble sporinger og logs for netop de ordrer ser en udvikler, at de alle bruger samme betalingsudbyder, hvis tjeneste svarer langsomt.

Hvorfor det betyder noget

Moderne systemer fejler på nye og mærkelige måder, og under en hændelse skal man hurtigt finde årsagen uden at vente på at tilføje nye målinger.

Teknisk uddybning

Begrebet stammer fra reguleringsteknik, hvor Rudolf Kálmán i 1960 definerede, at et lineært system er observerbart, hvis dets indre tilstand kan rekonstrueres ud fra dets output over en endelig tid. Softwareverdenen lånte ordet i midten af 2010'erne, især via Twitters observability-team og senere Honeycomb, om evnen til at forklare vilkårlig systemadfærd ud fra udsendt telemetri uden at udrulle ny kode. Forskellen til overvågning er, at overvågning dækker kendte ukendte med foruddefinerede tjek, mens observerbarhed sigter mod ukendte ukendte i distribuerede systemer, hvis fejltyper ikke alle kan forudses.

Den populære fremstilling med tre søjler (logs, metrikker, sporinger) beskriver datatyper frem for selve egenskaben og kritiseres for at fremme tre adskilte siloer. Det, der i praksis gør et system observerbart, er korrelation og dimensionalitet: hver hændelse bærer de samme identifikatorer (trace-ID, service.name, deploymentversion, tenant, region), så den, der undersøger, kan springe fra en latensspids i en metrik til exemplar-sporinger og videre til loglinjerne for ét span. En beslægtet tilgang gemmer brede strukturerede hændelser, én post pr. arbejdsenhed med snesevis eller hundredvis af felter, og afleder metrikker fra dem på forespørgselstidspunktet, hvilket bevarer felter med høj kardinalitet som kunde-ID, som et lager med forhåndsaggregerede metrikker ville afvise.

OpenTelemetry, et CNCF-projekt dannet i 2019 ud fra OpenTracing og OpenCensus, udgør det leverandørneutrale lag: API'er og SDK'er til programmeringssprogene, semantiske konventioner for attributnavne, wire-protokollen OTLP og Collectoren til at modtage, behandle og eksportere telemetri. Signalerne er traces, metrics, logs og baggage, og profilering er ved at blive tilføjet som endnu et signal. Når instrumenteringen er afkoblet fra backenden, kan leverandøren af lager og analyse skiftes uden at instrumentere koden igen.

Observerbarhed har reelle omkostninger og fejltyper. Mængden af telemetri vokser med trafik og kardinalitet, så sampling, opbevaringsniveauer og attributbudgetter er tekniske beslutninger med afvejninger i detaljegrad. Telemetri indeholder ofte personoplysninger (IP-adresser, bruger-ID'er, forespørgselsparametre), hvilket bringer den ind under databeskyttelsesforordningens krav om dataminimering og opbevaringsbegrænsning. Instrumentering, der findes, men ikke kan forespørges under en hændelse, fordi ingen kender skemaet, eller værktøjet er for langsomt, giver kun lidt værdi. Serviceniveaumål giver observerbarheden et formål ved at fastlægge, hvilken brugervendt adfærd der betyder noget, og de samme korrelerede data understøtter sikkerhedsundersøgelser og threat hunting.

Hvad du bør lære først

Alt det, dette bygger på - grundlaget først.

  1. Log
  2. →Observerbarhed

Relationer

Forudsætter
Log
Forveksl ikke med
Overvågning (monitoring)

Kilder og videre læsning

Officiel dokumentation

Hvor dataene kommer fra

Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.

Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON

Test dig selv

Indlæser…

Atlas er i beta.