Fonctionnalités Tarifs Guides Alternatives Blog Docs Mon compte English Acheter une licence GitHub
tutorielcronheartbeatmonitoring

Monitoring de cron jobs avec Maintenant : le guide pratique

· 2 min de lecture ·Benjamin Touchard

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 :

Monitoring heartbeat : cron jobs, durées, codes de sortie

# 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

  1. Un heartbeat par job critique : backup, nettoyage, renouvellement de certificat, synchronisation
  2. Période de grâce généreuse : si votre backup prend habituellement 5 minutes, mettez 30 minutes de grâce
  3. Utilisez les signaux start/end : pour détecter les jobs bloqués
  4. 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 →

À lire ensuite

← Auto-découverte de conteneurs : comment ça marche … Le guide complet du monitoring Docker Compose →

Prêt à essayer Maintenant ?

Un conteneur, zéro config. Monitoring complet en 30 secondes.