70 votes

Meilleure journalisation pour les cronjobs ? Envoyer la sortie de cron à syslog ?

Je cherche une meilleure façon d'enregistrer les cronjobs. La plupart des cronjobs ont tendance à spammer l'email ou la console, à être ignorés, ou à créer un autre fichier de log.

Dans ce cas, j'ai un Nagios NSCA script qui envoie des données à un serveur central Nagios. Ce send_nsca script imprime également une seule ligne d'état vers STDOUT, indiquant le succès ou l'échec.

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk

Cette opération envoie le message suivant à root@localhost, qui est ensuite transmis à mon équipe de sysadmins. Spam.

transmis à nsca_check_disk : 1 paquet(s) de données envoyé(s) à l'hôte avec succès.

Je cherche une méthode de journalisation qui :

  1. Il n'y a pas de spam dans les messages envoyés à l'e-mail ou à la console.
  2. Ne créez pas un énième fichier journal krufty qui nécessite un nettoyage des mois ou des années plus tard.
  3. Enregistrez les informations du journal quelque part, afin de pouvoir les consulter ultérieurement si vous le souhaitez.
  4. Fonctionne sur la plupart des unixes
  5. S'intègre dans une infrastructure de logs existante.
  6. Utilise les conventions syslog courantes comme 'facility' et 'priority'.
  7. Peut fonctionner avec des scripts tiers qui ne font pas toujours de la journalisation en interne.

112voto

Stefan Lasiewski Points 22459

En écrivant cette question, je me suis répondu à moi-même. Je vais donc me répondre à moi-même " Style Jeopardy ". Ceci développe 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 la fonction 2>&1 ), qui sera envoyé à syslog, avec un 'tag' de nsca_check_disk . Syslog s'en charge à partir de là. Puisque ces systèmes (CentOS et FreeBSD) ont déjà des mécanismes intégrés de rotation des journaux, je n'ai pas besoin de me préoccuper d'un journal comme / var/log/mycustom.log qui remplit un disque.

*/5 * * * * root    /usr/local/nagios/sbin/nsca_check_disk 2>&1 | /usr/bin/logger -t nsca_check_disk

Le fichier /var/log/messages contient 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 bien /usr/bin/logger , parce qu'il fonctionne bien avec une configuration et une infrastructure syslog existantes, et qu'il est inclus dans la plupart des distributions Unix. La plupart des distributions *nix font déjà la rotation des journaux et le font bien.

8voto

jason saldo Points 5036

Passez la sortie par bûcheron .

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice

Edit : Votre mise à jour semble être la bonne voie à suivre.

2voto

Stuart Cardall Points 511

Vous pouvez également exécuter crond avec option -s (o -S dans Busybox) afin que la sortie soit envoyée à syslog .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X