Maîtrisez la surveillance de vos tâches planifiées sous Linux
Le cron est l'outil de planification historique et le plus utilisé sous Linux. Depuis plus de 40 ans, il permet d'automatiser l'exécution de scripts à des horaires définis. Malgré sa simplicité apparente, le cron cache de nombreux pièges qui peuvent conduire à des échecs silencieux, passant inaperçus pendant des jours voire des semaines.
Les problèmes courants incluent les crontabs effacés lors de mises à jour système, les variables d'environnement manquantes, les chemins relatifs qui ne fonctionnent pas, et les erreurs de syntaxe dans la planification. Sans surveillance externe, ces problèmes restent invisibles car le cron lui-même n'a pas de mécanisme d'alerte intégré.
MoniTao offre une solution de monitoring heartbeat qui complète parfaitement le cron Linux. En ajoutant un simple appel curl à la fin de vos scripts, vous êtes immédiatement alerté si un cron ne s'exécute pas ou échoue, quelle qu'en soit la raison.
Avant de mettre en place le monitoring, voici les commandes et fichiers clés de la gestion cron sous Linux.
Ces problèmes sont responsables de la majorité des échecs de crons sous Linux. Connaître ces pièges permet de les éviter.
Voici les stratégies pour intégrer MoniTao à vos crons Linux existants.
Voici plusieurs méthodes pour intégrer le monitoring heartbeat dans vos crons Linux :
# Méthode 1 : Ajout direct dans crontab
0 * * * * /path/to/backup.sh && curl -fsS "https://api.monitao.com/ping/TOKEN"
# Méthode 2 : Script wrapper avec gestion d'erreurs
#!/bin/bash
set -e
/path/to/backup.sh
curl -fsS --max-time 10 "https://api.monitao.com/ping/TOKEN"
# Méthode 3 : Avec logging et notification d'échec
#!/bin/bash
LOG=/var/log/backup.log
if /path/to/backup.sh >> $LOG 2>&1; then
curl -fsS "https://api.monitao.com/ping/TOKEN"
else
curl -fsS "https://api.monitao.com/ping/TOKEN/fail?msg=Backup+failed"
fi
La méthode 1 est la plus simple pour les crons existants. La méthode 2 offre une meilleure gestion des erreurs avec set -e. La méthode 3 permet de notifier explicitement les échecs avec un message d'erreur.
Quand un cron ne fonctionne pas, voici les étapes de diagnostic systématiques.
Configurez vos alertes MoniTao pour être notifié des problèmes sans être submergé.
L'environnement cron est minimal : PATH réduit, pas de variables shell personnalisées. Utilisez des chemins absolus (ex: /usr/bin/php au lieu de php) et sourcez explicitement vos fichiers d'environnement si nécessaire.
Sur systemd : journalctl -u cron. Sur les systèmes classiques : /var/log/cron ou grep CRON /var/log/syslog. Pour des logs détaillés, redirigez les sorties de vos scripts vers un fichier dédié.
Vérifiez que le cron n'est pas défini à plusieurs endroits : crontab utilisateur (crontab -l), fichier système (/etc/crontab), et répertoire /etc/cron.d/. Supprimez les doublons.
Utilisez flock pour créer un verrou : flock -n /tmp/myjob.lock ./myjob.sh. Si le lock est déjà pris, la nouvelle instance s'arrête immédiatement.
Sauvegardez régulièrement vos crontabs avec crontab -l > /backup/crontab-$(whoami).txt. Automatisez cette sauvegarde avec... un cron ! Stockez aussi une copie dans votre gestionnaire de configuration.
Exécutez manuellement dans un environnement similaire au cron : env -i HOME=$HOME /bin/bash -c "votre_script.sh". Cela simule l'environnement minimal et révèle les problèmes de PATH ou de variables.
Le cron Linux reste l'outil de planification le plus utilisé, mais sa simplicité masque de nombreux pièges. Les erreurs silencieuses, les crontabs perdus et les problèmes d'environnement sont des causes fréquentes de défaillances non détectées.
En combinant les bonnes pratiques de configuration cron avec le monitoring heartbeat de MoniTao, vous obtenez une visibilité complète sur l'exécution de vos tâches planifiées. Commencez par vos crons critiques et étendez progressivement la couverture.
Commencez gratuitement, sans carte bancaire.