Skip to content

Alert-register

Alert-registeret er Team eSyfos sporbare oversikt over observerte alertinstanser og nåværende eller historisk kildegrunnlag. Det svarer på fire ulike spørsmål uten å blande dem sammen:

  1. Hvilken regel er deklarert, hvor kommer den fra, og hva forsøker den å måle?
  2. I hvilke miljøer er regelen deployert, og er den konfigurert som enabled, paused eller disabled?
  3. Hva viste den tidsstemplede live-observasjonen?
  4. Hvilket vedtak og hvilken operativ respons gjelder i den vedtatte fasen — og hva mangler før den faktisk er implementert?

Team eSyfo · register oppdatert · 2026-08-29T11:53:41Z

Alert-register

Én sporbar oversikt over definisjon, deployert instans, observert tilstand, livssyklus, policyvedtak og implementeringsgap. Live-observasjonene er fra 2026-08-28T17:45:44Z.

30reglerschema v2
Registeret er internt konsistent. Det betyr ikke at alle regler er gode eller at evaluatorene er friske.

01 / Faktisk konfigurasjon

Hva er på, og hva er pauset?

Åpne live NAIS-alerts ↗
Prometheus37

observerte instanser

37 var not-firing; query og for matcher kilden, men evaluatorhelse er ukjent.

Grafana2

pausede regler

Begge er paused / not-evaluated; fysisk kanal og alvorlighet er uavklart.

Deaktivert0

disabled-instanser

NAIS-statusen Inactive er ikke det samme som deaktivert.

Inactive betyr ikke disabled

Alle 37 Prometheus-instanser var konfigurert enabled. NAIS viste Inactive, som betyr at ingen alertinstans fyrte ved snapshotet. Det beviser verken at evalueringen er frisk eller at signalet er godt.

Utviklingdev-gcp
6
Produksjon GCPprod-gcp
25
Produksjon FSSprod-fss
6

02 / Vedtatt operativ policy

Hva skal vekke oss – og hva skal ikke?

Beslutning navikt/team-esyfo#210 ↗
Vedtatt policy er ikke det samme som live implementasjon.

Registeret viser begge deler. 25 regler har fortsatt minst ett implementeringsgap, fordelt på 13 koblede oppgaver. Ingen pager-kandidat er klar før alle sperrer er lukket og produksjonsrutingen er testet.

0 / 2pager-klare
KEEP9

Behold

Signalet og formålet er riktig; live-regelen beholdes.

TUNE4

Juster

Formålet beholdes, men terskel, metadata eller levering må forbedres.

REPLACE4

Erstatt

Dagens signal er feil type og erstattes før det fjernes.

RETIRE11

Pensjoner

Regelen skal bort, men bare gjennom dokumentert retirement-gate.

MIGRATE2

Migrer

Signalansvaret flyttes til ny runtime eller prosess.

EXTERNAL_ONLY0

Ekstern

Eksternt eid signal som ikke rutes eller forvaltes av Team eSyfo.

Pager-kandidat2

Avbrytende respons kun ved pågående eller nært forestående alvorlig produksjonskonsekvens som krever konkret handling nå.

  • Kritisk produksjonsseverity og et signal på bruker-/domenekonsekvens, ikke bare intern årsak.
  • Testet runbook, diagnostisk dashboard, konsekvens og konkret handling.
  • Verifisert avbrytende kanal; Slack-ruting alene er ikke pager.
2 blokkert · 0 klar
Ticket21

Ikke-avbrytende, deduplisert oppfølging med konkret eier og handling innen neste bemannede arbeidsdag.

  • Signalerer et konkret problem som må rettes, men ikke krever umiddelbar avbrytelse.
  • Skal ha diagnostikk og en varig oppfølging dersom Slack-hendelsen ikke løses direkte.
Kun dashboard7

Trend, feilsøkingssignal eller ikke-handlingsrettet indikator uten operativ varslingsrute.

  • Ingen forventet umiddelbar eller neste-dag-handling er forhåndsdefinert.
  • Brukes til diagnose, korrelasjon og kapasitets-/kvalitetstrend.
Pager-sperrer2 blokkerte
Kanalansvar4 avklart
Team eSyfos avbrytende kanal (ikke etablert)Planlagt

Pager-kandidater kan vedtas, men ingen kan aktiveres før en avbrytende rute og mottakeransvar er verifisert i #217.

Uverifisert · Pager-kandidat
#esyfo-alarmAktiv

Dette er Team eSyfos verifiserte NAIS Slack-rute. Den er operativ innboks, men er ikke i seg selv dokumentasjon på pager/on-call.

Verifisert · Ticket
#esyfo-data-alertEkstern-only

Kanalen brukes av Airflow/DAG-er i isyfo-analyse og eies av data scientists; Team eSyfo importerer ikke disse reglene eller ansvaret.

Verifisert · ingen Team eSyfo-ruting
#esyfo-kibana-alertsIngen nye alerts

Ingen nåværende kode- eller plattformreferanse ble funnet. Kanalen behandles som legacy; ingen nye regler rutes dit uten ny eier- og mottakerverifikasjon.

Uverifisert · ingen Team eSyfo-ruting
Guardrails og faglig grunnlag
  • Én ordinær requestfeil, én pod, rå loggrate, rå consumer-offset eller lag > 0 alene kan ikke page.
  • Dev-instans skal aldri rute som produksjonspager.
  • Manglende data eller ukjent evaluatorhelse er ukjent overvåkningstilstand, aldri grønn.
  • esyfovarsel får bare tidsavgrensede guardrails; ny varselflyt-observability bygges i syfo-budstikka.
  • Airflow/data science og teamsykefravr-eierskap er utenfor registeret; våre consumers er fortsatt vårt operative ansvar.

Google SRE Workbook · Alerting on SLOs ↗ Prometheus · Alerting practices ↗ NAIS · PrometheusRule reference ↗ Grafana · No data and error states ↗ Apache Kafka · Monitoring ↗

03 / Må ikke reaktiveres blindt

Kafka-regelen måler offset, ikke lag

Den pausede Grafana-regelen heter «Esyfo Kafka consumer lag more than 15 min», men uttrykket sammenligner absolutt consumer-offset med 100. Live preview viste 46 serier over terskelen. Aktivering ville derfor gitt støy, ikke en typekorrekt alarm om fastlåst behandling.

SOURCE DRIFT

04 / Kildekodedrift og opprydding

4 live instanser har historisk kildegrunnlag

2 tidligere kilde-/clustergrunnlag gjelder ikke lenger, men tilhørende PrometheusRule-instanser er fortsatt observert i NAIS. Historisk SHA forklarer hvor de kom fra; den er ikke en nåværende definisjon eller deploy-bevis.

navikt/lps-oppfolgingsplan-mottak/nais/alerts.yaml1 live instans

Siste relevante kilde: c2101c2278ed. Fil og deploygrunnlag fjernet 2026-07-02 i 16a44e597fdc. Alertfilen og Altinn-consumeren ble fjernet.

  • ALTINN KAFKA OPPFOLGINGSPLAN CONSUMER LAGprod-gcp · enabled / inactiveConsumeren og alert-filen ble fjernet 2. juli 2026, men PrometheusRule-instansen finnes fortsatt i NAIS og må ryddes kontrollert.
navikt/syfobrukertilgang/alerts.yaml3 live instanser

Siste relevante kilde: 22b66f6950f8. Workflow-cluster flyttet 2023-05-22 i 9c9a259c7926. Alert-workflowen byttet fra prod-fss til prod-gcp. Snapshotet er siste repository-tilstand før cluster-cutover, ikke bevis på en deployert SHA.

  • SYFOBRUKERTILGANG IS DOWN!prod-fss · enabled / inactivesyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.
  • HIGH RATIO OF HTTP 4XX RESPONSEprod-fss · enabled / inactivesyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.
  • HIGH RATIO OF HTTP 5XX RESPONSEprod-fss · enabled / inactivesyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.
