Monit não está reiniciando processo

1

Eu tenho monit para monitorar um processo, mas ele não percebe que está inativo. Minha configuração de monit é esta:

 check process xxx with pidfile /var/run/xxx.pid
 group yyy
 start program = "/etc/init.d/xxx start"
 stop program = "/etc/init.d/xxx stop"
 if failed host 127.0.0.1 port 9999  then restart
 if 5 restarts within 5 cycles then timeout

O problema é que o arquivo PID ainda existe mesmo se meu processo tiver falhado. Então ... PID existe mas a porta 9999 no host local deve falhar. Então ... é esperado que monit não reinicie este processo? Deve-se excluir o arquivo pid com certeza? Não é possível fazer esse tipo de OR ?

Agradecemos antecipadamente

    
por Mariano Martinez Peck 22.01.2014 / 16:29

1 resposta

5

Corrija-me se estiver errado:

  • se o programa trava, o arquivo PID permanece, mas a porta 9999 está fechada
  • se o programa parar de forma limpa, o arquivo PID será removido e a porta 9999 será fechada

O comportamento comum é sobre a porta 9999. Você poderia monitorar isso usando algo assim:

check host 127.0.0.1 with address 127.0.0.1
  start program = "/etc/init.d/xxx restart"
  stop program = "/etc/init.d/xxx stop"
  if failed port 9999 then restart

O acima deve ser suficiente para cobrir todos os casos, mas você pode adicioná-lo como uma declaração adicional à sua existente (que será o tipo de OR do qual você está falando).

Dê uma olhada no documento sobre o host de verificação .

PS: Eu acho, em relação ao doc (a amostra sobre o Apache) , que a configuração que você tem deve ser capaz de reinicie seu processo se a porta 9999 não estiver acessível, mesmo que o arquivo PID ainda exista. Meu palpite é que a porta 9999 não está fechada, ou a porta 9999 não está escutando em 127.0.0.1 (por favor, verifique todos usando netstat ).

Então, na sua configuração, tente substituir a linha do monitor de porta por esta:

if failed port 9999 then restart (removendo host 127.0.0.1 ).

    
por 22.01.2014 / 20:12