Estou tentando iniciar um programa (Resque), mas leva um pouco de tempo até que um pidfile seja gravado. Portanto, acho que o Monit acha que o programa não foi iniciado e inicia mais um ou dois programas antes que o pidfile do primeiro seja gravado.
Como adiar o tempo que o Monit verifica novamente, apenas para este processo? Ou devo resolver isso de outra maneira?
Respostas:
Como adiar o tempo que o Monit verifica novamente, apenas para este processo?
O que você está tentando alcançar pode ser feito através do recurso " SERVICE POLL TIME " do monit
A documentação do Monit diz
Um dos métodos para personalizar a pesquisa de serviço é
TODOS [número] CICLOS
Exemplo:
Ou devo resolver isso de outra maneira?
Eu também fiz uma tentativa inicial de monitorar trabalhos de resque com o monit porque o monit é um daemon muito leve, mas eventualmente resolvido com o DEUS. Eu sei, eu sei que DEUS tem mais recursos em comparação com o monit, mas em caso de resque achamos que é uma boa combinação.
fonte
Você pode verificar um serviço específico em um intervalo diferente do padrão ...
Consulte SERVICE POLL TIME na documentação da Monit.
Um exemplo para o seu programa Resque seria verificar um número diferente de ciclos:
ou da seção de exemplos:
ou você pode aproveitar as verificações no estilo cron.
ou se você estiver tendo uma inicialização lenta, poderá estender o tempo limite no comando service start:
fonte
with timeout 90 seconds
era exatamente o que eu queria. Obrigado.Você também pode verificar se algo falhou por X vezes seguidas:
Ou por X vezes nas pesquisas Y:
Ou ambos:
( daqui )
fonte
Um membro da minha equipe encontrou uma solução bastante inteligente que permite que o monit verifique com freqüência (a cada minuto) , mas depois de tentar reiniciar o serviço (que leva aproximadamente 10 minutos), ele aguardará um período de carência especificado antes de tentar iniciar novamente.
Isso evita esperar muito tempo entre as verificações, o que combinado com o início lento é um impacto muito maior para os clientes. Ele funciona usando um script intermediário que atua como sinalizador para indicar que o monit já está agindo desde a última falha.
Se o bambu (aplicativo da web de inicialização lenta) ficar inativo por 3 minutos seguidos, reinicie, MAS apenas se um script de reinicialização ainda não estiver em execução.
O script chamado tem uma suspensão especificada que aguarda por mais tempo que a hora de início mais lenta do serviço (no nosso caso, esperamos terminar em ~ 10, portanto, dormimos por 15)
fonte
A versão atual do Monit (5.16) suporta um tempo limite para os scripts de início com a sintaxe:
Os documentos afirmam:
Qual é o que o valor "timeout" fará.
fonte
timeout
deve se aplicar a ambas as partidas e reinicializações. Tanto quanto eu entendo, isso atrasa antes que o Monit verifique que: a) está em execução, b) o arquivo PID esperado foi criado ec) um processo com o PID esperado está em execução no momento. Eu tive alguns problemas para fazê-lo funcionar onde o aplicativo especificado era apenas um script que bifurcava o processo real e depois retornava sem saber o que estava acontecendo com o processo. Fazê-lo funcionar nesse caso foi uma dor.START DELAY
.