Verifiser og rydd instansene i NAIS ↗

05 / Målets livssyklus

Tjenestelivssyklus styrer investeringen – policy styrer regelen

Varig mål17

Målt runtime eller topic har ingen kjent sluttdato; enkeltregler kan likevel endres eller pensjoneres.

  • aktivitetskrav-varsel-consumer-lagMålt runtime har ingen kjent sluttdato.
  • aktivitetskrav-vurdering-consumer-lagMålt runtime har ingen kjent sluttdato.
  • lumi-definition-conflictMålt runtime har ingen kjent sluttdato.
  • lumi-submission-failureMålt runtime har ingen kjent sluttdato.
  • lumi-submission-rejection-spikeMålt runtime har ingen kjent sluttdato.
  • lumi-retention-failureMålt runtime har ingen kjent sluttdato.
  • lumi-retention-staleMålt runtime har ingen kjent sluttdato.
  • budstikka-consumer-lag-warningMålt runtime har ingen kjent sluttdato.
  • oppfolgingsplan-sykmelding-deserializationMålt runtime har ingen kjent sluttdato.
  • oppfolgingsplan-sykmelding-runtime-errorsMålt runtime har ingen kjent sluttdato.
  • oppfolgingsplan-outbox-oldest-dueMålt runtime har ingen kjent sluttdato.
  • oppfolgingsplan-outbox-expired-claimsMålt runtime har ingen kjent sluttdato.
  • oppfolgingsplan-outbox-persistent-failuresMålt runtime har ingen kjent sluttdato.
  • motebehov-downMålt runtime har ingen kjent sluttdato.
  • motebehov-http-5xxMålt runtime har ingen kjent sluttdato.
  • motebehov-http-4xxMålt runtime har ingen kjent sluttdato.
  • motebehov-oppfolgingstilfelle-lagMålt runtime har ingen kjent sluttdato.
Mål fases ut8

Målt runtime eller capability har en eksplisitt utfasingsavhengighet.

  • lps-altinn-consumer-lagConsumeren og alert-filen ble fjernet 2. juli 2026, men PrometheusRule-instansen finnes fortsatt i NAIS og må ryddes kontrollert.navikt/lps-oppfolgingsplan-mottak#637
  • brukertilgang-downsyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.navikt/syfobrukertilgang#369
  • brukertilgang-http-5xxsyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.navikt/syfobrukertilgang#369
  • brukertilgang-http-4xxsyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.navikt/syfobrukertilgang#369
  • oppfolgingsplanservice-downProduksjonstjenesten er stanset, men de sist observerte prod-fss-reglene beholdes som oppryddingsgjeld frem til en ny live-avstemming beviser at de er borte.navikt/team-esyfo#208
  • oppfolgingsplanservice-http-5xxProduksjonstjenesten er stanset, men de sist observerte prod-fss-reglene beholdes som oppryddingsgjeld frem til en ny live-avstemming beviser at de er borte.navikt/team-esyfo#208
  • oppfolgingsplanservice-http-4xxProduksjonstjenesten er stanset, men de sist observerte prod-fss-reglene beholdes som oppryddingsgjeld frem til en ny live-avstemming beviser at de er borte.navikt/team-esyfo#208
  • grafana-kafka-offsetDen pausede regelen måler absolutt consumer-offset, ikke lag, og kan fjernes uten å redusere aktiv dekning. Reelle topic-kontrakter avklares separat i #212.navikt/team-esyfo#213
Mål avvikles0

Målt tjeneste skal fjernes på besluttet dato.

06 / Porteføljemønstre

Like navn skjuler ulike runtimer

Eksakte definisjonsduplikater

0

Samme normaliserte uttrykk, for og evalueringsintervall.

Ingen funnet i snapshotet.

Kolliderende alertnavn

2

Navnet alene identifiserer ikke hvilken runtime som alarmerer.

HIGH RATIO OF HTTP 4XX RESPONSE
brukertilgang-http-4xxmotebehov-http-4xxoppfolgingsplanservice-http-4xx
HIGH RATIO OF HTTP 5XX RESPONSE
brukertilgang-http-5xxmotebehov-http-5xxoppfolgingsplanservice-http-5xx

Delte semantiske familier

6

Disse gruppene bør vurderes samlet når policy og terskler standardiseres.

domain-terminal-outcome3 regler
legacy-lag-greater-than-zero4 regler
legacy-nginx-http-4xx-ratio3 regler
legacy-nginx-http-5xx-ratio3 regler
legacy-zero-available-replicas4 regler
outbox-progress3 regler

07 / Dekningsgap

Registrert betyr ikke komplett

Policyvedtak navikt/team-esyfo#210 ↗
18 runtimer uten dedikert prodregel
aktivitetskrav-frontendaktivitetskrav-microfrontendbro-frontenddialogmote-frontenddialogmote-microfrontenddinesykmeldtedinesykmeldte-backendesyfo-narmestelederflaggskipetlps-oppfolgingsplan-mottaklumi-dashboardmeroppfolging-backendmeroppfolging-frontendmeroppfolging-microfrontendnarmesteleder-frontendsyfo-oppfolgingsplan-frontendsyfooppdfgensykepengedager-informasjon
9 topics uten enabled prodregel
aapen-syfo-oppfolgingsplan-lps-nav-v2dinesykmeldte-hendelser-v2kartleggingssporsmal-svarsen-oppfolging-svarsen-oppfolging-varselsyfo-narmesteleder-leesahsykepengedager-informasjon-topicsykepengedager.infotrygd.v1varselbus

3 cluster-mismatch

Tre syfobrukertilgang-regler finnes i prod-fss, mens godkjent runtimeinventar og live applikasjonsliste viser prod-gcp. Dette er bekreftet restkonfigurasjon fra GCP-migreringen og skal ryddes kontrollert.

  • brukertilgang-down: prod-fss → forventet prod-gcp
  • brukertilgang-http-5xx: prod-fss → forventet prod-gcp
  • brukertilgang-http-4xx: prod-fss → forventet prod-gcp

3 workflow-gap · 10 live instanser

Kildefilene finnes på default branch, men dagens GitHub Actions-kobling sørger ikke for pålitelig redeploy når de endres.

08 / Evidens

Pinnet kildegrunnlag

