Mejor registro para cronjobs? ¿Enviar salida cron a syslog?

43

Estoy buscando una mejor manera de registrar cronjobs. La mayoría de los cronjobs tienden a enviar correos electrónicos no deseados o a la consola, se ignoran o crean otro archivo de registro.

En este caso, tengo un script Nagios NSCA que envía datos a un servidor central de Nagios. Este script send_nsca también imprime una sola línea de estado en STDOUT, indicando éxito o falla.

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

Esto envía por correo electrónico el siguiente mensaje a root @ localhost, que luego se reenvía a mi equipo de administradores de sistemas. Correo no deseado.

nsca_check_disk reenviado: 1 paquete (s) de datos enviados al host con éxito.

Estoy buscando un método de registro que:

  1. No envía spam a los mensajes de correo electrónico o la consola
  2. No cree otro archivo de registro krufty que requiera limpieza meses o años después.
  3. Capture la información de registro en algún lugar, para que pueda verla más tarde si lo desea.
  4. Funciona en la mayoría de los unixes
  5. Se adapta a una infraestructura de registro existente.
  6. Utiliza convenciones comunes de syslog como 'facilidad' y 'prioridad'
  7. Puede funcionar con scripts de terceros que no siempre se registran internamente.
Stefan Lasiewski
fuente

Respuestas:

69

En el proceso de escribir esta pregunta, me respondí. Así que me responderé al " estilo Jeopardy ". Esto amplía la respuesta proporcionada por Dennis Williamson.

Lo siguiente enviará cualquier salida de Cron /usr/bin/logger(incluido stderr, que se convierte en stdout usando 2>&1), que enviará a syslog, con una 'etiqueta' de nsca_check_disk. Syslog lo maneja desde allí. Dado que estos sistemas (CentOS y FreeBSD) ya tienen mecanismos de rotación de registro integrados, no necesito preocuparme por un registro como / var/log/mycustom.logllenar un disco.

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

/ var / log / messages ahora tiene un mensaje adicional que dice esto:

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

Me gusta / usr / bin / logger, porque funciona bien con una configuración e infraestructura de syslog existente, y se incluye con la mayoría de las distribuciones de Unix. La mayoría de las distribuciones * nix ya realizan rotación de registros y lo hacen bien.

Stefan Lasiewski
fuente
1
¿Qué hace el comando 2> & 1? ¿Qué significa eso? Gracias.
Brettski
con systemd en Ubuntu 00 00 * * * systemd-cat -t "tagname" /path/to/app.shdespuéssudo crontab -u root -e
guiones el
5

Canalice la salida a través del registrador .

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

Editar: su actualización parece el camino correcto.

Pausado hasta nuevo aviso.
fuente
¡Gracias! Después de publicar mi pregunta, vi que Apache canaliza la salida del registro a / usr / bin / logger. No me di cuenta de que podíamos canalizar la salida al registrador (1), ¡no está en la página de manual!
Stefan Lasiewski
2
"mensaje: escriba el mensaje para iniciar sesión; si no se especifica y no se proporciona el indicador -f, se registra la entrada estándar".
Pausado hasta nuevo aviso.
1

También puede ejecutar crondcon la opción -s(o -Sen Busybox) para que se envíe la salida syslog.

Stuart Cardall
fuente