Le monitoring uptime traditionnel vérifie si les services sont disponibles. Le monitoring heartbeat fait l'inverse : il attend que vos jobs signalent leur completion. S'ils ne le font pas, quelque chose ne va pas. Ce guide couvre tout sur le monitoring des tâches planifiées et processus en arrière-plan.
Qu'est-ce que le Monitoring Heartbeat ?
Le monitoring heartbeat (aussi appelé dead man's switch ou monitoring cron) fonctionne différemment du monitoring traditionnel :
Monitoring traditionnel : "Laissez-moi vérifier si votre service est up" Monitoring heartbeat : "Dites-moi quand vous avez terminé votre job"
Votre tâche planifiée envoie un "ping" au service de monitoring après une completion réussie. Si le ping n'arrive pas dans le délai prévu, vous êtes alerté.
Comment Ça Marche
1. Configurez le planning attendu (ex. "toutes les heures")
2. Définissez la période de grâce (ex. "autoriser 5 minutes de retard")
3. Ajoutez l'URL de ping à votre job
4. Le job s'exécute et ping en cas de succès
5. Si le ping n'arrive pas → Alerte
Pourquoi le Monitoring Traditionnel Échoue pour les Tâches Planifiées
Vous ne pouvez pas monitorer un job cron avec des checks HTTP car :
- Les jobs cron ne sont pas des services web - Il n'y a pas d'endpoint à vérifier
- Ils s'exécutent de façon intermittente - Pas disponibles en continu
- Les échecs sont silencieux - Pas de page d'erreur à détecter
- Ils peuvent "réussir" mais produire des résultats erronés
Un job de sauvegarde peut planter silencieusement. Une synchronisation de données peut ne pas démarrer. Un processeur de queue email peut bloquer. Sans monitoring heartbeat, vous ne saurez pas jusqu'à ce qu'il soit trop tard.
Cas d'Utilisation Courants
Vérification de Sauvegardes
Votre sauvegarde de base de données s'exécute chaque nuit à 2h. S'exécute-t-elle vraiment ?
#!/bin/bash
# backup.sh
pg_dump mydb > backup.sql
if [ $? -eq 0 ]; then
curl -fsS --retry 3 https://wizstatus.com/ping/votre-token
fi
Si la sauvegarde échoue ou ne s'exécute jamais, vous le saurez.
Traitement de Données Planifié
Jobs ETL, génération de rapports, synchronisation de données :
def rapport_quotidien():
generer_rapport()
envoyer_rapport()
# Signaler la completion réussie
requests.get("https://wizstatus.com/ping/votre-token")
Santé des Workers de Queue
Assurez-vous que vos workers traitent les jobs :
async function traiterQueue() {
await traiterBatch();
await fetch('https://wizstatus.com/ping/votre-token');
}
Tâches de Maintenance Planifiées
Vidage de cache, rotation de logs, scripts de nettoyage :
# cleanup.sh
find /tmp -type f -mtime +7 -delete
curl https://wizstatus.com/ping/votre-token
Configurer le Monitoring Heartbeat
Étape 1 : Créer un Moniteur Heartbeat
- Connectez-vous à votre dashboard de monitoring
- Créez un nouveau moniteur → Sélectionnez le type "Heartbeat"
- Nommez-le de façon descriptive (ex. "Sauvegarde Base de Données - Production")
- Configurez le planning
Étape 2 : Définir le Planning Attendu
Options de planning courantes :
| Planning | Cas d'utilisation |
|---|---|
| Chaque minute | Processeurs de queue, sync temps réel |
| Toutes les 5 minutes | Jobs batch fréquents |
| Chaque heure | Rapports horaires, refresh cache |
| Chaque jour | Sauvegardes quotidiennes, rapports |
| Cron personnalisé | Plannings spécifiques |
Étape 3 : Définir la Période de Grâce
La période de grâce détermine le retard acceptable d'un ping avant d'alerter. Définissez-la selon :
- La durée typique du job
- La tolérance de délai acceptable
- Une marge pour la latence réseau
Exemple : Le job s'exécute à 2:00 et prend jusqu'à 30 minutes. Définissez la période de grâce à 45 minutes.
Étape 4 : Ajouter le Ping à Votre Job
Ajoutez une simple requête HTTP à la fin de l'exécution réussie :
# Avec curl
curl -fsS --retry 3 https://wizstatus.com/ping/votre-token
# Avec wget
wget -q --spider https://wizstatus.com/ping/votre-token
Important : Ne pingez qu'en cas de completion réussie, pas au démarrage.
Bonnes Pratiques
Pingez Uniquement en Cas de Succès
try:
faire_travail_important()
# Pingez uniquement si le travail est terminé avec succès
requests.get(PING_URL)
except Exception as e:
log_erreur(e)
# Ne pingez pas - laissez le timeout déclencher une alerte
Gérer les Échecs Réseau
Le ping lui-même peut échouer. Utilisez des réessais :
curl -fsS --retry 3 --retry-delay 5 $PING_URL
Utilisez des Noms Descriptifs
Mauvais : "Job Cron 1" Bon : "Sauvegarde Quotidienne BDD - PostgreSQL Production"
Conclusion
Le monitoring heartbeat détecte les échecs silencieux que le monitoring traditionnel rate. Tout job qui s'exécute sur un planning - sauvegardes, rapports, processus de sync, tâches de nettoyage - devrait avoir un monitoring heartbeat.
Le principe est simple : si votre job ne se manifeste pas à temps, quelque chose ne va pas. Cet avertissement précoce prévient les échecs en cascade et la perte de données.