Cas d'usage

Surveiller un cron, une file ou une tâche planifiée

Un site qui répond 200 peut cacher une sauvegarde qui ne tourne plus depuis trois semaines, une file d'e-mails bloquée ou un worker mort. Ces pannes-là ne se voient pas de l'extérieur: personne ne s'en plaint avant qu'il soit trop tard. Deux mécanismes les rendent visibles.

1. Le heartbeat: la tâche prouve qu'elle a tourné

Pour un cron, un script de sauvegarde, un import nocturne.

À la création d'un moniteur « Heartbeat (cron) », En Service vous donne une URL unique. Votre tâche l'appelle à la fin de chaque exécution réussie. Si l'appel n'arrive pas dans l'intervalle prévu, plus 60 secondes de marge, le moniteur passe hors service et vous êtes alerté.

# crontab: sauvegarde à 3 h, battement seulement si elle réussit
0 3 * * * /usr/local/bin/sauvegarde.sh && curl -fsS -m 10 https://a.en-service.fr/heartbeat.php?t=VOTRE_JETON >/dev/null

Le && fait tout le travail: une sauvegarde qui échoue n'envoie pas de battement, et son silence suffit à déclencher l'alerte. Le même appel s'ajoute à la fin d'un script PHP, Python ou d'un job de CI.

2. La route de santé: on interroge le composant

Pour une file, une base, un service tiers vu depuis votre application.

Exposez une URL interne qui teste réellement le composant (une requête SQL, la profondeur de la file, l'API du prestataire d'envoi) et répond un mot témoin quand tout va bien. Un moniteur HTTP l'interroge toutes les 5 minutes en gratuit, toutes les minutes en Pro, et vérifie à la fois le code de réponse et la présence du mot.

GET /sante/?c=file
200  FILE-OK  (moins de 100 messages en attente)
503            (file bloquée: le mot disparaît, le moniteur passe hors service)

Une panne n'est signalée qu'après confirmation, pour ne pas vous réveiller sur un hoquet réseau. Une route par composant donne une ligne par composant sur votre page de statut: « Base de données », « Envoi des e-mails », « Génération des factures ».

Questions fréquentes

Quelle différence entre un heartbeat et une route de santé?

Le heartbeat est passif: c'est votre tâche qui nous appelle, et l'alerte part quand l'appel n'arrive plus. Il couvre ce qu'on ne peut pas interroger de l'extérieur: un cron, un script de sauvegarde, un worker sur un serveur sans port ouvert. La route de santé est active: nos sondes l'interrogent à intervalle fixe et lisent la réponse. Elle couvre ce qui peut répondre à une requête HTTP: une file, une base, un service tiers vu depuis votre application.

Au bout de combien de temps suis-je alerté si mon cron ne tourne plus?

Après l'intervalle choisi plus une marge de 60 secondes. Un cron déclaré toutes les heures qui ne s'exécute plus déclenche donc une alerte environ 61 minutes après son dernier passage réussi.

Mon cron tourne une fois par jour, c'est possible?

Oui. L'intervalle d'un heartbeat va de 5 minutes (1 minute en Pro) à une semaine: 1 jour pour une sauvegarde nocturne, 1 semaine pour un rapport hebdomadaire.

Comment éviter d'être alerté quand le cron a tourné mais a échoué?

N'appelez l'URL qu'en cas de succès: placez l'appel après la commande, reliée par &&. Si la commande sort en erreur, l'appel n'a pas lieu et l'absence de battement déclenche l'alerte, exactement comme si la tâche n'avait pas tourné.

Que doit renvoyer une route de santé?

Un code 200 et un mot témoin quand tout va bien, un code d'erreur (503 par exemple) sinon. Le moniteur vérifie le code et la présence du mot: une page d'erreur servie en 200 par un proxy ne passe donc pas pour un succès. Gardez la route rapide (quelques dizaines de millisecondes) et sans effet de bord.

Est-ce inclus dans l'offre gratuite?

Oui, le heartbeat et la vérification HTTP avec mot témoin font partie de l'offre gratuite (3 moniteurs, alertes par e-mail). L'offre Pro ajoute l'intervalle d'une minute, les canaux Slack, Discord, Telegram, Teams et webhook, et l'escalade si personne ne réagit.

Votre premier heartbeat en deux minutes

Gratuit jusqu'à 3 moniteurs, sans carte bancaire.