11 default branch · 2 historiske · 2 Grafana
Repo-SHA er ikke deploy-bevis. For vanlige repo-snapshots pinner SHA-en alertdefinisjonen som lå på default branch ved registrert innhentingstid. Slettede eller erstattede deploygrunnlag er eksplisitt merket som historiske kilder. Live query og for ble manuelt avstemt for de 37 gjeldende NAIS-instansene og lagret som fingerprint/timing-attestasjon. NAIS injiserer cluster-label og kan omorganisere matchere; dette er derfor en semantisk kontroll, ikke en automatisk PromQL-canonicalizer eller bevis på eksakt deployed commit. Det finnes ingen påstand om at alle Prometheus-reglene fortsatt styres av dagens default branch. Tre nåværende kilder har i tillegg eksplisitte workflow-gap.
Repository-snapshotnavikt/aktivitetskrav-backend/nais/alerts.yamldefault branch · hentet 2026-08-28 · 2f120532420aRepository-snapshotnavikt/esyfovarsel/nais/alerts.yamldefault branch · hentet 2026-08-28 · 4026473093e9Historisk repositorynavikt/lps-oppfolgingsplan-mottak/nais/alerts.yamlhistorisk kilde c2101c2278ed · slettet 2026-07-02Repository-snapshotnavikt/lumi/apps/lumi-api/nais/alerts/prod.yamldefault branch · hentet 2026-08-28 · c880b1a6bf27Repository-snapshotnavikt/syfo-budstikka/nais/alerts-dev.yamldefault branch · hentet 2026-08-29 · 422a150ca189Repository-snapshotnavikt/syfo-budstikka/nais/alerts-prod.yamldefault branch · hentet 2026-08-29 · 422a150ca189Repository-snapshotnavikt/syfo-oppfolgingsplan-backend/nais/alerts-dev.yamldefault branch · hentet 2026-08-28 · 6fd3e1f6a556Repository-snapshotnavikt/syfo-oppfolgingsplan-backend/nais/alerts-prod.yamldefault branch · hentet 2026-08-28 · 6fd3e1f6a556Repository-snapshotnavikt/syfobrukertilgang/nais/alerts.yamlworkflow-gap · hentet 2026-08-28 · 9571911ed147Historisk repositorynavikt/syfobrukertilgang/alerts.yamlhistorisk kilde 22b66f6950f8 · erstattet 2023-05-22Repository-snapshotnavikt/syfomotebehov/nais/alerts-gcp.yamlworkflow-gap · hentet 2026-08-28 · 0c1549a71463Repository-snapshotnavikt/syfo-dokumentporten/nais/alert.yamldefault branch · hentet 2026-08-28 · 8da3c9926f66Repository-snapshotnavikt/syfooppfolgingsplanservice/nais/alerts-fss.yamlworkflow-gap · hentet 2026-08-28 · 46e66123d27cGrafanaGrafana · meroppfolging-backend-esyfovarselUID ce3m1gf7tqwhsa · oppdatert 2024-11-22GrafanaGrafana · Esyfo Kafka AlertsUID cfq0972pkuy2ob · oppdatert 2026-06-24

09 / Regeloversikt

Alle deklarerte regler

30 registrerte regler · 39 instanser

Policy og dagens ruting står først. Tabellen kan rulles både vannrett og loddrett; regelnavnet og kolonneoverskriftene blir stående.

Regel / motorVedtak / operativ responsDagens ruting / oppfølgingDeploy / observert tilstandMålets livssyklusSemantikkBerørt / direkte målt
KAFKA PROSSESERING (VARSEL) I AKTIVITETSKRAV-BACKEND STOPPET!aktivitetskrav-varsel-consumer-lagPrometheusRule
Vis uttrykk og kilde
kafka_consumergroup_group_topic_sum_lag{topic="teamsykefravr.aktivitetskrav-varsel", group="aktivitetskrav-backend-group-v2"} > 0
navikt/aktivitetskrav-backend/nais/alerts.yaml ↗
REPLACEErstatningen: Ticket · #esyfo-alarmEier: navikt/aktivitetskrav-backendnavikt/aktivitetskrav-backend#248 ↗
Begrunnelse

Lag > 0 skiller ikke normal købygging fra fastlåst behandling; vår consumer skal måles på fremdrift, alder og terminale utfall.

Planlagt erstatning · navikt/aktivitetskrav-backend#248
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknowncritical
Varig målMålt runtime har ingen kjent sluttdato.consumer-laglegacy-lag-greater-than-zero
målt: aktivitetskrav-backendekstern: teamsykefravr.aktivitetskrav-varsel
KAFKA PROSSESERING (VURDERING) I AKTIVITETSKRAV-BACKEND STOPPET!aktivitetskrav-vurdering-consumer-lagPrometheusRule
Vis uttrykk og kilde
kafka_consumergroup_group_topic_sum_lag{topic="teamsykefravr.aktivitetskrav-vurdering", group="aktivitetskrav-backend-group-v2"} > 0
navikt/aktivitetskrav-backend/nais/alerts.yaml ↗
REPLACEErstatningen: Ticket · #esyfo-alarmEier: navikt/aktivitetskrav-backendnavikt/aktivitetskrav-backend#248 ↗
Begrunnelse

Vurderingsconsumeren trenger typekorrekt fremdrift; én record i lag er ikke en produksjonsfeil.

Planlagt erstatning · navikt/aktivitetskrav-backend#248
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknowncritical
Varig målMålt runtime har ingen kjent sluttdato.consumer-laglegacy-lag-greater-than-zero
målt: aktivitetskrav-backendekstern: teamsykefravr.aktivitetskrav-vurdering
ESYFOVARSEL IS DOWN!esyfovarsel-downPrometheusRule
Vis uttrykk og kilde
kube_deployment_status_replicas_available{deployment="esyfovarsel"} == 0
navikt/esyfovarsel/nais/alerts.yaml ↗
MIGRATEUnder migrering: Ticket · #esyfo-alarmEier: navikt/esyfovarselnavikt/esyfovarsel#1094 ↗
Begrunnelse

All-replicas-down beholdes som en tidsavgrenset ticket-guardrail under migreringen. Eventuell pager bygges på Budstikkas egne kø-, freshness- og terminalsignaler, ikke legacy-appens podtilstand.

Planlagt erstatning · navikt/team-esyfo#218
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknowncritical
Migrerer · dato ikke besluttetMål: syfo-budstikka, budstikka.v1.availabilitylegacy-zero-available-replicas
målt: esyfovarselberørt: varselbus
HIGH RATIO OF WARNING/ERRORS IN LOGesyfovarsel-log-ratioPrometheusRule
Vis uttrykk og kilde
(100 * sum by (log_app, log_namespace) (rate(logd_messages_total{log_app="esyfovarsel",log_level=~"Warning|Error"}[3m])) / sum by (log_app, log_namespace) (rate(logd_messages_total{log_app="esyfovarsel"}[3m]))) > 10
navikt/esyfovarsel/nais/alerts.yaml ↗
RETIREFrem til pensjonering: Kun dashboardEier: navikt/esyfovarselnavikt/esyfovarsel#1094 ↗
Begrunnelse

Rå Warning/Error-andel er nyttig diagnostikk, men er ikke et stabilt eller konsekvensbasert operativt signal.

Fjerning har dokumentert grunnlag
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknownwarning
Migrerer · dato ikke besluttetMål: syfo-budstikka, budstikka.v1.log-error-ratiolegacy-log-ratio
målt: esyfovarsel
ESYFOVARSEL-JOB HAS FAILEDesyfovarsel-job-failedPrometheusRule
Vis uttrykk og kilde
kube_job_failed{job_name=~"esyfovarsel-job.*", namespace="team-esyfo"} > 0
navikt/esyfovarsel/nais/alerts.yaml ↗
RETIREFrem til pensjonering: Ticket · #esyfo-alarmEier: navikt/esyfovarselnavikt/esyfovarsel#1094 ↗ navikt/team-esyfo#218 ↗
Begrunnelse

Jobbfeil følges som ticket mens legacy-jobben finnes; regelen forsvinner sammen med prosessoren etter Budstikka-paritet.

Fjerning blokkert · navikt/team-esyfo#218
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Mangler · navikt/team-esyfo#211
prod-gcpenabled · not-firing · helse unknownwarning
Migrerer · dato ikke besluttetMål: syfo-budstikka, budstikka.v1.job-failurescheduled-job-terminal-failure
målt: esyfovarsel-job
ALTINN KAFKA OPPFOLGINGSPLAN CONSUMER LAGlps-altinn-consumer-lagPrometheusRule
Vis uttrykk og kilde
kafka_consumergroup_group_topic_sum_lag{topic="alf.aapen-altinn-oppfolgingsplan-mottatt-v2", group="lps-oppfolgingsplan-mottak-1"} > 0
navikt/lps-oppfolgingsplan-mottak/nais/alerts.yaml ↗
RETIREFrem til pensjonering: Kun dashboardEier: navikt/lps-oppfolgingsplan-mottaknavikt/lps-oppfolgingsplan-mottak#637 ↗
Begrunnelse

