Tutti gli articoli

Guide

Monitorare i cron job con gli heartbeat

I job pianificati falliscono in silenzio: nessun errore, semplicemente non succede nulla. Gli heartbeat ribaltano la prospettiva e ti avvisano quando un job non dà segni di vita.

Team UptimeAnchor · · 8 min di lettura

Backup notturni, invio di fatture, sincronizzazione con il gestionale, pulizia dei file temporanei: ogni infrastruttura ha decine di job pianificati. Hanno una caratteristica in comune: quando smettono di funzionare, nessuno se ne accorge finché non serve il risultato. E a quel punto è spesso troppo tardi.

Perché il monitoraggio classico non basta

Un monitor HTTP controlla qualcosa che risponde. Un cron job invece non risponde a nessuno: viene eseguito, fa il suo lavoro e termina. Se il server si riavvia e il demone cron non riparte, se lo script fallisce per un permesso mancante o se qualcuno commenta per errore la riga nel crontab, non c'è nessun errore da intercettare. C'è solo silenzio.

Come funziona un heartbeat

Un monitor heartbeat ribalta la logica: è il job a contattare UptimeAnchor, chiamando un URL univoco ogni volta che termina con successo. Tu indichi ogni quanto dovrebbe arrivare il segnale e un periodo di tolleranza; se il segnale non arriva in tempo, il monitor va in DOWN e ricevi un avviso.

# Backup ogni notte alle 3:00, ping solo se il backup riesce
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 https://uptimeanchor.com/api/heartbeat/IL_TUO_TOKEN > /dev/null

L'operatore && è fondamentale: il ping parte solo se lo script termina con codice di uscita 0. Se il backup fallisce, il segnale non arriva e vieni avvisato.

Scegliere intervallo e tolleranza

  • L'intervallo deve corrispondere alla pianificazione del job: 24 ore per un job giornaliero, 1 ora per uno orario.
  • La tolleranza copre la variabilità della durata: se il backup dura da 10 a 40 minuti, una tolleranza di un'ora evita falsi allarmi.
  • Per job molto lunghi, considera di inviare il ping all'inizio e un secondo monitor alla fine.
Usa sempre un timeout e qualche tentativo nella chiamata (curl -m 10 --retry 3): un problema di rete momentaneo non deve far sembrare fallito un job che invece è andato a buon fine.

Esempi in altri linguaggi

# Python
import urllib.request
urllib.request.urlopen("https://uptimeanchor.com/api/heartbeat/IL_TUO_TOKEN", timeout=10)

# PowerShell (Utilità di pianificazione di Windows)
Invoke-WebRequest -Uri "https://uptimeanchor.com/api/heartbeat/IL_TUO_TOKEN" -Method POST -TimeoutSec 10

// Node.js
await fetch("https://uptimeanchor.com/api/heartbeat/IL_TUO_TOKEN", { method: "POST" });

Cosa monitorare con gli heartbeat

  • Backup di database e file.
  • Job di fatturazione e invio di email programmate.
  • Sincronizzazioni con sistemi esterni (gestionali, CRM, marketplace).
  • Worker che consumano code: inviano un ping a ogni ciclo.
  • Dispositivi dietro NAT o firewall che non possono essere contattati dall'esterno.

Configurare un heartbeat richiede due minuti. Scoprire che il backup non funziona da tre settimane proprio il giorno in cui serve richiede molto di più.

Scopri i problemi prima dei tuoi clienti

Crea un account in meno di un minuto e configura il primo monitor. Il piano Free resta gratuito per sempre.

Nessuna carta di credito richiesta.

Monitorare i cron job con gli heartbeat · UptimeAnchor