Ce guide s'adresse à toute personne qui souhaite savoir si un script de sauvegarde, une tâche cron ou une tâche planifiée s'arrête de fonctionner silencieusement — au lieu d'un moniteur qui vérifie quelque chose qui vous appartient, celui-ci attend que votre tâche se signale.
Vue d'ensemble
- Un moniteur heartbeat fonctionne à l'inverse : votre script appelle InfraNest lorsqu'il se termine, au lieu qu'InfraNest l'appelle.
- Si le signalement n'arrive pas à temps, InfraNest vous alerte.
- C'est le meilleur moyen de détecter une tâche qui s'arrête de fonctionner sans générer d'erreur visible nulle part.
En configurer un
- Allez dans Monitoring et sélectionnez add a monitor.
- Choisissez Heartbeat / Cron monitor comme type.
- Donnez-lui un nom que vous reconnaîtrez dans une alerte — « Sauvegarde nocturne de la base de données » est préférable à « tâche 1 ».
- Définissez l'intervalle de vérification sur la fréquence à laquelle la tâche est censée s'exécuter.
- Définissez une période de grâce — un délai supplémentaire accordé avant que la tâche soit considérée en retard. Une sauvegarde qui prend habituellement quatre minutes mais qui en prend parfois huit a besoin d'une période de grâce nettement plus longue que ce dépassement.
- Sélectionnez create monitor.
Vous ne saisissez pas d'URL pour ce type — InfraNest en crée une pour vous lors de l'enregistrement.
Faire en sorte que votre tâche se signale
- Ouvrez le moniteur pour voir son ping URL, ainsi qu'une ligne de commande prête à copier.
- Ajoutez cette ligne à la fin de votre script ou de votre tâche cron, afin qu'elle ne s'exécute que lorsque la tâche a réellement réussi :
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 https://your-infranest-url/api/heartbeat/your-uuid
Le && est important : il signifie que le signalement n'a lieu que si la sauvegarde elle-même s'est terminée avec succès. Une tâche en échec reste alors silencieuse, et c'est ce silence qui déclenche l'alerte.
TipUtilisez le bouton Copier plutôt que de retaper l'URL — l'identifiant qu'elle contient est unique à ce moniteur.
Depuis un workflow GitHub Actions
Si votre sauvegarde, votre renouvellement ou votre synchronisation nocturne s'exécute sous forme de workflow GitHub Actions planifié, le même moniteur fonctionne — le workflow se signale comme dernière étape.
- Dans votre dépôt sur GitHub, ouvrez Settings → Secrets and variables → Actions et ajoutez un secret de dépôt nommé
HEARTBEAT_URL, avec le ping URL comme valeur. - Ajoutez cette étape à la fin de la tâche :
- name: Check in with InfraNest
run: curl -fsS -m 10 --retry 3 "$HEARTBEAT_URL"
env:
HEARTBEAT_URL: ${{ secrets.HEARTBEAT_URL }}
GitHub ignore les étapes restantes dès qu'une échoue, donc le signalement n'a lieu que lorsque tout ce qui le précède a réussi — le même effet que le && ci-dessus.
Cela permet aussi de détecter quelque chose que GitHub ne signale pas de manière évidente : dans un dépôt public, GitHub désactive les workflows planifiés après 60 jours sans aucune activité dans le dépôt. Le workflow arrête de s'exécuter, rien n'échoue, et c'est l'absence de signalement qui déclenche l'alerte.
Ce qui se passe ensuite
- Chaque signalement marque le moniteur Actif et enregistre l'heure comme dernier ping.
- Un moniteur tout juste créé reste en attente jusqu'à ce que sa première fenêtre soit passée, ce qui vous laisse le temps de mettre en place le signalement sans être alerté à ce sujet.
- Si rien n'arrive dans l'intervalle plus la période de grâce, le moniteur passe à l'état down et ouvre un incident, ce qui déclenche vos destinations d'alerte habituelles.
- Le signalement suivant résout l'incident et vous alerte qu'il est revenu à la normale — vous n'avez pas besoin de le fermer manuellement.
NoteMettre en pause un moniteur heartbeat est sûr : le ping URL continue de répondre normalement, donc une tâche qui continue à l'appeler ne commencera pas à signaler des échecs. InfraNest arrête simplement de surveiller jusqu'à ce que vous le réactiviez.
Astuces
- GitHub peut démarrer les workflows planifiés avec plusieurs minutes de retard lorsqu'il est sollicité. Accordez au moniteur une période de grâce qui tient compte de cela, en plus du temps d'exécution propre à la tâche.
- Traitez le ping URL comme un secret. Toute personne qui le possède peut signaler votre tâche comme fonctionnelle — ce qui masquerait un véritable échec.
Dépannage
- No ping received yet sur le moniteur signifie qu'InfraNest n'a reçu aucun signal de la tâche. Exécutez la ligne curl manuellement depuis la même machine : si cela fait passer le moniteur au vert, le problème se situe dans votre script, pas ici.
- Si la machine ne peut pas accéder à internet en sortie, le signalement ne peut pas arriver — autorisez le trafic HTTPS sortant vers InfraNest.
- Un moniteur qui alerte chaque nuit à la même heure a généralement une période de grâce plus courte que le pire temps d'exécution réel de la tâche.
Cet article vous a-t-il été utile ?