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.
Instalación
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
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.