Heartbeat
Monitoraggio di cron job e processi in background
Al contrario: è il tuo job che chiama noi.
A cosa serve
Tutto il resto qui va e controlla. Questo aspetta. Il tuo backup, il tuo import notturno, il tuo queue worker chiamano un URL quando finiscono, e noi avvisiamo se una chiamata non arriva.
È l'unico modo per monitorare qualcosa senza un indirizzo da controllare. Un backup che ha smesso di funzionare tre settimane fa sembra esattamente come uno che ha funzionato perfettamente, dall'esterno, fino al giorno in cui qualcuno ha bisogno del backup.
Cosa puoi impostare
Tutto ciò che segue è nel modulo quando ne aggiungi uno, su ogni piano.
- Ogni quanto viene eseguito
- Non ogni quanto controlliamo noi: ogni quanto il tuo job dovrebbe chiamare. Un backup settimanale è una cosa normale da avere, quindi questo arriva fino a un mese, mentre gli altri si fermano a un giorno.
- Ritardo consentito
- Quanti minuti di ritardo può avere la chiamata. Un job che gira ogni ora e impiega fino a venti minuti può avere un ritardo consentito di trenta. Vuoto è un decimo del periodo.
- Ping URL
- Generato quando crei il monitor e mostrato una sola volta. Chiamalo alla fine del tuo job. Può essere rigenerato, il che disattiva quello vecchio.
Domande
È la stessa cosa di un dead man's switch?
È esattamente quello, applicato al monitoraggio dei cron job. Tutto il resto su questo sito va e controlla qualcosa. Questo aspetta di essere avvisato e segnala il silenzio, che è l'unico modo per monitorare un job che non ha un indirizzo da controllare né una pagina da leggere.
Quanto può essere in ritardo il mio job prima che avvisiate?
Tanto in ritardo quanto consenti, in minuti. Un job che gira ogni ora e impiega da uno a venti minuti può avere un ritardo consentito di trenta, quindi una chiamata è attesa tra sessanta e novanta minuti dopo l'ultima. Lasciato vuoto è un decimo del periodo in cui gira, e mai meno di un minuto: due minuti di ritardo non significano nulla per un backup notturno e tutto per un job che gira ogni cinque. Il limite minimo c'è perché un cron job che parte pochi secondi prima o dopo il minuto è normale e non deve mai aprire un incidente.
Come lo chiamo da un cron job o uno script shell?
Richiama l'URL alla fine del job, con curl o wget o qualsiasi altra cosa che parli HTTP. GET, POST e HEAD sono tutti accettati, perché metà del mondo usa uno e metà l'altro, e la risposta è un 204 vuoto così che un job notturno non invii una pagina HTML all'operatore.
Devo chiamarlo all'inizio o alla fine?
Alla fine, dopo che il lavoro è riuscito e non prima che inizi. Una chiamata all'inizio dello script dice che la macchina si è svegliata, che raramente è la cosa che va storta. Mettila sull'ultima riga, dietro qualsiasi controllo del codice di uscita che lo script ha già, e il silenzio allora significa che il job è fallito piuttosto che l'host sia offline.
E se l'URL viene divulgato?
L'URL è la credenziale, ed è per questo che è composto da 256 bit di casualità ed è mostrato a te una sola volta. Chiunque lo abbia può segnalare il tuo job come sano, che è il fallimento di cui preoccuparsi piuttosto che qualcuno legga qualcosa. Rigeneralo e quello vecchio smette di funzionare immediatamente.
Un job che gira settimanalmente può usare questo?
Sì, ed è uno dei motivi migliori per farlo. Questo intervallo arriva fino a un mese, mentre gli altri tipi di controllo si fermano a un giorno, perché un backup settimanale è una cosa normale da avere e un backup che ha smesso di funzionare tre settimane fa sembra identico a uno che ha funzionato perfettamente, fino al giorno in cui qualcuno ne ha bisogno.
Perché non far inviare un'email al job quando fallisce?
Perché il fallimento di cui hai bisogno di sapere è quello in cui il job non gira affatto, e un job che non è girato non invia email. Questo copre un crash all'interno dello script, una macchina che si è riavviata, una voce di cron che qualcuno ha commentato, un container che non è mai partito e una coda che ha smesso di essere svuotata. Rilevare errori nel job vale comunque la pena; è un fallimento diverso dal silenzio.