Como monitorar tarefas do cron e receber e-mails quando eles não são executados?

4

Eu percebo que quando qualquer cron tem uma saída, ele envia uma mensagem por e-mail ... o que eu estou tentando determinar é se eu tenho um script agendado para as 3h da terça-feira e por qualquer motivo ele gera um erro ou falha para correr, eu gostaria de saber ...

Estou pensando agora em configurar uma tabela de banco de dados que armazene os registros de data e hora da última execução para cada comando do cron e recebamos um relatório semanal para os comandos do cron. Ou, possivelmente, armazenar no banco de dados quando ele deve ser executado e quando ele foi executado pela última vez, se houver algum problema, ele nos envia um e-mail.

O "envio por e-mail" seria feito por nossos sistemas internos, onde nossos funcionários estão sempre fazendo login para que não sejam baseados no próprio cron.

Existe uma solução melhor?

    
por Webnet 28.01.2011 / 17:27

8 respostas

4

Acho que monitorar o syslog seria a solução mais fácil.

Mande seus syslogs para o seu sistema de monitoramento e, em seguida, configure os alertas dentro do seu sistema de monitoramento.

Eu também configurei MIBs SNMP customizados no passado, o que você poderia colocar o timestamp da última vez que um cronjob específico foi executado. Em seguida, algum sistema externo pode monitorar esse snmp MIB para um timestamp com mais de 24 horas.

    
por 28.01.2011 / 18:37
3

Sua solução é viável, mas reinventa algumas rodas que você provavelmente não precisa.

Primeiro, você deve realmente ter algum tipo de serviço de monitoramento. Eu costumo usar nagios, mas há uma tonelada lá fora. Escolha um desses sistemas e monitore seu daemon do cron.

Em seguida, escreva um plugin que utilizará os wrappers que o voretaq7 mencionou. Você terá um alerta se o cronjob falhar e se o crond também falhar.

A razão pela qual eu sugiro isso é que você terá todo o seu monitoramento em um só lugar. Você eventualmente terá que ter um sistema de monitoramento amplo no site e faz mais sentido colocar seu esforço nisso em vez de ter uma série dispersa de sistemas de monitoramento em vigor.

    
por 28.01.2011 / 19:08
3

Eu criei uma ferramenta simples para esse tipo de monitoramento - link

Ele permite que você defina ambos os intervalos (a cada 24 horas) e durações (maior que 10 minutos, menos de 2 minutos, etc) e, em seguida, receba alertas de e-mail / SMS se seu trabalho cron (ou qualquer outra tarefa automatizada) não execute de acordo com as regras definidas.

A ferramenta é gratuita para monitores individuais e planos pagos estão disponíveis para aqueles com múltiplas necessidades de monitoramento.

    
por 06.07.2014 / 19:21
2

Sua solução soa bem com base em seu ambiente, mas pode ser um pouco exagerada (a menos que você precise auditar o histórico desse trabalho a longo prazo, caso em que o bit do banco de dados pode fazer sentido).

Outra opção a ser considerada é simplesmente agrupar suas tarefas cron em um script de verificação (se a tarefa cron sair com um status de erro (! = 0) enviar um email ou gerar saída e deixar o cron enviar o email para você). / p>     

por 28.01.2011 / 17:33
2

Sua solução parece um pouco mais complicada do que eu acho que precisa ser.

Comece revendo e / ou monitorando /var/log/cron.log (ou onde quer que seus registros cron estejam indo). O cron faz um bom trabalho ao registrar todos os comandos que ele executa, junto com erros. Se você quer saber o que aconteceu, esse é o lugar para procurar. Se você está preocupado com o cron morrer, você pode configurar uma pulsação cronada que apenas registra a cada 5 minutos, e se você não vir a pulsação, envie algum tipo de alerta. Se você realmente acha que precisa de uma segunda ferramenta para ficar de olho no cron, há um pacote perl ( Schedule::Cron ) que você pode usar para verificar regularmente sua pulsação. Se você está preocupado com a confiabilidade da máquina local, também pode enviar os registros para uma segunda máquina para monitoramento / processamento / alerta / etc.

Como alternativa, você poderia simplesmente usar algum tipo de ferramenta de monitoramento do sistema (SNMP, Nagios, Hobbit / BigSister, etc) para monitorar externamente que o processo cron está sendo executado. Você monitora a saúde de seus sistemas, certo?

Embora, se você estiver realmente preocupado com a morte do cron, convém procurar reconstruir ou substituir sua máquina. O cron deve ser bastante confiável e, se estiver falhando, provavelmente é um sintoma de um problema maior.

    
por 28.01.2011 / 18:38
2

Eu lidei com um requisito semelhante:

O script executado pelo cron envia sua saída para o comando logger . logger envia uma mensagem syslog para o recurso Local4, que é manipulado pelo rsyslog. O local4. * É então enviado para um ouvinte Syslog remoto - no meu caso, uma instância do Splunk. O Splunk tem uma pesquisa salva que dispara alertas de email se os eventos não acontecerem dentro da janela de tempo esperada. Além dos alertas, o Splunk também me oferece uma linha do tempo histórica pesquisável dos eventos.

    
por 28.01.2011 / 18:57
2

Você pode usar o PushMon e criar um URL com uma programação "até 3:30 AM every Tue". Em seguida, "pingue" o URL do PushMon quando o script for executado com êxito. Se o URL do PushMon não for chamado porque a máquina está desligada ou o cron não foi executado (acontece) ou o script falha, o PushMon o alertará às 3h30. Você pode ser alertado por e-mail, SMS, telefone, mensagens instantâneas ou Twitter, e o serviço é gratuito.

Aviso: estou associado ao PushMon.

    
por 07.06.2012 / 02:33
0

Teste healthchecks.io , é uma excelente solução gratuita e de código aberto. Você pode até hospedá-lo se quiser.

    
por 06.11.2018 / 10:20