Migliore registrazione per cronjobs? Invia output cron a syslog?


43

Sto cercando un modo migliore per registrare cronjobs. La maggior parte dei cronjob tende a inviare spam alla posta elettronica o alla console, viene ignorata o crea un altro file di registro.

In questo caso, ho uno script Nagios NSCA che invia i dati a un server Nagios centrale. Questo script send_nsca stampa anche una singola riga di stato su STDOUT, indicando l'esito positivo o negativo.

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

Questo invia il seguente messaggio a root @ localhost, che viene quindi inoltrato al mio team di amministratori di sistema. Spam.

inoltrato nsca_check_disk: 1 pacchetto / i di dati inviato / i correttamente all'host.

Sto cercando un metodo di registrazione che:

  1. Non invia spam ai messaggi via e-mail o alla console
  2. Non creare ancora un altro file di registro krufty che richiede la pulizia mesi o anni dopo.
  3. Acquisisci le informazioni del registro da qualche parte, in modo che possano essere visualizzate in seguito, se lo desideri.
  4. Funziona sulla maggior parte degli unix
  5. Si adatta a un'infrastruttura di log esistente.
  6. Utilizza convenzioni di syslog comuni come "facilità" e "priorità"
  7. Può funzionare con script di terze parti che non eseguono sempre la registrazione internamente.

Risposte:


69

Nel processo di stesura di questa domanda, ho risposto a me stesso. Quindi mi risponderò " in stile Jeopardy ". Questo si espande sulla risposta fornita da Dennis Williamson.

Quanto segue invierà qualsiasi output Cron /usr/bin/logger(incluso stderr, che viene convertito in stdout usando 2>&1), che invierà a syslog, con un 'tag' di nsca_check_disk. Syslog lo gestisce da lì. Dato che questi sistemi (CentOS e FreeBSD) hanno già meccanismi di rotazione dei log integrati, non ho bisogno di preoccuparmi di un log simile / di var/log/mycustom.logriempire un disco.

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

/ var / log / messages ora ha un messaggio aggiuntivo che dice questo:

Apr 29, 17:40:00 192.168.6.19 nsca_check_disk: 1 data packet(s) sent to host successfully.

Mi piace / usr / bin / logger, perché funziona bene con una configurazione e un'infrastruttura syslog esistenti ed è incluso nella maggior parte delle distribuzioni Unix. La maggior parte delle distribuzioni * nix eseguono già la rotazione dei registri e lo fanno bene.


1
Cosa fa il comando 2> & 1? cosa significa? Grazie.
Brettski,


con systemd in Ubuntu 00 00 * * * systemd-cat -t "tagname" /path/to/app.shdoposudo crontab -u root -e
dashesy

5

Installa l'output tramite il logger .

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

Modifica: il tuo aggiornamento sembra il modo giusto di procedere.


Grazie! Dopo aver pubblicato la mia domanda, ho visto che le pipe di Apache registrano l'output in / usr / bin / logger. Non mi ero reso conto che avremmo potuto reindirizzare l'output al logger (1) - non è nella manpage!
Stefan Lasiewski,

2
"message - Scrivi il messaggio da registrare; se non specificato, e il flag -f non viene fornito, viene registrato l'input standard."
In pausa fino a nuovo avviso.

1

Puoi anche eseguire crondcon l'opzione -s(o -Sin Busybox) in modo che l'output venga inviato a syslog.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.