Övervaka integrationer: larma på tystnad, inte bara på fel

En vägg av gröna synkroniseringsstatusbrickor med en ensam gul varningsbricka

Ett undantag loggas, ett larm utlöses, någon fixar det. Den loopen fungerar - för fel som är tillräckligt högljudda för att göra sig själva hörda. Felen som kostar våra kunder riktiga pengar är de tysta: leverantören roterade tyst en SFTP-nyckel, nattens export producerade en giltig fil med noll rader, köns konsument "körs" men bearbetar ingenting.

Inget gav fel. Allt stannade.

Flödesmått framför hälsokontroller

En hälsokontroll svarar på "lever processen?" Frågan som spelar roll är "hände arbetet?" Så den primära signalen på varje integration vi driftar är ett flödesmått - poster per intervall, jämfört med vad det intervallet normalt bär:

  • Ordrar synkroniserade per timme, med baslinjer för vardag/helg - en tyst söndag är normalt; en tyst tisdag klockan 10:00 är en incident.
  • Filankomster som deadlines, inte händelser: "partner X:s prisfil ska vara här senast 06:30" - larmet utlöses när den inte anländer.
  • Fördröjning från början till slut, mätt från källans tidsstämpel till destinationens commit, inte från köns ingång.

Nollradsproblemet

Ett särskilt omnämnande för det vanligaste tysta felet vi ser: ett schemalagt jobb som lyckas med tomt utdata. Uppströms ändrades ett filter, ett autentiseringsuppgift förlorade läsåtkomst till en tabell, en bugg i ett datumintervall uteslöt allt - och jobbet avslutas med kod 0, grönt över hela linjen.

Varje uttag vi levererar bär ett "rimlighetsgolv": den minsta utdatamängd som någonsin varit legitim för det jobbet och den kalenderkontexten. Under golvet hålls körningen tillbaka och en människa tillfrågas: "detta gav 0 rader; de senaste 90 tisdagarna gav i snitt 4 200 - fortsätta?" Den enda vakten har fångat fler verkliga incidenter än all vår undantagslarmning tillsammans.

Tystnad är en signal. Instrumentera för den medvetet, för den kommer aldrig att göra sig själv hörd.