Vaut pour une crontab Linux, le gestionnaire de tâches cPanel, ou toute planification qui exécute une commande shell.
# Sauvegarde nocturne — le battement ne part QUE si le script réussit. 0 2 * * * /usr/local/bin/sauvegarde.sh && curl -fsS -X POST 'https://messagerie.inovertix.com/api/inowatch/beat/sauvegarde-fiavia' -H 'X-Beat-Key: INOWTC_HB_…' >/dev/null
&& et non ;. C'est la seule chose vraiment importante de cette page. Avec &&, un échec du script devient un silence, et INOWATCH alerte. Avec ;, le battement partirait quand même : une tâche qui échoue chaque nuit passerait pour parfaitement saine, et le dispositif entier deviendrait décoratif.
&&
;
L'interface « Tâches Cron » de cPanel accepte exactement la même ligne. Deux précautions :
les guillemets simples autour de l'URL et de l'en-tête — cPanel passe la commande à /bin/sh, et un & non protégé la couperait en deux ;
/bin/sh
&
>/dev/null
Si votre panneau n'offre qu'un champ « URL à appeler » (sans shell), utilisez la clé en paramètre :
https://messagerie.inovertix.com/api/inowatch/beat/sauvegarde-fiavia?k=INOWTC_HB_…
Cette forme est acceptée pour cette clé-là : elle n'autorise que « j'ai tourné ». Une clé qui donnerait accès à des données, elle, est refusée dans une URL.
Utile quand vous voulez distinguer « la tâche n'a pas tourné » de « la tâche a tourné et a échoué » — deux pannes différentes, et la seconde est invisible pour la surveillance du silence.
#!/usr/bin/env bash BEAT='https://messagerie.inovertix.com/api/inowatch/beat/sauvegarde-fiavia' KEY='INOWTC_HB_…' DEBUT=$(date +%s) if /usr/local/bin/sauvegarde.sh; then ETAT="" else ETAT="&failed=1" fi DUREE=$(( ($(date +%s) - DEBUT) * 1000 )) curl -fsS -X POST "${BEAT}?duration_ms=${DUREE}${ETAT}" -H "X-Beat-Key: ${KEY}" >/dev/null
L'interface affichera alors la durée de chaque exécution et une pastille « dernière exécution en erreur ».
À la fin, presque toujours. Un battement en début d'exécution prouve seulement que la tâche a démarré — or une tâche qui démarre et se bloque indéfiniment est exactement le cas qu'on cherche à détecter.
L'exception : une tâche dont la durée est très variable et parfois supérieure à sa propre cadence. Battez alors aux deux moments, et réglez la cadence attendue sur l'intervalle de démarrage, pas sur la durée.
Réglez-la sur l'intervalle réel de la tâche. La grâce de 5 minutes ajoutée par INOWATCH absorbe le retard normal d'un cron mutualisé ; inutile de gonfler l'intervalle « pour être tranquille » — une tâche quotidienne réglée sur 48 h ne signalerait une panne que le surlendemain.
*/5 * * * *
0 * * * *
0 2 * * *
0 3 * * 1
Lancez la ligne à la main. La réponse doit être {"ok":true,…} et l'état de la tâche doit passer à « Actif » dans CONTROL.
{"ok":true,…}
Si curl rend une erreur, la table de diagnostic du README donne la cause exacte pour chaque code.
curl