shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Monitorando scripts


From: Marcelo Salhab Brogliato
Subject: Monitorando scripts
Date: Mon, 19 Sep 2011 17:47:33 -0300

Pessoal,
estou precisando fazer um script que irá monitorar o syslog da máquina.
Desta maneira, ele irá filtrar por facilities e por level e irá gerar um
dashboard dos meus scripts.

Motivação: tenho muitos scripts rodando em diversos servidores (cerca de 15
máquinas). E, obviamente,
não é viável entrar em todos eles pra ver se os scripts estão rodando sem
nenhum problema.

Minha idéia é criar um arquivo de configuração com: facility, warn_level,
error_level, timelimit.
O warn_level e o error_level indicam o level mínimo para marcar o script com
warning ou error.
O timelimit indica o tempo máximo que o script pode ficar sem colocar
nenhuma mensagem de log no syslog,
indo direto para o estado de error.

Quero rodar um daemon que irá monitorar o /var/log/syslog e, a cada linha
adicionada, irá processá-la e atualizará
um arquivo de estado em /var/spool/scriptmonitor/<facility>.

Assim, olhando lá eu consigo saber facilmente quem está em WARN ou ERROR
(basta um grep).
Apenas para completar a idéia, fazer um outro script que processa esses
arquivos e gera um dashboard no meu
servidor http. Assim, posso acompanhar o script por um página web bem
simples :)

Bom, explicado tudo, primeiramente pensei em fazer um script em python para
ser o daemon. Mas, como seria
muito bom se rodasse apenas com sh (ou bash), me interessei por fazer em
shell mesmo.

Minha idéia para o shellscript era usar um tail -n0 -f /var/log/syslog | awk
"...", mas não vejo como fazer o timeout
neste caso. A parte de atualizar o spool seria simples, basta o awk
verificar se é de um script monitorado (talvez um
simples grep no arquivo de configuracao), ver o warn_level e error_level e
atualizar o arquivo no spool.

Eu teria que colocar outro script para fazer o timeout? Não sei se é uma boa
idéia, mas pensei em varrer o arquivo
de configuração e ver a data de modificação do seu arquivo no spool. Se
fosse tiver passado mais que "timelimit",
então ele atualizaria o arquivo no spool indicando ERROR.

Outro "processo" (queria rodar tudo em um único script) seria para limpar os
arquivos do spool que não estão mais
no arquivo de configuração. Desta maneira, a limpeza seria automática.

Apenas para deixar claro minha dúvida: é possível rodar tudo em um único
script? Se sim, como? Para fazer um
daemon, basta fazer um script com loop infinito e colocá-lo no init.d? A
idéia do tail -n0 -f é boa? Existe maneira
melhor?

Agradeço idéias e a ajuda!

Abraços,
Salhab


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]