Qual é a maneira mais simples de monitorar arquivos de log para (a) correspondências string / regex AND (b) falta de saída?

1

Em um único servidor Linux, muitas vezes há muitos serviços independentes (talvez interligados) gerando inúmeros logs para arquivos em caminhos conhecidos.

Às vezes, coisas ruins acontecem e são escritas para os logs. Às vezes, os serviços são bloqueados e os logs não recebem (ou talvez pouquíssimas) novas entradas.

Qual é a maneira mais simples de monitorar esses dois tipos de eventos usando uma ferramenta / serviço / sistema?

    
por wodow 03.01.2013 / 18:06

3 respostas

2

Eu não sei se isso é "o caminho mais simples", mas acho que esse é o jeito certo: Use sistemas / serviços de alerta / monitoramento, como Nagios, Zabbix, Zenoss ou qualquer uma das outras ferramentas similares. Eles monitorarão seu servidor em busca de parâmetros especificados (o processo está em execução / ativo, conexões de aceitação de portas, atividade no arquivo de log, conteúdo dos arquivos de log) e executam ações com base em regras (alertar você, reiniciar o serviço, etc.).

    
por 03.01.2013 / 18:27
1

Existe agora um plugin de monitoramento do Nagios Log disponível. Veja o seguinte link:

Monitoramento do log do Nagios

Leia atentamente e veja se é isso que você quer.

Sua primeira pergunta; logs de monitoramento para strings / regex:

Da minha experiência com a ferramenta logrobot usada nessa página, eu sei que o monitoramento de qualquer tipo de log é não é um problema, independentemente do formato do log. o exemplo usado nessa página deve confirmar isso.

Sua segunda pergunta; monitorize o registo para se certificar de que existe saída:

agora também para monitorar e alertar se há alguma saída, isso também é possível. Eu estou tentando pensar no topo da minha cabeça como fazer isso. mas tente isto:

logrobot autonda / log / arquivo / caminho 60 m '.' '.' 2 2 maxclient -ndnotfoundn

logrobot = nome da ferramenta

autonda = o recurso a ser usado em seu cenário

/ log / file / path = caminho para o seu arquivo de log

60m = se a última vez que o arquivo foi modificado pela última vez for maior que 60m, a ferramenta não avançará mais.

'.' = esta procurando por qualquer coisa no arquivo de log

'.' = esta procurando por qualquer coisa no arquivo de log

2 = se pelo menos duas linhas não forem encontradas, atente

maxclient = o nome que você está dando para esta sessão. você pode chamar isso do jeito que quiser.

-ndnotfound = esta é a opção que você está passando para a ferramenta

você pode mudar os parâmetros para atender às suas necessidades específicas.

    
por 01.03.2013 / 00:44
0

O SNMP (Nagios Net-Snmp) é muito bom, mas difícil de configurar corretamente. Se você quer um custo mínimo, considere usar um cron job - você escreve um script no bash, o cron o envia periodicamente.

Inatividade:

crie um arquivo, ex: list.txt, de diretórios e logfilenames como este, estes são exemplos de simulação. As colunas são caminho logfilename max_hours_inactive:

/var/log  syslog     9
/var/adm  message    12

#!/bin/bash
# inactive.sh
while read path fname mxhrs
do
   oops=$( /usr/bin/find $path -mtime +${mxhrs} -name $fname)
   [ $#oops -gt 0 ]  &&  echo "$fname inactive for $mxhrs" |/usr/bin/mailx -s "$fname warning"
done < /path/to/list.txt

Crie outro arquivo, list1.txt, com especificação de arquivo de arquivo de colunas e EXex de regex:

/path/to/mylfile.log   "(Warning|Fatal)"

#!/bin/bash
# error.sh
while read path regex
do
   /usr/bin/egrep -q "$regex" $path  &&
        echo "$path has error notification" |/usr/bin/mailx -s "$path warning"
done < /path/to/list1.txt

Use o crontab-e para entrar quando quiser que os trabalhos sejam executados ex: a cada 10 minutos nos dias úteis, a cada hora nos fins de semana

0,10,20,30,40,50 * * * 1-5 /path/to/error.sh >> /tmp/error.log.$(date +%Y%m%d) 2&>1
0 * * * 0,6  /path/to/error.sh >> /tmp/error.log.$(date +%Y%m%d) 2&>1
0,10,20,30,40,50 * * * 1-5 /path/to/inactive.sh >> /tmp/error.log.$(date +%Y%m%d) 2&>1
0 * * * 0,6  /path/to/inactive.sh >> /tmp/error.log.$(date +%Y%m%d) 2&>1
    
por 04.01.2013 / 06:04