Je recherche une meilleure façon de consigner les tâches cron. La plupart des tâches cron ont tendance à envoyer des courriers électroniques indésirables ou la console, à être ignorées ou à créer un autre fichier journal.
Dans ce cas, j'ai un script Nagios NSCA qui envoie des données à un serveur central Nagios. Ce script send_nsca imprime également une ligne d'état unique sur STDOUT, indiquant la réussite ou l'échec.
0 * * * * root /usr/local/nagios/sbin/nsca_check_disk
Cela envoie le message suivant à root @ localhost, qui est ensuite transmis à mon équipe d'administrateurs système. Spam.
nsca_check_disk transmis: 1 paquet (s) de données envoyé (s) à l'hôte avec succès.
Je recherche une méthode de journalisation qui:
En train d'écrire cette question, j'ai répondu moi-même. Je vais donc me répondre " style Jeopardy ". Cela élargit la réponse fournie par Dennis Williamson.
Ce qui suit enverra toute sortie Cron à /usr/bin/logger
(y compris stderr, qui est converti en stdout à l'aide de 2>&1
), qui sera envoyé à syslog, avec un 'tag' de nsca_check_disk
. Syslog le gère à partir de là. Étant donné que ces systèmes (CentOS et FreeBSD) ont déjà des mécanismes de rotation des journaux intégrés, je n'ai pas à me soucier d'un journal comme/var/log/mycustom.log
remplir un disque.
*/5 * * * * root /usr/local/nagios/sbin/nsca_check_disk 2>&1 | /usr/bin/logger -t nsca_check_disk
/ var/log/messages a maintenant un message supplémentaire qui dit ceci:
Apr 29, 17:40:00 192.168.6.19 nsca_check_disk: 1 data packet(s) sent to Host successfully.
J'aime/usr/bin/logger, car il fonctionne bien avec une configuration et une infrastructure syslog existantes, et est inclus avec la plupart des distributions Unix. La plupart des distributions * nix effectuent déjà la rotation des journaux et le font bien.
Dirigez la sortie via logger .
0 * * * * root /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice
Edit: Votre mise à jour ressemble à la bonne façon de procéder.
Vous pouvez également exécuter crond
avec l'option -s
(ou -S
dans Busybox) pour que la sortie soit envoyée à syslog
.