Melhor registro de cronjobs? Enviar saída do cron para o syslog?

38

Estou procurando uma maneira melhor de registrar os cronjobs. A maioria dos cronjobs tende a enviar spam por email ou console, ser ignorado ou criar outro arquivo de log.

Neste caso, eu tenho um script Nagios NSCA que envia dados para um servidor central do Nagios. Este script send_nsca também imprime uma única linha de status para STDOUT, indicando sucesso ou falha.

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

Isso envia por e-mail a seguinte mensagem para root @ localhost, que é então encaminhada para minha equipe de administradores de sistema. Spam.

encaminhado nsca_check_disk: 1 pacote (s) de dados enviado (s) para o host com sucesso.

Estou procurando um método de registro que:

  1. Não envia spam às mensagens para email ou console
  2. Não crie mais nenhum arquivo de log krufty que requeira limpeza meses ou anos depois.
  3. Capture as informações de registro em algum lugar, para que possam ser visualizadas posteriormente, se desejado.
  4. Funciona na maioria dos unixes
  5. Cabe em uma infraestrutura de registro existente.
  6. Usa convenções comuns de syslog como 'instalação' e 'prioridade'
  7. Pode funcionar com scripts de terceiros que nem sempre são registrados internamente.
por Stefan Lasiewski 30.04.2010 / 18:53

3 respostas

60

No processo de escrever esta pergunta, eu respondi a mim mesmo. Então, vou responder a mim mesmo " Jeopardy-style ". Isso expande a resposta fornecida por Dennis Williamson.

O seguinte enviará qualquer saída Cron para /usr/bin/logger (incluindo stderr, que é convertido para stdout usando 2>&1 ), que será enviado para o syslog, com uma 'tag' de nsca_check_disk . Syslog lida com isso de lá. Como esses sistemas (CentOS e FreeBSD) já possuem mecanismos integrados de rotação de log, não preciso me preocupar com um log como / var/log/mycustom.log preenchendo um disco.

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

/ var / log / messages agora tem uma mensagem adicional que diz isso:

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

Eu gosto de / usr / bin / logger, porque ele funciona bem com uma configuração e infraestrutura de syslog existente e está incluído na maioria das distribuições Unix. A maioria das distribuições * nix já fazem a rotação do log e o fazem bem.

    
por 04.10.2012 / 19:48
5

Canalize a saída por meio do registrador .

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

Editar: sua atualização parece ser o caminho certo a seguir.

    
por 30.04.2010 / 18:58
1

Você também pode executar crond com a opção -s (ou -S no Busybox) para que a saída seja enviada para syslog .

    
por 14.03.2017 / 05:18