observerte instanser
37 var not-firing; query og for matcher kilden, men evaluatorhelse er ukjent.
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:
enabled, paused eller disabled?Team eSyfo · register oppdatert · 2026-08-29T11:53:41Z
Én sporbar oversikt over definisjon, deployert instans, observert tilstand, livssyklus, policyvedtak og implementeringsgap. Live-observasjonene er fra 2026-08-28T17:45:44Z.
01 / Faktisk konfigurasjon
37 var not-firing; query og for matcher kilden, men evaluatorhelse er ukjent.
Begge er paused / not-evaluated; fysisk kanal og alvorlighet er uavklart.
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.
dev-gcpprod-gcpprod-fss02 / Vedtatt operativ policy
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.
KEEP9Signalet og formålet er riktig; live-regelen beholdes.
TUNE4Formålet beholdes, men terskel, metadata eller levering må forbedres.
REPLACE4Dagens signal er feil type og erstattes før det fjernes.
RETIRE11Regelen skal bort, men bare gjennom dokumentert retirement-gate.
MIGRATE2Signalansvaret flyttes til ny runtime eller prosess.
EXTERNAL_ONLY0Eksternt eid signal som ikke rutes eller forvaltes av Team eSyfo.
Avbrytende respons kun ved pågående eller nært forestående alvorlig produksjonskonsekvens som krever konkret handling nå.
Ikke-avbrytende, deduplisert oppfølging med konkret eier og handling innen neste bemannede arbeidsdag.
Trend, feilsøkingssignal eller ikke-handlingsrettet indikator uten operativ varslingsrute.
motebehov-downreadiness-oppgaver er ikke verifisert lukket · avbrytende kanal er ikke etablert og verifisert · per-regel produksjonsrute er ikke verifisert som pager · konsekvens mangler · tune er ikke verifisert live
oppfolgingsplan-sykmelding-deserializationreadiness-oppgaver er ikke verifisert lukket · avbrytende kanal er ikke etablert og verifisert · per-regel produksjonsrute er ikke verifisert som pager · dev-isolasjon fra produksjonspager er ikke verifisert · tune er ikke verifisert live · dagens signal er ikke pager-sikkert
Pager-kandidater kan vedtas, men ingen kan aktiveres før en avbrytende rute og mottakeransvar er verifisert i #217.
Uverifisert · Pager-kandidatDette er Team eSyfos verifiserte NAIS Slack-rute. Den er operativ innboks, men er ikke i seg selv dokumentasjon på pager/on-call.
Verifisert · TicketKanalen 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-rutingIngen 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-rutingGoogle 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
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.
04 / Kildekodedrift og opprydding
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.
Siste relevante kilde: c2101c2278ed. Fil og deploygrunnlag fjernet 2026-07-02 i 16a44e597fdc. Alertfilen og Altinn-consumeren ble fjernet.
prod-gcp · enabled / inactiveConsumeren og alert-filen ble fjernet 2. juli 2026, men PrometheusRule-instansen finnes fortsatt i NAIS og må ryddes kontrollert. 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.
prod-fss · enabled / inactivesyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.prod-fss · enabled / inactivesyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.prod-fss · enabled / inactivesyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.05 / Målets livssyklus
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.Runtime-/prosessansvar flyttes til Budstikka.
esyfovarsel-downMål: syfo-budstikka, budstikka.v1.navikt/team-esyfo#218esyfovarsel-log-ratioMål: syfo-budstikka, budstikka.v1.navikt/team-esyfo#218esyfovarsel-job-failedMål: syfo-budstikka, budstikka.v1.navikt/team-esyfo#218dokumentporten-terminal-varsel-errorMål: syfo-budstikka, budstikka.v1.navikt/team-esyfo#218grafana-varsel-avvikMål: syfo-budstikka, budstikka.v1.navikt/team-esyfo#218Må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#637brukertilgang-downsyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.navikt/syfobrukertilgang#369brukertilgang-http-5xxsyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.navikt/syfobrukertilgang#369brukertilgang-http-4xxsyfobrukertilgang skal fases ut etter at syfomotebehov har flyttet tilgangssjekken.navikt/syfobrukertilgang#369oppfolgingsplanservice-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#208oppfolgingsplanservice-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#208oppfolgingsplanservice-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#208grafana-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#213Målt tjeneste skal fjernes på besluttet dato.
06 / Porteføljemønstre
Samme normaliserte uttrykk, for og evalueringsintervall.
Ingen funnet i snapshotet.
Navnet alene identifiserer ikke hvilken runtime som alarmerer.
brukertilgang-http-4xxmotebehov-http-4xxoppfolgingsplanservice-http-4xxbrukertilgang-http-5xxmotebehov-http-5xxoppfolgingsplanservice-http-5xxDisse gruppene bør vurderes samlet når policy og terskler standardiseres.
domain-terminal-outcome3 reglerlegacy-lag-greater-than-zero4 reglerlegacy-nginx-http-4xx-ratio3 reglerlegacy-nginx-http-5xx-ratio3 reglerlegacy-zero-available-replicas4 regleroutbox-progress3 regler07 / Dekningsgap
aktivitetskrav-frontendaktivitetskrav-microfrontendbro-frontenddialogmote-frontenddialogmote-microfrontenddinesykmeldtedinesykmeldte-backendesyfo-narmestelederflaggskipetlps-oppfolgingsplan-mottaklumi-dashboardmeroppfolging-backendmeroppfolging-frontendmeroppfolging-microfrontendnarmesteleder-frontendsyfo-oppfolgingsplan-frontendsyfooppdfgensykepengedager-informasjonaapen-syfo-oppfolgingsplan-lps-nav-v2dinesykmeldte-hendelser-v2kartleggingssporsmal-svarsen-oppfolging-svarsen-oppfolging-varselsyfo-narmesteleder-leesahsykepengedager-informasjon-topicsykepengedager.infotrygd.v1varselbus 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-gcpbrukertilgang-http-5xx: prod-fss → forventet prod-gcpbrukertilgang-http-4xx: prod-fss → forventet prod-gcpKildefilene finnes på default branch, men dagens GitHub Actions-kobling sørger ikke for pålitelig redeploy når de endres.
brukertilgang: path-filter matcher ikke alertfilen · 3 instanser motebehov-prod: path-filter matcher ikke alertfilen · 4 instanser oppfolgingsplanservice-prod: alertfilen refereres ikke av workflowen · 3 instanser Gap er beholdt som eksplisitt status og blir aldri presentert som grønn dekning.
08 / Evidens
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.09 / Regeloversikt
Policy og dagens ruting står først. Tabellen kan rulles både vannrett og loddrett; regelnavnet og kolonneoverskriftene blir stående.
| Regel / motor | Vedtak / operativ respons | Dagens ruting / oppfølging | Deploy / observert tilstand | Målets livssyklus | Semantikk | Berørt / direkte målt |
|---|---|---|---|---|---|---|
KAFKA PROSSESERING (VARSEL) I AKTIVITETSKRAV-BACKEND STOPPET!aktivitetskrav-varsel-consumer-lagPrometheusRuleVis uttrykk og kildekafka_consumergroup_group_topic_sum_lag{topic="teamsykefravr.aktivitetskrav-varsel", group="aktivitetskrav-backend-group-v2"} > 0navikt/aktivitetskrav-backend/nais/alerts.yaml ↗ | REPLACEErstatningen: Ticket · #esyfo-alarmEier: navikt/aktivitetskrav-backendnavikt/aktivitetskrav-backend#248 ↗ BegrunnelseLag > 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-lagPrometheusRuleVis uttrykk og kildekafka_consumergroup_group_topic_sum_lag{topic="teamsykefravr.aktivitetskrav-vurdering", group="aktivitetskrav-backend-group-v2"} > 0navikt/aktivitetskrav-backend/nais/alerts.yaml ↗ | REPLACEErstatningen: Ticket · #esyfo-alarmEier: navikt/aktivitetskrav-backendnavikt/aktivitetskrav-backend#248 ↗ BegrunnelseVurderingsconsumeren 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-downPrometheusRuleVis uttrykk og kildekube_deployment_status_replicas_available{deployment="esyfovarsel"} == 0navikt/esyfovarsel/nais/alerts.yaml ↗ | MIGRATEUnder migrering: Ticket · #esyfo-alarmEier: navikt/esyfovarselnavikt/esyfovarsel#1094 ↗ BegrunnelseAll-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-ratioPrometheusRuleVis 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]))) > 10navikt/esyfovarsel/nais/alerts.yaml ↗ | RETIREFrem til pensjonering: Kun dashboardEier: navikt/esyfovarselnavikt/esyfovarsel#1094 ↗ BegrunnelseRå 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-failedPrometheusRuleVis uttrykk og kildekube_job_failed{job_name=~"esyfovarsel-job.*", namespace="team-esyfo"} > 0navikt/esyfovarsel/nais/alerts.yaml ↗ | RETIREFrem til pensjonering: Ticket · #esyfo-alarmEier: navikt/esyfovarselnavikt/esyfovarsel#1094 ↗ navikt/team-esyfo#218 ↗ BegrunnelseJobbfeil 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-lagPrometheusRuleVis uttrykk og kildekafka_consumergroup_group_topic_sum_lag{topic="alf.aapen-altinn-oppfolgingsplan-mottatt-v2", group="lps-oppfolgingsplan-mottak-1"} > 0navikt/lps-oppfolgingsplan-mottak/nais/alerts.yaml ↗ | RETIREFrem til pensjonering: Kun dashboardEier: navikt/lps-oppfolgingsplan-mottaknavikt/lps-oppfolgingsplan-mottak#637 ↗ BegrunnelseConsumeren 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-conflictPrometheusRuleVis uttrykk og kildesum(increase(lumi_survey_definition_conflicts_total{app="lumi-api"}[5m])) > 0navikt/lumi/apps/lumi-api/nais/alerts/prod.yaml ↗ | KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/lumiBegrunnelseDefinisjonskonflikt 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-failurePrometheusRuleVis uttrykk og kildesum(increase(lumi_submissions_total{app="lumi-api",outcome="failed"}[5m])) > 0navikt/lumi/apps/lumi-api/nais/alerts/prod.yaml ↗ | KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/lumiBegrunnelseAutentisert 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-spikePrometheusRuleVis uttrykk og kildesum 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.1navikt/lumi/apps/lumi-api/nais/alerts/prod.yaml ↗ | KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/lumiBegrunnelseRegelen 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-failurePrometheusRuleVis uttrykk og kildesum(increase(lumi_retention_runs_total{app="lumi-api",outcome="failed"}[15m])) > 0navikt/lumi/apps/lumi-api/nais/alerts/prod.yaml ↗ | KEEPBeholdt regel: Ticket · #esyfo-alarmEier: navikt/lumiBegrunnelseMislykket 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-stalePrometheusRuleVis uttrykk og kildemax(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/lumiBegrunnelseFreshness 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-warningPrometheusRuleVis uttrykk og kildemax by (topic) (kafka_consumer_fetch_manager_records_lag_max{app="syfo-budstikka", namespace="team-esyfo", topic="team-esyfo.budstikka.v1"}) > 100navikt/syfo-budstikka/nais/alerts-dev.yaml ↗ navikt/syfo-budstikka/nais/alerts-prod.yaml ↗ | TUNEEtter tuning: Ticket · #esyfo-alarmEier: navikt/syfo-budstikkanavikt/team-esyfo#219 ↗ BegrunnelseVarselgrensen 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 unknownwarningprod-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-deserializationPrometheusRuleVis uttrykk og kilderate(syfo_oppfolgingsplan_backend_sykmelding_deserialization_error_total{namespace="team-esyfo"}[5m]) > 0.1navikt/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 ↗ BegrunnelseVedvarende 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 unknownwarningprod-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-errorsPrometheusRuleVis uttrykk og kilderate(syfo_oppfolgingsplan_backend_sykmelding_runtime_error_total{namespace="team-esyfo"}[5m]) > 0.05navikt/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 ↗ BegrunnelseVedvarende 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 unknownwarningprod-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-duePrometheusRuleVis uttrykk og kildesyfo_oppfolgingsplan_backend_outbox_oldest_due_age_seconds{namespace="team-esyfo",message_type=~"OPPFOLGINGSPLAN_.*"} > 900navikt/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 ↗ BegrunnelseEldste 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 unknownwarningprod-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-claimsPrometheusRuleVis uttrykk og kildesyfo_oppfolgingsplan_backend_outbox_expired_claims{namespace="team-esyfo",message_type=~"OPPFOLGINGSPLAN_.*"} > 0navikt/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 ↗ BegrunnelseUtlø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 unknownwarningprod-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-failuresPrometheusRuleVis uttrykk og kildesyfo_oppfolgingsplan_backend_outbox_retrying{namespace="team-esyfo",message_type=~"OPPFOLGINGSPLAN_.*"} > 0navikt/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 ↗ BegrunnelseVedvarende 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 unknownwarningprod-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-downPrometheusRuleVis uttrykk og kildekube_deployment_status_replicas_available{deployment="syfobrukertilgang"} == 0navikt/syfobrukertilgang/alerts.yaml ↗ navikt/syfobrukertilgang/nais/alerts.yaml ↗ | RETIREFrem til pensjonering: Ticket · #esyfo-alarmEier: navikt/syfobrukertilgangnavikt/syfobrukertilgang#369 ↗ navikt/syfomotebehov#755 ↗ BegrunnelseAll-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 unknowncriticalprod-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-5xxPrometheusRuleVis 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])))) > 2navikt/syfobrukertilgang/alerts.yaml ↗ navikt/syfobrukertilgang/nais/alerts.yaml ↗ | RETIREFrem til pensjonering: Ticket · #esyfo-alarmEier: navikt/syfobrukertilgangnavikt/syfobrukertilgang#369 ↗ navikt/syfomotebehov#755 ↗ Begrunnelse5xx 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 unknownwarningprod-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-4xxPrometheusRuleVis 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])))) > 10navikt/syfobrukertilgang/alerts.yaml ↗ navikt/syfobrukertilgang/nais/alerts.yaml ↗ | RETIREFrem til pensjonering: Kun dashboardEier: navikt/syfobrukertilgangnavikt/syfobrukertilgang#369 ↗ navikt/syfomotebehov#755 ↗ BegrunnelseGenerisk 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 unknownwarningprod-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-downPrometheusRuleVis uttrykk og kildekube_deployment_status_replicas_available{deployment="syfomotebehov"} == 0navikt/syfomotebehov/nais/alerts-gcp.yaml ↗ | TUNEEtter tuning: Pager-kandidat · Team eSyfos avbrytende kanal (ikke etablert)Eier: navikt/syfomotebehov Ikke pager-klar navikt/syfomotebehov#753 ↗ BegrunnelseNull 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-5xxPrometheusRuleVis 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]))) > 2navikt/syfomotebehov/nais/alerts-gcp.yaml ↗ | TUNEEtter tuning: Ticket · #esyfo-alarmEier: navikt/syfomotebehovnavikt/syfomotebehov#753 ↗ Begrunnelse5xx 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-4xxPrometheusRuleVis 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]))) > 10navikt/syfomotebehov/nais/alerts-gcp.yaml ↗ | RETIREFrem til pensjonering: Kun dashboardEier: navikt/syfomotebehovnavikt/syfomotebehov#753 ↗ BegrunnelseGenerisk 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-lagPrometheusRuleVis uttrykk og kildekafka_consumergroup_group_topic_sum_lag{topic="teamsykefravr.isoppfolgingstilfelle-oppfolgingstilfelle-person", group="syfomotebehov-p-isoppfolgingstilfelle"} > 0navikt/syfomotebehov/nais/alerts-gcp.yaml ↗ | REPLACEErstatningen: Ticket · #esyfo-alarmEier: navikt/syfomotebehovnavikt/syfomotebehov#754 ↗ BegrunnelseEksternt 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-errorPrometheusRuleVis uttrykk og kildesum(increase(syfo_dokumentporten_varsel_permanent_error_total{app="syfo-dokumentporten",namespace="team-esyfo"}[5m])) > 0navikt/syfo-dokumentporten/nais/alert.yaml ↗ | MIGRATEUnder migrering: Ticket · #esyfo-alarmEier: navikt/syfo-dokumentportennavikt/team-esyfo#218 ↗ BegrunnelseTerminal 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-downPrometheusRuleVis uttrykk og kildekube_deployment_status_replicas_available{deployment="syfooppfolgingsplanservice"} == 0navikt/syfooppfolgingsplanservice/nais/alerts-fss.yaml ↗ | RETIREFrem til pensjonering: Ticket · #esyfo-alarmEier: navikt/syfooppfolgingsplanservicenavikt/team-esyfo#208 ↗ BegrunnelseTjenesten 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-5xxPrometheusRuleVis 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]))) > 2navikt/syfooppfolgingsplanservice/nais/alerts-fss.yaml ↗ | RETIREFrem til pensjonering: Ticket · #esyfo-alarmEier: navikt/syfooppfolgingsplanservicenavikt/team-esyfo#208 ↗ BegrunnelseTjenesten 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-4xxPrometheusRuleVis 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]))) > 10navikt/syfooppfolgingsplanservice/nais/alerts-fss.yaml ↗ | RETIREFrem til pensjonering: Kun dashboardEier: navikt/syfooppfolgingsplanservicenavikt/team-esyfo#208 ↗ BegrunnelseTjenesten 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-managedVis uttrykk og kildesum 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 ↗ BegrunnelseDen 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-managedVis uttrykk og kildekafka_consumer_group_offset{topic=~"team-esyfo.*"} > 100Grafana · Esyfo Kafka Alerts ↗ | RETIREFrem til pensjonering: Kun dashboardEier: navikt/team-esyfonavikt/team-esyfo#213 ↗ BegrunnelseRegelen 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 |
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:
É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.
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.
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.
Kjør fra docs/:
pnpm alert-register:check
pnpm alert-register:test
pnpm alert-register:export
pnpm alert-register:drift -- --observed /tmp/esyfo-alert-observations.jsonalert-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.
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.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.
Tre av de nåværende kildefilene er heller ikke pålitelig koblet til kontinuerlig levering, til sammen for ti sist observerte regelinstanser:
syfobrukertilgang/.github/workflows/alerts.yaml følger alerts.yaml, men deployer nais/alerts.yaml til prod-gcp.syfomotebehov/.github/workflows/alerts.yaml følger .nais/alerts-gcp.yaml, men deployer nais/alerts-gcp.yaml til prod-gcp.syfooppfolgingsplanservice/.github/workflows/build-and-deploy.yaml deployer applikasjonsmanifestet, men refererer ikke nais/alerts-fss.yaml.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.
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:
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.syfobrukertilgang beholdes mens tjenesten fases ut. Tre deployerte prod-fss-instanser er bekreftet restkonfigurasjon fra GCP-migreringen og skal ryddes kontrollert.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.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.