Les cron jobs sont les services les plus silencieusement dangereux de votre infrastructure. Quand un job de backup échoue, rien ne vous alerte, jusqu’au jour où vous avez besoin de cette sauvegarde.
Maintenant inclut un système de heartbeat conçu pour résoudre exactement ce problème.
Le principe du heartbeat
L’idée est simple : après chaque exécution réussie, votre cron job envoie un “ping” à une URL unique. Maintenant sait à quelle fréquence ce ping doit arriver. Si le ping ne vient pas dans le délai attendu, vous êtes alerté.
Configuration dans Maintenant
Créez un heartbeat monitor via l’API :
curl -X POST http://localhost:8080/api/v1/heartbeats \
-H "Content-Type: application/json" \
-d '{
"name": "Backup PostgreSQL",
"interval": "24h",
"grace_period": "1h"
}'
Maintenant vous renvoie un UUID unique. Utilisez-le dans vos scripts :

# backup.sh
#!/bin/bash
set -e
# Notifier le début du job
curl -fsS -o /dev/null http://localhost:8080/api/v1/ping/${UUID}/start
# Exécuter le backup
pg_dump -h postgres -U app mydb | gzip > /backups/mydb-$(date +%Y%m%d).sql.gz
# Notifier la fin avec le code de sortie
curl -fsS -o /dev/null http://localhost:8080/api/v1/ping/${UUID}/$?
Signaux start/end
Le signal /start est optionnel mais puissant. Il permet à Maintenant de :
- Mesurer la durée de chaque exécution
- Détecter les jobs qui démarrent mais ne finissent jamais (timeout, deadlock)
- Historiser les tendances de durée
Codes de sortie
En ajoutant /$? à la fin de l’URL de ping, vous transmettez le code de sortie du script. Un code non-zéro est enregistré comme un échec, même si le ping arrive à temps.
Intégration avec Docker
Pour les cron jobs qui tournent dans des conteneurs Docker :
services:
backup:
image: postgres:16
entrypoint: /bin/sh
command: >
-c "pg_dump -h postgres -U app mydb | gzip > /backups/daily.sql.gz &&
wget -qO- http://maintenant:8080/api/v1/ping/YOUR-UUID/$$?"
Bonnes pratiques
- Un heartbeat par job critique : backup, nettoyage, renouvellement de certificat, synchronisation
- Période de grâce généreuse : si votre backup prend habituellement 5 minutes, mettez 30 minutes de grâce
- Utilisez les signaux start/end : pour détecter les jobs bloqués
- Transmettez le code de sortie : un job qui “réussit” avec un code d’erreur n’est pas un succès
Installer Maintenant → · Comparer les éditions →