monit não executa o script depois da verificação de "se não existir"

1

Estou tendo problemas com o monit. Eu tenho o monitoramento de configuração com monit. No entanto, estou tendo problemas com uma verificação do processo em execução. Se o processo não estiver em execução, eu quero executar um script específico que irá criar um alerta de pagerduty.

Meu arquivo Monit é assim:

check process "myapp" matching "myapp"
  start program = "/usr/local/myapp start"
  stop program  = "/usr/local/myapp stop"
  if does not exist then exec "/bin/bash pagerduty_script 'MyApp Down' trigger"

O pagerduty_script é apenas um wrapper que aceita dois argumentos "string event" e ação trigger

O script funciona. Eu testei no terminal e corre bem. eventos são realmente criados em pagerduty. No entanto, parece que o monit não está sendo executado, mesmo que nenhum processo esteja em execução:

ps -ef | grep myapp
vagrant  23950 23136  0 17:40 pts/0    00:00:00 grep --color=auto myapp

status do sudo monit:

Process 'myapp'
  status                            Execution failed
  monitoring status                 Monitored
  data collected                    Tue, 16 Sep 2014 17:40:11

Eu não entendo porque funciona no console, mas monit não gera o evento. Qualquer ajuda seria muito apreciada!

    
por roloenusa 16.09.2014 / 19:43

1 resposta

0

Eu enfrentei um problema semelhante e descobri que o script pagerduty cria um arquivo temporário para o acionador e, se esse arquivo for modificado há menos de 4 horas, ele não é acionado novamente.

Pode ser que, quando você executou a partir do console, você já tenha criado um arquivo temporário. Você pode verificar isso excluindo o arquivo temporário antes que o comando monit ative um alerta.

A outra opção é usar um tipo de evento único diferente para testá-lo.

    
por 20.04.2015 / 10:35

Tags