De nachtelijke import werkt al dagen niet, en niemand merkt het? Zo bewaakt u geplande taken
Orderimport, voorraadsynchronisatie en nachtelijke rapporten vallen stil uit, en u merkt het pas als een klant belt. Zo bewaakt u geplande taken op tijd.
Vlado Pandžić · Oprichter · Senior .NET-architect
Gepubliceerd · 6 min lezen
Een scenario dat vaker voorkomt dan iemand toegeeft: elke nacht om 2 uur haalt een taak nieuwe orders uit de webshop en zet ze in het ERP. Hij draait al jaren en niemand denkt eraan.
Op dinsdag verandert de partner die de webshop beheert de inloggegevens. Om 2 uur start de taak, de webshop weigert hem, en de taak stopt. Stil.
Op vrijdag belt een klant: waar blijft mijn bestelling? Pas dan kijkt iemand en blijkt dat drie dagen aan orders nooit in het systeem zijn aangekomen.
Waarom geplande taken stil uitvallen
- Ze draaien op de achtergrond. Geen scherm, niemand die kijkt, midden in de nacht.
- De fout belandt in een log dat niemand leest. Ergens op een server staat een bestand waarin precies staat wat er gebeurde. Niemand opent het.
- Ze draaien vanuit een oud hulpmiddel op een oude server. Windows Taakplanner op een server waarvan niemand meer weet wie hem heeft ingericht.
- Het verraderlijkst: de taak eindigt “geslaagd”, maar doet niets. Hij start, meldt geen fout en verwerkt nul orders. Alles ziet er goed uit, en niets is goed.
Om welke taken het gaat
Bijna elk bedrijf heeft er meerdere, zonder dat iemand ze ooit op een rij heeft gezet:
- orders importeren uit de webshop of partnerportalen
- voorraad en prijzen synchroniseren tussen systemen
- gegevens exporteren naar de boekhouding
- nachtelijke rapporten die per e-mail naar de directie gaan
- back-ups van databases en documenten
- certificaten vernieuwen en oude gegevens opruimen
Elk daarvan is in wezen waar we over schreven in het artikel over systemen koppelen: automatisering die handwerk vervangt. Maar automatisering die stil stopt, is erger dan handwerk, want handwerk merkt tenminste iemand op.
Een log dat niemand leest, of een waarschuwing die vanzelf komt
02:00:01 Import started
02:00:03 Connecting to shop API
02:00:04 401 Unauthorized
02:00:04 Import finished
Hetzelfde op woensdag, donderdag en vrijdag.
Orderimport mislukt
De webshop weigerde de toegang (401). Laatste geslaagde import: zondag om 02:00, 164 orders.
Op de hoogte gebracht: hoofd verkoop · IT
Dezelfde fout, twee totaal verschillende gevolgen. Links drie dagen verloren orders en boze klanten. Rechts weet iemand vijf minuten na de fout wat er gebeurd is, en voor de ochtend is het opgelost.
Vier vragen die goede bewaking stelt
Weten of een taak een fout heeft gemeld, is niet genoeg. Goede bewaking controleert voor elke taak vier dingen:
- Is hij überhaupt gestart? Als de server uitviel of iemand het schema veranderde, is er geen fout, omdat er niets gebeurde.
- Is hij zonder fout afgerond?
- Heeft hij gedaan wat hij moest doen? Verwerkt de import meestal 120 tot 180 orders en vandaag nul, dan klopt er iets niet, ook zonder foutmelding.
- Hoe lang duurde hij? Een taak die vroeger twee minuten duurde en nu twee uur, valt morgen waarschijnlijk uit.
Dat komt allemaal op één scherm:
| Taak | Laatste run | Resultaat | Status |
|---|---|---|---|
| Orderimport uit de webshop | vandaag 02:00 | 0 orders (meestal 120–180) | Waarschuwing |
| Export naar de boekhouding | gisteren 23:00 | niet gestart | Fout |
| Voorraadsynchronisatie | vandaag 03:00 | 2.412 artikelen | In orde |
| Nachtelijk verkooprapport | vandaag 06:00 | verstuurd naar 4 adressen | In orde |
Zo weet u dat een taak is gestopt: vier manieren
Het hoeft niet allemaal tegelijk. U begint met het eenvoudigste, en elke volgende manier vangt op wat de vorige mist.
- 1De taak meldt dat hij faalt
- 2De taak meldt dat hij leeft
- 3Het resultaat controleren
- 4Centrale bewaking
- De taak meldt zelf dat hij faalt. Bij een fout stuurt de taak een e-mail of een Teams-bericht met een beschrijving van wat er gebeurde. Dat zijn een paar regels code in de bestaande taak. Maar als de taak helemaal niet start, is er niemand die het bericht stuurt.
- De taak meldt dat hij leeft. Aan het eind van elke geslaagde run meldt de taak zich bij een externe dienst voor het bewaken van geplande taken. De dienst weet dat hij elke nacht voor 2.30 uur een melding verwacht en stuurt zelf een waarschuwing als die niet komt. Zo valt ook een uitgevallen server of een gewijzigd schema op, want de dienst wacht op een melding die nooit kwam. Zulke diensten zijn er meerdere, met kleine maandelijkse kosten of gratis voor een paar taken.
- Het resultaat controleren. ’s Ochtends kijkt één controle in de database hoeveel orders er vannacht binnenkwamen en vergelijkt dat met het gebruikelijke. Nul in plaats van 150 betekent een waarschuwing, ook als geen enkele taak een fout meldde. Het is de enige manier om het verraderlijkste geval te vangen.
- Centrale bewaking. Als er veel taken zijn, sturen ze allemaal gegevens naar één plek, bijvoorbeeld Application Insights, waarover we schreven in het artikel over applicatiebewaking. Daar staat het scherm uit de tabel hierboven, met regels als: de taak is al 26 uur niet geslaagd, hij verwerkte nul records, hij duurde drie keer zo lang als normaal.
| Manier | Fout | Niet gestart | 0 records | Trage taak | Inspanning |
|---|---|---|---|---|---|
| Taak meldt dat hij faalt | ✓ | – | – | – | klein |
| Taak meldt dat hij leeft | ✓ | ✓ | – | – | klein |
| Resultaat controleren | ✓ | ✓ | ✓ | – | klein tot gemiddeld |
| Centrale bewaking | ✓ | ✓ | ✓ | ✓ | gemiddeld |
Voor de meeste bedrijven dekken de tweede en derde manier samen bijna alles af, en ze zijn in een paar dagen ingericht, zonder aan de servers te komen.
Moeten de taken naar Azure?
Niet per se. Bewaking komt bij de taken daar waar ze al draaien: op de oude server, in Windows Taakplanner of binnen de applicatie. Verhuizen naar Azure Functions betekent elke taak herschrijven en opnieuw testen, en dat is geen kleine klus.
Verhuizen is zinvol als er toch iets moet veranderen: als de oude server verdwijnt, bijvoorbeeld door het einde van de ondersteuning van Windows Server 2016, of als de taak toch wordt herzien. Dan krijgen taken in Azure Functions de bewaking bijna vanzelf, en is er geen server meer die uitvalt en de taak meeneemt. Verhuist u een taak toch naar Azure Functions, dan laat onze gratis cron-expressie generator voor Azure Functions precies zien wanneer die draait.
Wat u deze week kunt doen
Zet alle geplande taken in het bedrijf op een rij: wat ze doen, wanneer ze draaien en waar. Beantwoord daarna voor elke taak één vraag: wie krijgt een melding als deze taak mislukt?
Bij de meeste bedrijven is het meest gehoorde antwoord “niemand”. Dat betekent dat u bij elk van die taken het pas merkt als er een klant belt.
Hoe wij werken
Dat is precies wat we doen: we voegen bewaking toe aan bestaande geplande taken, daar waar ze draaien, zodat u meteen weet als er een stopt of niet doet wat hij moet doen, en we stellen waarschuwingen in die bij de juiste persoon terechtkomen. Een verhuizing naar Azure stellen we alleen voor als die loont. We beginnen met een lijst van de taken en met de taken die het meest kosten als ze stoppen. De eerste stap is een gratis gesprek van 30 minuten.
Dit artikel is alleen algemene informatie en geen juridisch, fiscaal, financieel of ander professioneel advies. Scenario’s, voorbeelden en berekeningen zijn ter illustratie. Gebruiksvoorwaarden en disclaimer.