Deze handleiding is voor iedereen die wil weten of een back-upscript, cronjob of geplande taak stilletjes stopt met draaien — in plaats van een monitor die iets van jou controleert, wacht deze op een check-in van jouw taak.
Overzicht
- Een heartbeatmonitor werkt omgekeerd: jouw script roept InfraNest aan wanneer het klaar is, in plaats van dat InfraNest het script aanroept.
- Als de check-in niet op tijd binnenkomt, waarschuwt InfraNest je.
- Het is de beste manier om te signaleren dat een taak stopt met draaien zonder dat er ergens een fout verschijnt die je zou opmerken.
Eén instellen
- Ga naar Monitoring en selecteer add a monitor.
- Kies Heartbeat / Cron monitor als type.
- Geef het een naam die je herkent in een melding — “Nightly database backup” is beter dan “job 1”.
- Stel het check interval in op hoe vaak de taak zou moeten draaien.
- Stel een grace period in — extra tijd die wordt toegestaan voordat de taak als te laat wordt beschouwd. Een back-up die meestal vier minuten duurt maar soms acht minuten, heeft een grace period nodig die ruim langer is dan die uitloop.
- Selecteer create monitor.
Voor dit type voer je geen URL in — InfraNest maakt er zelf een aan wanneer je opslaat.
Je taak laten inchecken
- Open de monitor om de ping URL te zien, plus een kant-en-klare eenregelige opdracht om te plakken.
- Voeg die regel toe aan het einde van je script of cronjob, zodat deze alleen wordt uitgevoerd als de taak daadwerkelijk is geslaagd:
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 https://your-infranest-url/api/heartbeat/your-uuid
De && is belangrijk: dit betekent dat de check-in alleen plaatsvindt als de back-up zelf succesvol is afgerond. Een mislukte taak blijft dan stil, en die stilte is wat de melding activeert.
TipGebruik de kopieerknop in plaats van de URL opnieuw te typen — de identifier erin is uniek voor deze monitor.
Vanuit een GitHub Actions-workflow
Als je back-up, verlenging of nachtelijke synchronisatie draait als een geplande GitHub Actions-workflow, werkt dezelfde monitor — de workflow meldt zich als laatste stap.
- Open in je repository op GitHub Settings → Secrets and variables → Actions en voeg een repository secret toe met de naam
HEARTBEAT_URL, met de ping URL als waarde. - Voeg deze stap toe aan het einde van de job:
- name: Check in with InfraNest
run: curl -fsS -m 10 --retry 3 "$HEARTBEAT_URL"
env:
HEARTBEAT_URL: ${{ secrets.HEARTBEAT_URL }}
GitHub slaat de resterende stappen over zodra er één mislukt, dus de check-in vindt alleen plaats als alles daarvoor is geslaagd — hetzelfde effect als de && hierboven.
Dit vangt ook iets op dat GitHub niet duidelijk meldt: in een openbare repository schakelt GitHub geplande workflows uit na 60 dagen zonder enige activiteit in de repository. De workflow stopt dan met draaien, er mislukt niets, en de ontbrekende check-in is wat de melding activeert.
Wat er daarna gebeurt
- Elke check-in markeert de monitor als Actief en registreert de tijd als laatste ping.
- Een gloednieuwe monitor blijft in afwachting totdat het eerste venster is verstreken, zodat je de tijd hebt om de check-in in te stellen zonder hierover een melding te krijgen.
- Als er niets binnenkomt binnen het interval plus de grace period, gaat de monitor down en wordt er een incident geopend, waardoor je gebruikelijke meldingsbestemmingen worden geactiveerd.
- De volgende check-in lost het incident op en laat je weten dat alles weer werkt — je hoeft het niet handmatig te sluiten.
NoteEen heartbeatmonitor pauzeren is veilig: de ping URL blijft normaal reageren, dus een taak die er nog steeds naartoe meldt, zal geen fouten gaan rapporteren. InfraNest stopt simpelweg met kijken totdat je hervat.
Tips
- GitHub kan geplande workflows enkele minuten later starten wanneer het druk is. Geef de monitor een grace period die hiermee rekening houdt, bovenop de eigen looptijd van de taak.
- Behandel de ping URL als een geheim. Iedereen die deze heeft, kan jouw taak als gezond rapporteren — wat een echte storing zou kunnen verbergen.
Probleemoplossing
- No ping received yet bij de monitor betekent dat InfraNest nog helemaal niets van de taak heeft gehoord. Voer de curl-regel handmatig uit vanaf dezelfde machine: als de monitor daardoor groen wordt, ligt het probleem in je script, niet hier.
- Als de machine geen uitgaande internettoegang heeft, kan de check-in niet aankomen — sta uitgaand HTTPS-verkeer naar InfraNest toe.
- Een monitor die elke nacht op hetzelfde tijdstip een melding geeft, heeft meestal een grace period die korter is dan de werkelijke worstcasetijd van de taak.
Was dit artikel nuttig?