Consumeren og kildefilen er allerede fjernet; den live regelen er foreldreløs restkonfigurasjon.

Fjerning har dokumentert grunnlag
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknownwarning
Fases utConsumeren og alert-filen ble fjernet 2. juli 2026, men PrometheusRule-instansen finnes fortsatt i NAIS og må ryddes kontrollert.consumer-laglegacy-lag-greater-than-zero
målt: lps-oppfolgingsplan-mottakekstern: alf.aapen-altinn-oppfolgingsplan-mottatt-v2
LumiSurveyDefinitionConflictlumi-definition-conflictPrometheusRule
Vis uttrykk og kilde
sum(increase(lumi_survey_definition_conflicts_total{app="lumi-api"}[5m])) > 0
navikt/lumi/apps/lumi-api/nais/alerts/prod.yaml ↗
KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/lumi
Begrunnelse

Definisjonskonflikt er et eksplisitt domeneterminalt utfall med kjent konsekvens, handling og runbook.

#esyfo-alarm Runbook: Survey definition conflicts Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.definition-conflictdomain-terminal-outcome
målt: lumi-api
LumiSubmissionFailurelumi-submission-failurePrometheusRule
Vis uttrykk og kilde
sum(increase(lumi_submissions_total{app="lumi-api",outcome="failed"}[5m])) > 0
navikt/lumi/apps/lumi-api/nais/alerts/prod.yaml ↗
KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/lumi
Begrunnelse

Autentisert innsending som ikke lagres er et konkret terminalt utfall og skal følges opp som ticket.

#esyfo-alarm Runbook: Submission health Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.submission-failuredomain-terminal-outcome
målt: lumi-api
LumiSubmissionRejectionSpikelumi-submission-rejection-spikePrometheusRule
Vis uttrykk og kilde
sum by (channel) (increase(lumi_submissions_total{app="lumi-api",outcome="rejected"}[10m])) >= 5 and sum by (channel) (increase(lumi_submissions_total{app="lumi-api",outcome="rejected"}[10m])) / clamp_min(sum by (channel) (increase(lumi_submissions_total{app="lumi-api"}[10m])), 1) > 0.1
navikt/lumi/apps/lumi-api/nais/alerts/prod.yaml ↗
KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/lumi
Begrunnelse

Regelen kombinerer forholdstall med minimumsvolum og måler et definert domeneutfall fremfor én requestfeil.

#esyfo-alarm Runbook: Submission health Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.submission-rejectiondomain-ratio-with-volume-guard
målt: lumi-api
LumiRetentionCleanupFailurelumi-retention-failurePrometheusRule
Vis uttrykk og kilde
sum(increase(lumi_retention_runs_total{app="lumi-api",outcome="failed"}[15m])) > 0
navikt/lumi/apps/lumi-api/nais/alerts/prod.yaml ↗
KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/lumi
Begrunnelse

Mislykket retention-kjøring har konkret personvern-/lagringskonsekvens og en dokumentert oppfølging.

#esyfo-alarm Runbook: Automatic retention Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.retention-failurescheduled-process-terminal-failure
målt: lumi-api
LumiRetentionCleanupStalelumi-retention-stalePrometheusRule
Vis uttrykk og kilde
max(lumi_retention_enabled{app="lumi-api"}) == 1 and on() ((time() - max(max_over_time(lumi_retention_last_success_timestamp_seconds{app="lumi-api"}[36h])) > 129600) or on() absent_over_time(lumi_retention_last_success_timestamp_seconds{app="lumi-api"}[15m]))
navikt/lumi/apps/lumi-api/nais/alerts/prod.yaml ↗
KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/lumi
Begrunnelse

Freshness og manglende serie håndteres eksplisitt; signalet dekker uteblitt suksess, ikke intern feilrate.

#esyfo-alarm Runbook: Automatic retention Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.retention-freshnessscheduled-process-freshness
målt: lumi-api
BudstikkaConsumerLagWarningbudstikka-consumer-lag-warningPrometheusRule
Vis uttrykk og kilde
max by (topic) (kafka_consumer_fetch_manager_records_lag_max{app="syfo-budstikka", namespace="team-esyfo", topic="team-esyfo.budstikka.v1"}) > 100
navikt/syfo-budstikka/nais/alerts-dev.yaml ↗ navikt/syfo-budstikka/nais/alerts-prod.yaml ↗
TUNEEtter tuning: Ticket · #esyfo-alarmEier: navikt/syfo-budstikkanavikt/team-esyfo#219 ↗
Begrunnelse

Varselgrensen er bedre enn lag > 0, men skal kalibreres mot forventet trafikk og Budstikkas egne kø- og freshnesssignaler; lag alene beviser ikke leveringsstopp.

#esyfo-alarm Runbook: Budstikka helsesjekk Dashboard: Feiloversikt
dev-gcpenabled · not-firing · helse unknownwarning
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.consumer-lagbounded-consumer-lag
målt: syfo-budstikkamålt: budstikka.v1
SykmeldingConsumerDeserializationErrorsoppfolgingsplan-sykmelding-deserializationPrometheusRule
Vis uttrykk og kilde
rate(syfo_oppfolgingsplan_backend_sykmelding_deserialization_error_total{namespace="team-esyfo"}[5m]) > 0.1
navikt/syfo-oppfolgingsplan-backend/nais/alerts-dev.yaml ↗ navikt/syfo-oppfolgingsplan-backend/nais/alerts-prod.yaml ↗
TUNEEtter tuning: Pager-kandidat · Team eSyfos avbrytende kanal (ikke etablert)Eier: navikt/syfo-oppfolgingsplan-backend Ikke pager-klar navikt/syfo-oppfolgingsplan-backend#449 ↗
Begrunnelse

Vedvarende deserialiseringsfeil kan bety at records ikke behandles; legacy-signalet skiller ikke retry fra terminal forkasting og krever avklaring før impact fastslås.

#esyfo-alarm Runbook: Sykmelding-deserialisering Dashboard: Feiloversikt
dev-gcpenabled · not-firing · helse unknownwarning
prod-gcpenabled · not-firing · helse unknowncritical
Varig målMålt runtime har ingen kjent sluttdato.deserialization-errorslegacy-kafka-deserialization-errors
målt: syfo-oppfolgingsplan-backendekstern: teamsykmelding sykmeldingsperioder
SykmeldingConsumerRuntimeErrorsoppfolgingsplan-sykmelding-runtime-errorsPrometheusRule
Vis uttrykk og kilde
rate(syfo_oppfolgingsplan_backend_sykmelding_runtime_error_total{namespace="team-esyfo"}[5m]) > 0.05
navikt/syfo-oppfolgingsplan-backend/nais/alerts-dev.yaml ↗ navikt/syfo-oppfolgingsplan-backend/nais/alerts-prod.yaml ↗
KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/syfo-oppfolgingsplan-backendnavikt/team-esyfo#217 ↗
Begrunnelse

Vedvarende transiente consumerfeil er handlingsrettet, men backoff og retry gjør dette til ticket fremfor pager.

#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
dev-gcpenabled · not-firing · helse unknownwarning
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.runtime-errorskafka-transient-runtime-errors
målt: syfo-oppfolgingsplan-backendekstern: teamsykmelding sykmeldingsperioder
OppfolgingsplanOutboxOldestDueTooOldoppfolgingsplan-outbox-oldest-duePrometheusRule
Vis uttrykk og kilde
syfo_oppfolgingsplan_backend_outbox_oldest_due_age_seconds{namespace="team-esyfo",message_type=~"OPPFOLGINGSPLAN_.*"} > 900
navikt/syfo-oppfolgingsplan-backend/nais/alerts-dev.yaml ↗ navikt/syfo-oppfolgingsplan-backend/nais/alerts-prod.yaml ↗
KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/syfo-oppfolgingsplan-backendnavikt/team-esyfo#217 ↗
Begrunnelse

