Nattens import har inte fungerat på tre dagar, och ingen märker det? Så övervakar du schemalagda jobb
Orderimport, lagersynk och nattliga rapporter slutar tyst att fungera, och det märks först när en kund ringer. Så övervakar du schemalagda jobb i tid.
Vlado Pandžić · Grundare · Senior .NET-arkitekt
Publicerad · 6 min läsning
Ett scenario som är vanligare än någon vill erkänna: varje natt kl. 2 hämtar ett jobb nya beställningar från webbutiken och för in dem i affärssystemet. Det har fungerat i åratal och ingen tänker på det.
På tisdagen byter partnern som driver webbutiken inloggningsuppgifterna. Kl. 2 startar jobbet, webbutiken nekar det, och jobbet avslutas. Tyst.
På fredagen ringer en kund: var är mina varor? Först då tittar någon och inser att tre dagars beställningar aldrig kom in i systemet.
Varför schemalagda jobb slutar fungera i tysthet
- De körs i bakgrunden. Ingen skärm, ingen som tittar, mitt i natten.
- Felet hamnar i en logg som ingen läser. Någonstans på en server finns en fil där det står exakt vad som hände. Ingen öppnar den.
- De körs från ett gammalt verktyg på en gammal server. Aktivitetsschemaläggaren i Windows på en server som ingen längre vet vem som satte upp.
- Det lömskaste fallet: jobbet ”lyckas” men gör ingenting. Det startar, rapporterar inget fel och för över noll beställningar. Allt ser bra ut, och ingenting är bra.
Vilka jobb det handlar om
Nästan varje företag har flera sådana jobb, utan att någon har listat dem:
- import av beställningar från webbutiken eller partnerportaler
- synkronisering av lager och priser mellan system
- export av data till bokföringen
- nattliga rapporter som mejlas till ledningen
- säkerhetskopior av databaser och dokument
- förnyelse av certifikat och rensning av gamla data
Vart och ett av dem är i grunden det vi skrev om i artikeln om systemintegration: automatisering som ersätter manuellt arbete. Men automatisering som tyst stannar är värre än manuellt arbete, för manuellt arbete märker åtminstone någon.
En logg som ingen läser, eller en varning som kommer av sig själv
02:00:01 Import started
02:00:03 Connecting to shop API
02:00:04 401 Unauthorized
02:00:04 Import finished
Samma sak på onsdag, torsdag och fredag.
Orderimporten misslyckades
Webbutiken nekade åtkomst (401). Senaste lyckade import: söndag kl. 02.00, 164 beställningar.
Aviserade: försäljningschef · IT
Samma fel, två helt olika följder. Till vänster tre dagars förlorade beställningar och arga kunder. Till höger vet någon fem minuter efter felet vad som hänt, och det är åtgärdat till morgonen.
Fyra frågor som bra övervakning ställer
Det räcker inte att veta om ett jobb rapporterat ett fel. Bra övervakning kontrollerar fyra saker för varje jobb:
- Startade det över huvud taget? Om servern gick ner eller någon ändrade schemat finns inget fel, eftersom ingenting hände.
- Blev det klart utan fel?
- Gjorde det det som det ska? Om importen brukar föra över 120 till 180 beställningar och i dag förde över noll är något fel, även utan felmeddelande.
- Hur lång tid tog det? Ett jobb som förut tog två minuter och nu tar två timmar lär fallera i morgon.
Allt hamnar på en och samma skärm:
| Jobb | Senaste körning | Resultat | Status |
|---|---|---|---|
| Orderimport från webbutiken | i dag 02.00 | 0 beställningar (brukar vara 120–180) | Varning |
| Export till bokföringen | i går 23.00 | startade inte | Fel |
| Lagersynkronisering | i dag 03.00 | 2 412 artiklar | OK |
| Nattlig försäljningsrapport | i dag 06.00 | skickad till 4 adresser | OK |
Så vet du att ett jobb har stannat: fyra sätt
Du behöver inte allt på en gång. Börja med det enklaste, och varje nästa steg fångar det som det föregående missar.
- 1Jobbet säger till när det fallerar
- 2Jobbet rapporterar att det lever
- 3Kontroll av resultatet
- 4Central övervakning
- Jobbet säger själv till när det fallerar. När ett fel uppstår skickar jobbet ett mejl eller ett meddelande i Teams med en beskrivning av vad som hände. Det är några rader kod i det befintliga jobbet. Men om jobbet aldrig startar finns det ingen som skickar meddelandet.
- Jobbet rapporterar att det lever. I slutet av varje lyckad körning hör jobbet av sig till en extern tjänst för övervakning av schemalagda jobb. Tjänsten vet att den väntar på ett meddelande varje natt senast kl. 2.30 och skickar själv en varning om inget kommer. Då fångas även en server som gått ner och ett ändrat schema, eftersom tjänsten väntar på ett meddelande som aldrig kom. Det finns flera sådana tjänster, med en liten månadskostnad eller gratis för ett fåtal jobb.
- Kontroll av resultatet. På morgonen tittar en kontroll i databasen på hur många beställningar som kom in under natten och jämför med det vanliga. Noll i stället för 150 betyder en varning, även om inget jobb rapporterade något fel. Det är det enda sättet att fånga det lömskaste fallet.
- Central övervakning. När jobben är många skickar alla data till ett ställe, till exempel Application Insights, som vi skrev om i artikeln om övervakning av applikationer. Där finns skärmen från tabellen ovan, med regler som: jobbet har inte slutförts utan fel på 26 timmar, det förde över noll poster, det tog tre gånger så lång tid som vanligt.
| Sätt | Fel | Startade inte | 0 poster | Långsamt jobb | Insats |
|---|---|---|---|---|---|
| Jobbet säger till när det fallerar | ✓ | – | – | – | liten |
| Jobbet rapporterar att det lever | ✓ | ✓ | – | – | liten |
| Kontroll av resultatet | ✓ | ✓ | ✓ | – | liten till medel |
| Central övervakning | ✓ | ✓ | ✓ | ✓ | medel |
För de flesta företag täcker det andra och tredje sättet tillsammans nästan allt, och de går att införa på några dagar, utan att röra servrarna.
Måste jobben flyttas till Azure?
Inte nödvändigtvis. Övervakningen läggs till där jobben redan körs: på den gamla servern, i Aktivitetsschemaläggaren i Windows eller inuti applikationen. Att flytta dem till Azure Functions innebär att skriva om och testa om varje jobb, och det är inget litet arbete.
En flytt är vettig när något ändå måste ändras: när den gamla servern ska bort, till exempel för att supporten för Windows Server 2016 upphör, eller när jobbet ändå ska göras om. Då får jobb i Azure Functions övervakning nästan av sig själva, och det finns ingen server som går ner och tar jobbet med sig. Flyttar du ändå ett jobb till Azure Functions visar vår kostnadsfria cron-generator för Azure Functions exakt när det körs.
Vad du kan göra redan den här veckan
Lista alla schemalagda jobb i företaget: vad de gör, när de körs och var. Svara sedan på en fråga för vart och ett: vem får en avisering när det här jobbet misslyckas?
I de flesta företag är det vanligaste svaret ”ingen”. Det betyder att du får veta det för vart och ett av jobben när en kund ringer.
Så arbetar vi
Det här är precis vad vi gör: vi lägger till övervakning i befintliga schemalagda jobb där de körs, så att du vet direkt när ett stannar eller inte gör det det ska, och vi sätter upp varningar som når rätt person. En flytt till Azure föreslår vi bara när den lönar sig. Vi börjar med en lista över jobben och med de jobb som kostar mest när de stannar. Det första steget är ett kostnadsfritt samtal på 30 minuter.
Den här artikeln är endast allmän information och inte juridisk, skattemässig, ekonomisk eller annan professionell rådgivning. Scenarier, exempel och beräkningar är illustrativa. Användarvillkor och ansvarsfriskrivning.