monitorando a taxa de erros com monit

2

Existe uma maneira de dizer ao monit para me alertar se houver mais de X erros (por exemplo, linhas correspondentes a "ERROR") em um arquivo de log em um determinado período de tempo?

Meu caso de uso seria: erros às vezes aparecem no meu arquivo de log (ou seja, erros de rede, soluço de servidor remoto etc) e eles não são críticos. Mas eu gostaria de ser notificado se houver um pico porque isso exigiria uma investigação rápida (por exemplo, implantar com falha, bug recém-introduzido).

Idealmente, estou pensando em algo como

check file myapplog with path /var/myapp.log every 2 cycles
   if lines matching "ERR" > 10% then alert

Acho que posso conseguir isso escrevendo um script externo e fazendo algo como

check program cer with path /usr/local/bin/checkerrorrate.sh 
   if status != 0 then alert

mas eu estou querendo saber se existe uma opção melhor.

    
por riffraff 25.02.2014 / 11:31

1 resposta

0

Não acredito que Monit seja a melhor opção para avaliar a frequência dessas mensagens de erro. As limitações das rotinas de teste de conteúdo de arquivo podem tornar isso complicado sem ir para uma solução externa. Consulte: link

Especificamente:

  • O conteúdo está sendo verificado apenas a cada ciclo. Se o conteúdo estiver sendo adicionado e removido entre duas verificações, ele não será notado.

  • Na inicialização, a posição de leitura é definida no final do arquivo e o Monit continua a digitalizar até o final do arquivo em cada ciclo. Mas se o tamanho do arquivo diminuir ou a mudança de inode, a posição de leitura é definida para o início do arquivo.

  • Somente as linhas que terminam com um caractere de nova linha são inspecionadas. Assim, as linhas estão sendo ignoradas até que tenham sido concluídas com esse caractere. Observe também que apenas os primeiros 511 caracteres de uma linha são inspecionados.

Em vez disso, eu pesquisaria o (s) servidor (es) remoto (s) ou os serviços relacionados para verificar a integridade.

    
por 25.02.2014 / 14:25