Mieux se connecter pour les tâches cron? Envoyer la sortie cron à syslog?

43

Je cherche un meilleur moyen de me connecter à Cronjobs. La plupart des tâches creuses ont tendance à spammer les courriels 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 seule ligne d'état dans STDOUT, indiquant le succès 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 transféré: 1 paquet (s) de données envoyé (s) à l'hôte avec succès.

Je cherche une méthode de journalisation qui:

  1. N'envoie pas de spam à la messagerie ou à la console
  2. Ne créez pas encore un autre fichier journal krufty nécessitant un nettoyage des mois ou des années plus tard.
  3. Capturez les informations du journal quelque part afin de pouvoir les consulter ultérieurement si vous le souhaitez.
  4. Fonctionne sur la plupart des unix
  5. S'intègre dans une infrastructure de journalisation existante.
  6. Utilise les conventions syslog courantes telles que 'facilité' et 'priorité'
  7. Peut fonctionner avec des scripts tiers qui ne font pas toujours la journalisation en interne.
Stefan Lasiewski
la source

Réponses:

69

En écrivant cette question, je me suis répondu. Je vais donc me répondre "à la manière de Jeopardy ". Ceci élargit la réponse fournie par Dennis Williamson.

Ce qui suit enverra toute sortie Cron à /usr/bin/logger(y compris stderr, qui est convertie en stdout using 2>&1), qui enverra à syslog, avec une balise de nsca_check_disk. Syslog le gère à partir de là. Étant donné que ces systèmes (CentOS et FreeBSD) disposent déjà de mécanismes de rotation des journaux intégrés, je n'ai pas besoin de m'inquiéter d'un journal comme var/log/mycustom.logremplir / 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 bien / usr / bin / logger, car il fonctionne bien avec une configuration et une infrastructure syslog existantes et est inclus dans la plupart des distributions Unix. La plupart des distributions * nix font déjà la rotation des journaux et le font bien.

Stefan Lasiewski
la source
1
Que fait la commande 2> & 1? Qu'est-ce que ça veut dire? Merci.
Brettski
avec systemd dans Ubuntu 00 00 * * * systemd-cat -t "tagname" /path/to/app.shaprèssudo crontab -u root -e
dashy
5

Transférer la sortie dans l’ enregistreur .

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

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

En pause jusqu'à nouvel ordre.
la source
Merci! Après avoir posté ma question, j'ai constaté qu'Apache dirigeait la sortie du journal vers / usr / bin / logger. Je ne savais pas que nous pouvions diriger la sortie vers l'enregistreur (1) - ce n'est pas dans la page de manuel!
Stefan Lasiewski
2
"message - Ecrivez le message à consigner; s'il n'est pas spécifié et que l'indicateur -f n'est pas fourni, l'entrée standard est consignée."
pause jusqu'à nouvel ordre.
1

Vous pouvez également exécuter crondavec option -s(ou -Sdans Busybox) pour que la sortie soit envoyée à syslog.

Stuart Cardall
la source