Eldste leveringsklare arbeid over 15 minutter er et direkte freshness-/progress-signal, men én forsinket melding mangler foreløpig dokumentert tids-SLO og volum-/impactkrav for pager.

#esyfo-alarm Runbook: Oppfølgingsplan: utgående varselkø Dashboard: Feiloversikt
dev-gcpenabled · not-firing · helse unknownwarning
prod-gcpenabled · not-firing · helse unknowncritical
Varig målMålt runtime har ingen kjent sluttdato.outbox-oldest-ageoutbox-progress
målt: syfo-oppfolgingsplan-backendberørt: syfo-budstikkaberørt: budstikka.v1
OppfolgingsplanOutboxExpiredClaimsoppfolgingsplan-outbox-expired-claimsPrometheusRule
Vis uttrykk og kilde
syfo_oppfolgingsplan_backend_outbox_expired_claims{namespace="team-esyfo",message_type=~"OPPFOLGINGSPLAN_.*"} > 0
navikt/syfo-oppfolgingsplan-backend/nais/alerts-dev.yaml ↗ navikt/syfo-oppfolgingsplan-backend/nais/alerts-prod.yaml ↗
KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/syfo-oppfolgingsplan-backendnavikt/team-esyfo#217 ↗
Begrunnelse

Utløpte claims er et konkret prosessproblem, men må vurderes sammen med alder før det kan være avbrytende.

#esyfo-alarm Runbook: Oppfølgingsplan: utgående varselkø Dashboard: Feiloversikt
dev-gcpenabled · not-firing · helse unknownwarning
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.outbox-expired-claimsoutbox-progress
målt: syfo-oppfolgingsplan-backendberørt: syfo-budstikkaberørt: budstikka.v1
OppfolgingsplanOutboxPersistentFailuresoppfolgingsplan-outbox-persistent-failuresPrometheusRule
Vis uttrykk og kilde
syfo_oppfolgingsplan_backend_outbox_retrying{namespace="team-esyfo",message_type=~"OPPFOLGINGSPLAN_.*"} > 0
navikt/syfo-oppfolgingsplan-backend/nais/alerts-dev.yaml ↗ navikt/syfo-oppfolgingsplan-backend/nais/alerts-prod.yaml ↗
KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/syfo-oppfolgingsplan-backendnavikt/team-esyfo#217 ↗
Begrunnelse

Vedvarende retry viser et konkret feilobjekt, men én fastlåst melding alene skal følges som ticket, ikke page.

#esyfo-alarm Runbook: Oppfølgingsplan: utgående varselkø Dashboard: Feiloversikt
dev-gcpenabled · not-firing · helse unknownwarning
prod-gcpenabled · not-firing · helse unknowncritical
Varig målMålt runtime har ingen kjent sluttdato.outbox-persistent-failuresoutbox-progress
målt: syfo-oppfolgingsplan-backendberørt: syfo-budstikkaberørt: budstikka.v1
SYFOBRUKERTILGANG IS DOWN!brukertilgang-downPrometheusRule
Vis uttrykk og kilde
kube_deployment_status_replicas_available{deployment="syfobrukertilgang"} == 0
navikt/syfobrukertilgang/alerts.yaml ↗ navikt/syfobrukertilgang/nais/alerts.yaml ↗
RETIREFrem til pensjonering: Ticket · #esyfo-alarmEier: navikt/syfobrukertilgangnavikt/syfobrukertilgang#369 ↗ navikt/syfomotebehov#755 ↗
Begrunnelse

All-replicas-down er en midlertidig ticket-guardrail mens den antatt siste konsumenten og eventuelle øvrige konsumenter verifiseres og flyttes; regelen pensjoneres når cutover er bevist.

Fjerning blokkert · navikt/syfomotebehov#755
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-fssenabled · not-firing · helse unknowncritical
prod-gcpenabled · not-firing · helse unknowncritical
Fases utsyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.availabilitylegacy-zero-available-replicas
målt: syfobrukertilgang
HIGH RATIO OF HTTP 5XX RESPONSEbrukertilgang-http-5xxPrometheusRule
Vis uttrykk og kilde
(100 * (sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", status=~"^5\d\d", service="syfobrukertilgang"}[5m])) / sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", service="syfobrukertilgang"}[5m])))) > 2
navikt/syfobrukertilgang/alerts.yaml ↗ navikt/syfobrukertilgang/nais/alerts.yaml ↗
RETIREFrem til pensjonering: Ticket · #esyfo-alarmEier: navikt/syfobrukertilgangnavikt/syfobrukertilgang#369 ↗ navikt/syfomotebehov#755 ↗
Begrunnelse

5xx beholdes kun som ikke-avbrytende guardrail frem til tjenesten ikke lenger har konsumenter.

Fjerning blokkert · navikt/syfomotebehov#755
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-fssenabled · not-firing · helse unknownwarning
prod-gcpenabled · not-firing · helse unknownwarning
Fases utsyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.http-5xx-ratiolegacy-nginx-http-5xx-ratio
målt: syfobrukertilgang
HIGH RATIO OF HTTP 4XX RESPONSEbrukertilgang-http-4xxPrometheusRule
Vis uttrykk og kilde
(100 * (sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", status=~"^4\d\d", service="syfobrukertilgang"}[5m])) / sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", service="syfobrukertilgang"}[5m])))) > 10
navikt/syfobrukertilgang/alerts.yaml ↗ navikt/syfobrukertilgang/nais/alerts.yaml ↗
RETIREFrem til pensjonering: Kun dashboardEier: navikt/syfobrukertilgangnavikt/syfobrukertilgang#369 ↗ navikt/syfomotebehov#755 ↗
Begrunnelse

Generisk 4xx-rate er diagnostikk og skal ikke varsle; endelig regelcleanup følger tjenestens cutover.

Fjerning blokkert · navikt/syfomotebehov#755
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-fssenabled · not-firing · helse unknownwarning
prod-gcpenabled · not-firing · helse unknownwarning
Fases utsyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.http-4xx-ratiolegacy-nginx-http-4xx-ratio
målt: syfobrukertilgang
SYFOMOTEBEHOV IS DOWN!motebehov-downPrometheusRule
Vis uttrykk og kilde
kube_deployment_status_replicas_available{deployment="syfomotebehov"} == 0
navikt/syfomotebehov/nais/alerts-gcp.yaml ↗
TUNEEtter tuning: Pager-kandidat · Team eSyfos avbrytende kanal (ikke etablert)Eier: navikt/syfomotebehov Ikke pager-klar navikt/syfomotebehov#753 ↗
Begrunnelse

Null tilgjengelige replikaer kan være pager-kandidat, men workflow, konsekvens, runbook og avbrytende rute må verifiseres først.

#esyfo-alarm Runbook: Tilgjengelighet for syfomotebehov Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknowncritical
Varig målMålt runtime har ingen kjent sluttdato.availabilitylegacy-zero-available-replicas
målt: syfomotebehov
HIGH RATIO OF HTTP 5XX RESPONSEmotebehov-http-5xxPrometheusRule
Vis uttrykk og kilde
(100 * sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", status=~"^5\d\d", service="syfomotebehov"}[5m])) / sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", service="syfomotebehov"}[5m]))) > 2
navikt/syfomotebehov/nais/alerts-gcp.yaml ↗
TUNEEtter tuning: Ticket · #esyfo-alarmEier: navikt/syfomotebehovnavikt/syfomotebehov#753 ↗
Begrunnelse

5xx trenger minimumsvolum eller SLO-burn-rate; én requestfeil skal ikke gi operativ hendelse.

