Fonctionnalités Comparatif Pricing Blog Docs English 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 :

# 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 →

← 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.

Installer