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

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

Re: [shell-script] Monitorando ocorrências em log e disparando alarme


From: Julio C. Neves
Subject: Re: [shell-script] Monitorando ocorrências em log e disparando alarme
Date: Fri, 29 Apr 2011 14:16:01 -0300

Aloha Kurt,
gostei do teu pitaco com relação à dúvida de um colega com relação ao whois.
Mas vamos ao que vc pediu.

Creio que a saída mais segura para o seu problema se o uso de um named pipe
(FIFO) como ponte. Os arquivos deste tipo precisam de um processo falador de
um lado (tail -f) e de um ouvinte do outro.

Assim sendo qdo o seu processo parar de ouvir para atualizar o grep e
esvaziar o arquivo de saída, a saída do tail do processo tagarela ficará
contida até o ouvinte voltar ao grep.

A teoria é essa, mas nunca testei FIFO com um tail -f. Fiz exatamente o que
te descrevi em uma CGI para contar os acessos na minha página que tem cerca
de 20.000 acessos/mês, que não é como um log, mas tb é um número bastante
expressivo.

Cordialmente,

Julio Neves

*Quer programar bem em Shell?*

*Use este endereço de e-mail, o Skype ou ☎ (21)8112-9988 ☎*
My profiles: [image: Twitter] <http://twitter.com/juliobash>
Contact me: [image: Skype/] julioneves1


Em 29 de abril de 2011 12:29, Kurt Kraut <address@hidden> escreveu:

>
>
> Aloha,
>
> Tenho que monitorar um daemon proprietário que felizmente gera um arquivo
> .log em tempo real, com uma transação por linha. Eu preciso detectar a
> ocorrência de linhas nesse log que tenham os termos 'publish' ou
> 'unpublish'
> e tomar ações baseado no surgimento desses termos no log. É tolerável que a
> solução leve 5 minutos ou menos para detectar a ocorrência desses termos.
>
> Minha dúvida é, qual a melhor abordagem? O que pensei foi:
>
> tail -f arquivo.log | grep -F "publish" >> /tmp/arquivo.log.buffer
>
> E fazer um cronjob que rodasse a cada minuto verificando linha a linha do
> /tmp/arquivo.log.buffer para tomada de decisão e apagando o conteúdo do
> arquivo após analizado. Porém, como esse arquivo não parará de ser escrito,
> corre o risco de acontecer a seguinte sequência de eventos:
>
> 1) /tmp/arquivo.log.buffer é escrito com conteúdo
> 2) o cronjob que realmente analiza o conteúdo dele é disparado
> 3) Uma nova ocorrência é gravada em /tmp/arquivo.log.buffer
> 4) O arquivo /tmp/arquivo.log.buffer é apagado/limpo sem que a ocorrência
> do
> item acima seja detectada
>
> Uma forma de evitar isso seria sempre copiar o /tmp/arquivo.log.buffer para
> um arquivo temporário $(mktemp) antes de ser analisado. Mas fico com a
> sensação que já é gambiarra demais. Gostaria de ter uma solução limpa pois,
> no futuro, pretendo transformar isso num script do Nagios para que ele se
> encarregue de monitorar as ocorrências e disparar os alarmes.
>
> Alguém sugere alguma abordagem?
>
> Cordialmente,
>
> Kurt Kraut
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



reply via email to

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