#esyfo-alarm Runbook: HTTP og runtime Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.http-5xx-ratiolegacy-nginx-http-5xx-ratio
målt: syfomotebehov
HIGH RATIO OF HTTP 4XX RESPONSEmotebehov-http-4xxPrometheusRule
Vis uttrykk og kilde
(100 * sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", status=~"^4\d\d", service="syfomotebehov"}[5m])) / sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", service="syfomotebehov"}[5m]))) > 10
navikt/syfomotebehov/nais/alerts-gcp.yaml ↗
RETIREFrem til pensjonering: Kun dashboardEier: navikt/syfomotebehovnavikt/syfomotebehov#753 ↗
Begrunnelse

Generisk 4xx-rate blander forventede avvisninger og klientfeil uten definert teamhandling.

Fjerning har dokumentert grunnlag
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.http-4xx-ratiolegacy-nginx-http-4xx-ratio
målt: syfomotebehov
KAFKA ISOPPFOLGINGSTILFELLE-TOPIC CONSUMER LAGmotebehov-oppfolgingstilfelle-lagPrometheusRule
Vis uttrykk og kilde
kafka_consumergroup_group_topic_sum_lag{topic="teamsykefravr.isoppfolgingstilfelle-oppfolgingstilfelle-person", group="syfomotebehov-p-isoppfolgingstilfelle"} > 0
navikt/syfomotebehov/nais/alerts-gcp.yaml ↗
REPLACEErstatningen: Ticket · #esyfo-alarmEier: navikt/syfomotebehovnavikt/syfomotebehov#754 ↗
Begrunnelse

Eksternt topic-eierskap endrer ikke vårt consumeransvar, men lag > 0 må erstattes av alder/fremdrift og terminale utfall.

Planlagt erstatning · navikt/syfomotebehov#754
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknownwarning
Varig målMålt runtime har ingen kjent sluttdato.consumer-laglegacy-lag-greater-than-zero
målt: syfomotebehovekstern: teamsykefravr.isoppfolgingstilfelle-oppfolgingstilfelle-person
syfo-dokumentporten-varselinstruks-terminal-errordokumentporten-terminal-varsel-errorPrometheusRule
Vis uttrykk og kilde
sum(increase(syfo_dokumentporten_varsel_permanent_error_total{app="syfo-dokumentporten",namespace="team-esyfo"}[5m])) > 0
navikt/syfo-dokumentporten/nais/alert.yaml ↗
MIGRATEUnder migrering: Ticket · #esyfo-alarmEier: navikt/syfo-dokumentportennavikt/team-esyfo#218 ↗
Begrunnelse

Terminal feil er et godt domeneutfall, men én melding krever ticket; ansvaret skal migreres til Budstikkas egne delivery- og terminalsignaler.

Planlagt erstatning · navikt/team-esyfo#218
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Feiloversikt
prod-gcpenabled · not-firing · helse unknowncritical
Migrerer · dato ikke besluttetMål: syfo-budstikka, budstikka.v1.permanent-delivery-failuredomain-terminal-outcome
målt: syfo-dokumentportenberørt: varselbus
SYFOOPPFOLGINGSPLAN IS DOWN!oppfolgingsplanservice-downPrometheusRule
Vis uttrykk og kilde
kube_deployment_status_replicas_available{deployment="syfooppfolgingsplanservice"} == 0
navikt/syfooppfolgingsplanservice/nais/alerts-fss.yaml ↗
RETIREFrem til pensjonering: Ticket · #esyfo-alarmEier: navikt/syfooppfolgingsplanservicenavikt/team-esyfo#208 ↗
Begrunnelse

Tjenesten er stanset. Regelen beholdes bare som synlig oppryddingsgjeld og skal ikke få ny pagerinvestering.

Fjerning blokkert · navikt/team-esyfo#208
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Mangler · navikt/team-esyfo#211
prod-fssenabled · not-firing · helse unknowncritical
Fases utProduksjonstjenesten er stanset, men de sist observerte prod-fss-reglene beholdes som oppryddingsgjeld frem til en ny live-avstemming beviser at de er borte.availabilitylegacy-zero-available-replicas
målt: syfooppfolgingsplanservice
HIGH RATIO OF HTTP 5XX RESPONSEoppfolgingsplanservice-http-5xxPrometheusRule
Vis uttrykk og kilde
(100 * sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", status=~"^5\d\d", service="syfooppfolgingsplanservice"}[5m])) / sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", service="syfooppfolgingsplanservice"}[5m]))) > 2
navikt/syfooppfolgingsplanservice/nais/alerts-fss.yaml ↗
RETIREFrem til pensjonering: Ticket · #esyfo-alarmEier: navikt/syfooppfolgingsplanservicenavikt/team-esyfo#208 ↗
Begrunnelse

Tjenesten er stanset. 5xx-regelen beholdes bare som synlig oppryddingsgjeld.

