Heartbeat
Surveillance de cron et de tâches en arrière-plan
L'inverse : c'est ta tâche qui nous appelle.
À quoi ça sert
Tout le reste ici va chercher. Celui-ci attend. Ton backup, ton import nocturne, ton worker de file d'attente appelle une URL quand il se termine, et on alerte si un appel n'arrive pas.
C'est le seul moyen de surveiller quelque chose sans adresse à vérifier. Un backup qui a cessé de fonctionner il y a trois semaines ressemble exactement à un backup parfait vu de l'extérieur, jusqu'au jour où quelqu'un en a besoin.
Ce que tu peux configurer
Tout ce qui suit est dans le formulaire quand tu en ajoutes un, sur chaque forfait.
- À quelle fréquence ça tourne
- Pas à quelle fréquence on regarde : à quelle fréquence ta tâche doit appeler. Un backup hebdomadaire est une chose normale, donc celui-ci va jusqu'à un mois là où les autres s'arrêtent à un jour.
- Retard autorisé
- Combien de minutes de retard l'appel peut avoir. Une tâche qui tourne toutes les heures et prend jusqu'à vingt minutes peut avoir trente minutes de marge. Vide, c'est un dixième de la période.
- Ping URL
- Généré quand tu crées le monitor, et affiché une seule fois. Appelle-le à la fin de ta tâche. Il peut être régénéré, ce qui désactive l'ancien.
Questions
C'est la même chose qu'un dead man's switch ?
C'est exactement ça, appliqué à la surveillance de cron. Tout le reste sur ce site va chercher quelque chose. Celui-ci attend qu'on lui dise, et alerte sur le silence, ce qui est le seul moyen de surveiller une tâche sans adresse à vérifier ni page à lire.
Combien de retard ma tâche peut-elle avoir avant que tu alertes ?
Autant de retard que tu autorises, en minutes. Une tâche qui tourne toutes les heures et prend entre une et vingt minutes peut avoir trente minutes de marge, donc un appel est attendu entre soixante et quatre-vingt-dix minutes après le dernier. Si c'est vide, c'est un dixième de la période, et jamais moins d'une minute : deux minutes de retard ne signifient rien pour un backup nocturne mais tout pour une tâche qui tourne toutes les cinq minutes. Ce minimum est là parce qu'un cron qui démarre quelques secondes avant ou après la minute est normal et ne doit jamais ouvrir un incident.
Comment l'appeler depuis un cron ou un script shell ?
Appelle l'URL à la fin de la tâche, avec curl, wget ou tout autre outil qui parle HTTP. GET, POST et HEAD sont tous acceptés, car la moitié du monde utilise l'un et l'autre moitié l'autre, et la réponse est un 204 vide pour qu'une tâche nocturne n'envoie pas une page HTML par email à l'opérateur.
Je dois l'appeler au début ou à la fin ?
À la fin, après que le travail a réussi et pas avant qu'il commence. Un appel en début de script dit que la machine s'est réveillée, ce qui est rarement ce qui pose problème. Mets-le sur la dernière ligne, après toute vérification de code de sortie que le script a déjà, et le silence signifiera alors que la tâche a échoué plutôt que l'hôte est hors ligne.
Et si l'URL fuitait ?
L'URL est l'identifiant, c'est pourquoi elle est composée de 256 bits de hasard et qu'elle t'est montrée une seule fois. Quiconque l'a peut signaler ta tâche comme saine, ce qui est l'échec à craindre plutôt que quelqu'un qui lit quoi que ce soit. Régénère-la et l'ancienne cesse immédiatement de fonctionner.
Une tâche hebdomadaire peut-elle utiliser ça ?
Oui, et c'est l'une des meilleures raisons de le faire. Cet intervalle va jusqu'à un mois là où les autres types de contrôle s'arrêtent à un jour, car un backup hebdomadaire est une chose normale, et un backup qui a cessé de fonctionner il y a trois semaines ressemble exactement à un backup parfait, jusqu'au jour où quelqu'un en a besoin.
Pourquoi ne pas faire envoyer un email par la tâche si elle échoue ?
Parce que l'échec dont tu as besoin d'entendre parler est celui où la tâche ne tourne pas du tout, et une tâche qui n'a pas tourné n'envoie pas d'email. Cela couvre un crash dans le script, une machine qui a redémarré, une entrée cron que quelqu'un a commentée, un conteneur qui n'a jamais démarré et une file d'attente qui a cessé d'être vidée. Attraper les erreurs dans la tâche vaut toujours la peine ; c'est un échec différent du silence.