O Monit pode ser configurado para nunca monitorar / expirar um serviço?

7

O Monit parece desistir de reiniciar um serviço se ele falhar algumas vezes e não o monitora. Não consigo encontrar nada na documentação sobre as especificidades de quando ou porquê.

A configuração My Monit seria configurada da seguinte forma:

set daemon 10
set logfile /var/log/monit.log
set statefile /var/lib/monit/monit.state
set alert [email protected] not { nonexist, action, instance }
include /etc/monit/conf.d/*

E este é um exemplo do conjunto de regras Monit que estou usando:

check process myservice
  with pidfile /var/run/myservice/myservice.pid
  start program = "/home/myservice/current/start-myservice.sh"
    as uid myservice and gid myservice
  stop program = "/home/myservice/current/stop-myservice.sh"
    as uid myservice and gid myservice
  mode active

No meu ambiente, quero que ele continue tentando em seus intervalos de pesquisa indefinidamente. Existe alguma maneira de configurar o monit para nunca interromper o monitoramento de um serviço, mesmo que ele não seja iniciado com êxito?

    
por Joe Shaw 20.09.2011 / 19:40

4 respostas

5

Eu simplesmente usaria uma tarefa cron que executaria monit start servicename nos intervalos desejados. Claro, você pode usar grupos para um controle mais refinado.

    
por 29.02.2012 / 10:36
2

Eu tive exatamente o mesmo problema em que, apesar de reiniciar o monit, ele se recusaria a monitorar após o tempo limite. Finalmente descobri que tinha que deletar o arquivo de estado monit ( /var/.monit.state ) e reiniciar o monitor para fazer com que ele monitorasse todos os programas novamente.

    
por 15.11.2011 / 21:10
2

Depois de fazer algumas pesquisas, o Monit armazena os dados de monitoramento do sistema em um arquivo de "estado". E esse arquivo de "estado" controla quais serviços estão sendo monitorados / não monitorados.

Então, enquanto isso é um pouco "força bruta" -ish, definitivamente funciona. Se um serviço se tornar "não monitorado" devido a algo como um tempo limite, basta remover o arquivo de estado Monit do sistema da seguinte forma:

sudo rm /var/lib/monit/state

E, em seguida, reinicie o Monit assim e tudo deve ser bom:

sudo service monit restart
    
por 01.10.2015 / 17:35
1

Com base no seu snippet de código do Monit, parece que você precisa modificar ou adicionar instruções de ciclo à sua sub-rotina do processo. Veja a documentação relevante aqui e aqui .

Parece que você pode querer configurar seus testes de serviço para executar todos os ciclos sem instruções de timeout. Veja também a sua página inicial no link . Check the page for the relevant service and look at do campo "Existência". Seu padrão deve ser semelhante:

If doesn't exist 1 times within 1 cycle(s) then restart else if succeeded 1 times within 1 cycle(s) then alert
    
por 20.09.2011 / 20:35