Observability-oppsett og -forbedring — metrikker, strukturert logging, tracing, alerts, Micrometer, PromQL/LogQL, Grafana og Faro. Brukes via /observability-setup ved etablering eller forbedring av overvåkning.
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Observability-oppsett og -forbedring — metrikker, strukturert logging, tracing, alerts, Micrometer, PromQL/LogQL, Grafana og Faro. Brukes via /observability-setup ved etablering eller forbedring av overvåkning.
Sett opp observability
Bruk denne skillen når du skal etablere eller forbedre observability i en Nav-applikasjon. Hold hovedreglene korte. Bruk references/ for detaljer.
Kort intro
Metrikker forteller hva som skjer
Logger forklarer hvorfor det skjedde
Traces viser hvor i flyten det skjedde
Verifiser alltid eksisterende oppsett i repoet før du legger til nye målepunkter, labels eller varsler
Arbeidsflyt
Les NAIS-manifest, application*.yaml, build.gradle.kts eller package.json for eksisterende observability-oppsett.
Finn etablerte mønstre for Micrometer, prom-client, strukturert logging, health-endepunkter og tracing.
Verifiser hvilke endepunkter som faktisk brukes (/isalive, /isready, /metrics, /internal/*, /actuator/*).
Start med standardmålinger og utvid med domenemetrikker som gir operativ verdi.
Legg til dashboards og varsler når metrikkene og label-settet er stabile.
Navngivning for metrikker og labels
Metrikker
Bruk snake_case
Bruk enhetssuffiks når det er relevant: _seconds, _bytes, _milliseconds
Countere skal ha suffikset _total
Bruk navn som beskriver domenet
Unngå camelCase, forkortelser uten mening og miljøspesifikke navn
Nav-label-konvensjoner
Nais-plattformen legger automatisk på et sett med labels. Ikke dupliser disse på egne metrikker — bruk dem konsistent i queries, dashboards og varsler:
app — applikasjonsnavn fra Nais-manifestet
team — eierskapsteam (brukes til alert-ruting og DORA-metrikker)
Foretrekk normaliserte verdier som /api/oppgaver/:id
Hver unik label-kombinasjon gir en ny tidsserie: legg bare til labels som brukes i dashboards, varsler eller feilsøking
Backend (Kotlin/Spring)
Aktiver Prometheus/Micrometer og behold eksisterende registry-oppsett hvis det finnes
Sørg for health- og metrics-endepunkter som stemmer med NAIS-manifestet
Bruk Counter, Timer, Gauge og DistributionSummary bevisst
Mål viktige domenehendelser, køstørrelser, feilrater og behandlingstid
Aktiver OpenTelemetry auto-instrumentation i NAIS før du legger til manuelle spans
Se references/micrometer.md for Kotlin/Spring-eksempler, health-oppsett og domenemetrikker.
Frontend (Next.js)
Bruk Faro når appen trenger frontend-feil, brukerhendelser eller innsikt i web-vitals
Skill mellom tekniske hendelser og reelle domenehendelser
Send aldri persondata, tokens eller andre hemmeligheter til frontend-observability
Samordne event-navn og felter med backend der korrelasjon er viktig
Se references/alerting.md for Faro-oppsett og varslingsmønstre.
Korrelasjons-ID for Nav-stacken
Korrelasjons-ID lar deg følge en forespørsel på tvers av tjenester, Kafka-meldinger og logger.
Headers
Nav-Callid — Nav-konvensjon, propager gjennom alle HTTP-kall
X-Correlation-ID — aksepter som fallback for eksterne integrasjoner
W3C traceparent — settes automatisk av OpenTelemetry-agenten
Ved innkommende request: les Nav-Callid (eller X-Correlation-ID, eller generer en UUID), og send samme verdi videre på alle utgående HTTP-kall og Kafka-headere.
MDC i JVM
Legg korrelasjonsfelt på MDC slik at logback-encoder automatisk inkluderer dem i alle logger i request-scope:
Minimumsfelt: @timestamp, level, message. Legg domenedata i top-level felt (Loki JSON-parser eksponerer dem som labels i LogQL), ikke nøstet under context. Aldri PII, tokens eller fnr.
Bruk logstash-logback-encoder (JVM) eller pino (Node) med Nais-preset. Autonmatiske Loki-labels: app, namespace, cluster, container, pod, stream — ikke dupliser disse i payloaden.
Grafana-dashboards for Nais-apper
Hver Nais-app bør ha et dashboard med følgende paneler som baseline. Bruk app, namespace og cluster som template-variabler.