Fjerning blokkert · navikt/team-esyfo#208
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Mangler · navikt/team-esyfo#211
prod-fssenabled · not-firing · helse unknownwarning
Fases utProduksjonstjenesten er stanset, men de sist observerte prod-fss-reglene beholdes som oppryddingsgjeld frem til en ny live-avstemming beviser at de er borte.http-5xx-ratiolegacy-nginx-http-5xx-ratio
målt: syfooppfolgingsplanservice
HIGH RATIO OF HTTP 4XX RESPONSEoppfolgingsplanservice-http-4xxPrometheusRule
Vis uttrykk og kilde
(100 * sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", status=~"^4\d\d", service="syfooppfolgingsplanservice"}[5m])) / sum by (backend) (rate(nginx_ingress_controller_requests{namespace="team-esyfo", service="syfooppfolgingsplanservice"}[5m]))) > 10
navikt/syfooppfolgingsplanservice/nais/alerts-fss.yaml ↗
RETIREFrem til pensjonering: Kun dashboardEier: navikt/syfooppfolgingsplanservicenavikt/team-esyfo#208 ↗
Begrunnelse

Tjenesten er stanset. 4xx-regelen beholdes bare som synlig oppryddingsgjeld.

Fjerning blokkert · navikt/team-esyfo#208
#esyfo-alarm Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Mangler · navikt/team-esyfo#211
prod-fssenabled · not-firing · helse unknownwarning
Fases utProduksjonstjenesten er stanset, men de sist observerte prod-fss-reglene beholdes som oppryddingsgjeld frem til en ny live-avstemming beviser at de er borte.http-4xx-ratiolegacy-nginx-http-4xx-ratio
målt: syfooppfolgingsplanservice
Alert for avvik i utsendte varslergrafana-varsel-avvikGrafana-managed
Vis uttrykk og kilde
sum by (meroppfolging_backend_sen_oppfolging_varsler_to_be_sent_total) (rate(meroppfolging_backend_sen_oppfolging_varsler_to_be_sent_total{app="meroppfolging-backend"}[7d])) - sum by (esyfovarsel_mer_veiledning_notice_sent_total) (rate(esyfovarsel_mer_veiledning_notice_sent_total{app="esyfovarsel"}[7d]))
Grafana · meroppfolging-backend-esyfovarsel ↗
REPLACEErstatningen: Kun dashboardEier: navikt/team-esyfonavikt/team-esyfo#213 ↗
Begrunnelse

Den pausede differansen sammenligner kandidater med et senere legacy-tellepunkt etter deler av fanouten og er verken regnskapsmessig eller prosessornøytral. Erstatningen må vise separat produsent- og prosessorhelse for SM_MER_VEILEDNING uten å innføre per-hendelse-regnskap.

Planlagt erstatning · navikt/team-esyfo#218
Slack-esyfo-alert · fysisk kanal uavklart Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Mangler · navikt/team-esyfo#211
prod-gcppaused · not-evaluated · helse unknownunclassified
Migrerer · dato ikke besluttetMål: syfo-budstikka, budstikka.v1.migration-reconciliationlegacy-notification-reconciliation
målt: meroppfolging-backendmålt: esyfovarsel
Esyfo Kafka consumer lag more than 15 mingrafana-kafka-offsetGrafana-managed
Vis uttrykk og kilde
kafka_consumer_group_offset{topic=~"team-esyfo.*"} > 100
Grafana · Esyfo Kafka Alerts ↗
RETIREFrem til pensjonering: Kun dashboardEier: navikt/team-esyfonavikt/team-esyfo#213 ↗
Begrunnelse

Regelen er pauset og måler absolutt offset, ikke lag. Den gir derfor verken aktiv eller korrekt dekning og skal fjernes uten én ny global erstatningsregel.

Fjerning har dokumentert grunnlag
Slack-esyfo-alert · fysisk kanal uavklart Runbook: Mangler · navikt/team-esyfo#211 Dashboard: Mangler · navikt/team-esyfo#211
prod-gcppaused · not-evaluated · helse unknownunclassified
Fases utDen pausede regelen måler absolutt consumer-offset, ikke lag, og kan fjernes uten å redusere aktiv dekning. Reelle topic-kontrakter avklares separat i #212.raw-consumer-offsetlegacy-raw-kafka-offset
målt: aapen-syfo-oppfolgingsplan-lps-nav-v2målt: budstikka.v1målt: dinesykmeldte-hendelser-v2målt: kartleggingssporsmal-svarmålt: sen-oppfolging-svarmålt: sen-oppfolging-varselmålt: syfo-narmesteleder-leesahmålt: sykepengedager-informasjon-topicmålt: sykepengedager.infotrygd.v1målt: varselbus
Eksplisitt utenfor scope (3)
  • airflow-isyfo-analyse — Airflow og data-science-varsling eies av data scientists og inngår ikke i teamets alert-register.
  • teamsykefravr — Eksterne topics nevnes som avhengigheter, men namespace og varsler eies ikke av Team eSyfo.
  • dulting-studio-and-janitors — Det bygges ingen varig alert-investering for dulting-studio eller syfojanitor-*.

Vedtaket i korte trekk

Alert-policyen i #210 klassifiserer hver logiske regel eksplisitt som KEEP, TUNE, REPLACE, RETIRE, MIGRATE eller EXTERNAL_ONLY. Ingen regel får en implisitt standardbeslutning; de genererte tellingene står i registervisningen over.

Dette er en vedtatt operativ policy, ikke en beskrivelse av hva dagens Slack-/Grafana-ruting allerede leverer. Responsen er eksplisitt fasebundet: for eksempel «etter tuning», «erstatningen», «under migrering» eller «frem til pensjonering». En RETIRE-regel med ticket betyr derfor en midlertidig guardrail, ikke at ticket er regelens endelige måltilstand. Pager-kandidatene står som blokkert. En kandidat kan først markeres klar når den har alvorlig produksjonskonsekvens, konkret umiddelbar handling, kritisk produksjonsseverity, testet runbook, relevant diagnostisk dashboard og en verifisert avbrytende kanal. #esyfo-alarm er verifisert som Team eSyfos NAIS-rute, men Slack-ruting alene er ikke pager/on-call.

Responsklassene betyr:

  • Pager: avbrytende respons på pågående eller nært forestående alvorlig bruker-/domenekonsekvens som krever handling nå.
  • Ticket: deduplisert, ikke-avbrytende oppfølging med konkret eier og handling innen neste bemannede arbeidsdag.
  • Dashboard-only: trend eller diagnostikk uten forhåndsdefinert operativ handling og uten varslingsrute.

Én ordinær requestfeil, én pod, rå loggrate, rå consumer-offset eller lag > 0 alene kan ikke page. Dette følger prinsippene om handlingsrettede symptomsignaler og SLO-baserte varsler fra Google SRE Workbook og Prometheus alerting practices. Kafka-fremdrift skal bruke typekorrekt behandlingstid/ferskhet og terminale utfall, ikke absolutt offset; se Apache Kafka monitoring.

Kanalene er avklart slik:

  • #esyfo-alarm er Team eSyfos aktive operative Slack-inngang for ticket-respons. Den får ikke pager-semantikk uten separat verifisert avbrytende rute.
  • #esyfo-data-alert brukes av Airflow/DAG-er i isyfo-analyse og eies av data scientists. Reglene importeres ikke i dette registeret.
  • #esyfo-kibana-alerts har ingen verifisert nåværende kode-/plattformreferanse. Den er no-new-alerts frem til eier og mottaker eventuelt verifiseres på nytt.

RETIRE betyr heller ikke «slett nå». Hver pensjonering har enten verifisert/begrunnet bortfall eller en eksplisitt gate. For eksempel kan syfobrukertilgang-reglene ikke fjernes fra GCP før tilgangscutoveren i syfomotebehov er bevist, mens de tre foreldreløse FSS-instansene kan ryddes separat.

Slik skal statusene leses

Registeret skiller bevisst mellom konfigurasjon, evaluering og evaluatorhelse. NAIS viste 39 PrometheusRule-instanser som Inactive ved det opprinnelige snapshotet. Inactive betyr bare at ingen alertinstans fyrte akkurat da. Det er derfor ikke det samme som disabled, og heller ikke et bevis på at evaluator eller query er frisk.

Etter snapshotet ble de to BudstikkaConsumerLagCritical-instansene fjernet i syfo-budstikka#263. Deployen fullførte i både dev og prod, så siste attesterte produksjonssnapshot inneholder 37 PrometheusRule-instanser. Etter bekreftet stopp av syfooppfolgingsplanservice beholdes de tre legacyreglene og observasjonene som eksplisitt oppryddingsgjeld frem til live-oppryddingen er verifisert i #208; de er ikke del av forventet aktiv runtime. Det frosne v1-snapshotet beholder de opprinnelige 39 som historikk. #454 har i tillegg deployert en branch-basert dev-canary med tre endrede outbox-uttrykk og én ny stalenessregel; dette er eksplisitt drift utenfor det kanoniske default-branch-snapshotet frem til merge, proddeploy og ny live-avstemming. Budstikkas egne kø-/freshnesssignaler og terminale utfall er fortsatt en strategisk pager-kandidat i #217, men telles ikke som en eksisterende regel før signalet og alerten faktisk er implementert og verifisert.

De to Grafana-reglene var derimot eksplisitt paused / not-evaluated. Kafka-regelen må ikke bare slås på: navnet omtaler consumer lag, mens uttrykket måler absolutt consumer-offset. Live preview viste 46 serier over terskelen. Siden regelen både er pauset og semantisk ugyldig, er den klar for begrunnet sletting uten en ny global kopi. Bare budstikka.v1 har direkte overlapp via én app-avgrenset warning-regel; de ni øvrige topic-gapene beholdes i #212, som definerer riktig eier og signal per topic.

Den andre Grafana-regelen sammenligner kandidater i meroppfolging-backend med en senere legacy-teller i esyfovarsel. Tellerne har ulike prosesseringsgrenser og kan ikke brukes som et regnskap. Den forblir pauset frem til en prosessornøytral erstatning er shadow-verifisert for akkurat SM_MER_VEILEDNING; en vilkårlig første Budstikka-flyt oppfyller ikke dette kravet.

Prometheus-reglene rutes i dag via NAIS-teaminnstillingen til #esyfo-alarm. Grafana-reglene har kontaktpunktet Slack-esyfo-alert, men den fysiske kanalen bak webhooken er ikke synlig i regelvisningen og står derfor eksplisitt som unresolved. Registeret gjetter ikke. Den vedtatte, fasebundne responsen står separat fra denne observerte rutingen, og policygap forblir synlige frem til tilhørende oppgave har live-evidens.

Endringer som ennå ikke er live-grunnlag

Registeret forskutterer ikke umergede eller uverifiserte regler. Oppfølgingsplan #454 legger ferskhetsfilter på de tre køtilstandsreglene og foreslår en fjerde regel for gammelt eller manglende snapshot. syfomotebehov #756 erstatter legacy availability/ingress-regler med urutede kandidater i observasjonsmodus (shadow) og retter workflowens path-filter. Runbookene beskriver hvordan kandidatene skal verifiseres, men tabellen og v2-eksporten beholder siste live-attesterte definisjon til hver endring er merget, deployert og avstemt i NAIS. Da skal kilde-SHA, uttrykk, fingerprint, timing, instanser, faktisk varslingsrute og observasjon oppdateres i én samlet registerendring. Registermodellen må samtidig kunne representere en eksplisitt urutet PrometheusRule; dagens standardfabrikk legger ellers feilaktig NAIS-ruten #esyfo-alarm på alle slike regler.

Oppdatering og kontroll

Kjør fra docs/:

bash
pnpm alert-register:check
pnpm alert-register:test
pnpm alert-register:export
pnpm alert-register:drift -- --observed /tmp/esyfo-alert-observations.json

alert-register:check validerer registeret og kontrollerer at public/alert-register.v2.json er synkronisert. V2 inneholder både faktisk observasjon og eksplisitt vedtatt policy. Feltet refreshedAt er tidspunktet for siste live observasjonsoppdatering; dokumenterte policy- og livssyklusendringer flytter ikke dette tidspunktet uten en ny live-avstemming. Den tidligere public/alert-register.v1.json beholdes som et frosset, maskinmerket superseded kartleggingssnapshot fra #203; den inneholder ikke vedtatt policy og er ikke gjeldende kontrakt. alert-register:test dekker tellinger, kildesporbarhet, statussemantikk, beslutningsmatrise, retirement-gates og pager-sikkerhet. alert-register:export oppdaterer den maskinlesbare v2-artefakten.

alert-register:drift sammenligner registeret med et autentisert observation-snapshot v1. Et snapshot må inneholde regel-ID, miljø, konfigurert tilstand, evalueringstilstand, evaluatorhelse, observasjonstidspunkt og evidenslenke per instans. Manglende eller gammelt bevis blir unknown; det blir aldri tolket som grønt.

Driftkommandoen sammenligner fingerprinten som snapshot-produsenten oppgir; den canonicaliserer ikke PromQL. Snapshot-produsenten må derfor følge samme dokumenterte, manuelle semantiske normalisering når NAIS har injisert labels eller endret matcherrekkefølge.

Vanlig dokumentasjonsbygg henter ikke live produksjonsdata. For ordinære repo-kilder pinner registeret alertdefinisjonen som lå på default branch ved kildens registrerte innhentingstid. Denne commit-SHA-en er kildegrunnlag, ikke bevis på eksakt deployed SHA. Ved det opprinnelige snapshotet ble live query og for manuelt avstemt for alle 39 NAIS-instansene. Det siste produksjonssnapshotet beholdt 37 observasjoner etter Budstikka-oppryddingen; tre av dem er nå markert som oppryddingsgjeld for den avviklede tjenesten. Resultatet er lagret som uavhengige fingerprint-/timing-attestasjoner, slik at en senere kildeendring feiler valideringen frem til live-beviset oppdateres. NAIS injiserer k8s_cluster_name og kan omorganisere matchere, så dette er en dokumentert semantisk sammenligning — ikke en automatisk PromQL-canonicalizer. Grafana-kildene ble avstemt direkte i regelvisningen og er pinnet med regel-UID. Når regler endres, skal både kildegrunnlag, observasjon og eksportert artefakt oppdateres i samme endring.

Kilde-/deploydrift: fire restinstanser

To historiske kilde-/deploygrunnlag forklarer fire PrometheusRule-instanser som fortsatt var synlige i NAIS, men som ikke lenger styres av det aktuelle grunnlaget:

  • ALTINN KAFKA OPPFOLGINGSPLAN CONSUMER LAG var fortsatt enabled/inaktiv i prod-gcp. lps-oppfolgingsplan-mottak/nais/alerts.yaml ble slettet i commit 16a44e597fdc 2. juli 2026 da consumeren ble fjernet. Siste gyldige fil ligger i parent-commit c2101c2278ed.
  • Tre syfobrukertilgang-regler var fortsatt enabled/inaktive i prod-fss, mens NAIS-applikasjonslisten bare viser tjenesten i dev-gcp og prod-gcp. Commit 9c9a259c7926 flyttet alert-workflowen fra prod-fss til prod-gcp 22. mai 2023; den slettet ikke alertfilen. Commit 22b66f6950f8 er siste repository-snapshot før denne cluster-cutoveren. Den er ikke bevis på hvilken SHA som sist ble deployert til FSS. Instansene avviker også fra runtimeinventarets prod-gcp.

Registeret behandler disse repo-referansene som historiske kilder og de berørte reglene som oppryddingsfunn under utfasing. De skal verifiseres og ryddes i NAIS, ikke brukes som bevis for at alle 28 gjeldende Prometheus-regler fortsatt styres av dagens kildekode. Kartleggingen har 11 nåværende default-branch-kilder og 2 historiske repo-kilder.

Leveringsdrift: tre alertfiler har workflow-gap

Tre av de nåværende kildefilene er heller ikke pålitelig koblet til kontinuerlig levering, til sammen for ti sist observerte regelinstanser:

Det betyr ikke at live-reglene er deaktivert. Det betyr at en endring i kildefilen ikke har en pålitelig, sporbar vei til produksjon. syfomotebehov-gapet er rettet i den umergede PR-en #756, men forblir et faktisk gap frem til workflowendringen ligger på default branch og er verifisert. De øvrige gapene må ryddes eller eksplisitt pensjoneres i policyarbeidet; for syfooppfolgingsplanservice er eneste gjenstående handling å avstemme og fjerne eventuelle restregler.

Scope og beslutninger

Registeret følger det godkjente runtimeinventaret. Airflow/data science, teamsykefravr, dulting-studio og syfojanitor-* er eksplisitt utenfor scope. Eksterne topics kan likevel stå som avhengigheter når en eSyfo-regel måler dem.

Målets tjeneste-/capabilitylivssyklus er kontekst på hver regel. Den beskriver om runtime eller prosess er varig, migrerende eller på vei bort; selve regelens skjebne bestemmes bare av policyvedtaket:

  • Regler for esyfovarsel er midlertidige guardrails under migreringen til syfo-budstikka. Eksakt cutoverdato er ikke besluttet; gjennomføringen og trygg fjerning av legacy-reglene følges i #218.
  • Regler for syfobrukertilgang beholdes mens tjenesten fases ut. Tre deployerte prod-fss-instanser er bekreftet restkonfigurasjon fra GCP-migreringen og skal ryddes kontrollert.
  • De tre legacyreglene for syfooppfolgingsplanservice beholdes som oppryddingsgjeld etter bekreftet tjenestestopp 2. september 2026. De fjernes først når en ny live-avstemming har bevist at restreglene er borte; dette følges i #208-guiden.
  • Varige regler er kandidater for standardisering etter brukerreise, pipeline og semantisk familie — ikke bare kopiering av dagens terskler.

Kanonisk kartlegging ligger i #203, og policyvedtaket i #210. Dashboards og runbooks følges i #211, Kafka-/pipelinekontrakter i #212, og aktivering skal skje kontrollert gjennom #217. App-spesifikke gap er koblet direkte fra hver regel i matrisen.

Laget av Team eSyfo ❤️