Monit: como você para que o monit execute a instrução exec sempre que o teste falhar?

2

Como você impede que o monitor execute a instrução exec toda vez que o teste falha? A declaração no meu monitrc é:

check filesystem tmpfs with path /var                                           
    if space > 90% then exec "/usr/bin/logger -p daemon.crit 'MAJOR: space test'"

Isso parece estranho porque alguém fez uma pergunta em que ele estava fazendo um alerta e tinha o comportamento que eu queria. Estou pronto para começar a bloquear as caixas de linux.

Editar: aqui está o caso oposto Repetir alertas de monito

É porque ele está usando alerta não exec?

    
por Terminal 11.03.2014 / 20:03

3 respostas

4

Eu tive que lidar com um problema semelhante algumas vezes atrás.

O fato é que monit não é capaz de fazer isso, até onde eu sei.

Com monit , você pode lidar com as diretivas X times e / ou Y cycles , mas mais ou menos rapidamente a ação exec será acionada mais de uma vez, dependendo do tempo gasto para corrigir o problema. / p>

Então, finalmente, decidi escrever meu próprio script de verificação para lidar com toda a lógica, com base em sinalizadores.

Eu vou compartilhar isso com você, então você aceita ou não, depende de você.

Primeiro: Escreva o script para monitorar o uso do FS, digamos /root/check_fsspace.sh :

#!/bin/sh

myFS=/var
myTreshold=90
flagFile=/tmp/flag

spaceused=$(df -h | grep "$myFS" | tr -s " " | cut -d" " -f5 | cut -d"%" -f1)

if [ $spaceused -gt $myTreshold ]; then
  if [ ! -f $flagFile ]; then
     touch $flagFile
     exit 1
  else
     exit 0
  fi
fi

if [ $spaceused -le $myTreshold ]; then
   rm -f $flagFile
   exit 0
fi

Aqui eu suponho que você pode entender o roteiro. Se não, diga-me, vou explicar isso.

Segundo: defina a sua definição de serviço monit :

check program check_fs with path "/root/check_fsspace.sh"
  if status != 0 then exec "/usr/bin/logger -p daemon.crit 'MAJOR: space test'"
    
por 12.03.2014 / 00:43
4

O comportamento da ação 'exec' (com a repetição de cada vez) mudou da versão 5.16 do Monit

link

The exec action is now executed only once on state change, the same way as the alert action.

    
por 12.05.2016 / 10:37
0

Você controla isso com a diretiva cycles . Com que frequência você gostaria que isso fosse registrado?

Supondo que um intervalo de verificação do daemon Monit de 60 segundos, você pode dizer algo como "se isso falhar para o número X de ciclos, execute o script".

Mas o Monit é simples ... Ele alertará sobre a falha toda vez que você atingir esse limite de disco. Isso é por design. Se você está atingindo o limite com frequência suficiente para que essa ação de registro seja irritante, tente alterar o limite.

Monit registrará seu status a cada ciclo no seu registro de mensagens.

Mar 12 00:07:06 yo-mama monit[8577]: 'ppro' space usage 92.4% matches resource limit [space usage>85.0%] 
Mar 12 00:08:06 yo-mama monit[8577]: 'ppro' space usage 92.4% matches resource limit [space usage>85.0%] 
Mar 12 00:09:06 yo-mama monit[8577]: 'ppro' space usage 92.4% matches resource limit [space usage>85.0%] 
Mar 12 00:09:07 yo-mama monit[8577]: 'ppro' space usage 92.4% matches resource limit [space usage>85.0%] 

Ele alertará cada vez que o limite for ultrapassado:

Resource limit matched Service ppro

    Date:        Wed, 12 Mar 2014 00:09:07
    Action:      alert
    Host:        yo-mama
    Description: space usage 92.4% matches resource limit [space usage>85.0%]

Your faithful employee,
Monit
    
por 12.03.2014 / 08:13

Tags