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.
check host bamboo with address bamboo.mysite.com
if failed
port 443 type tcpSSL protocol http
and status = 200
and request /about.action
for 3 cycles
then exec "/bin/bash -c 'ps -ef | grep -v "$$" | grep -v "grep" | grep restartBamboo.sh >/dev/null 2>&1; if [ $? -ne 0 ]; then /opt/monit/scripts/restartBamboo.sh; fi'"
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)
#!/bin/bash
echo "Retarting bambo by calling init.d"
/etc/init.d/bamboo stop
echo "Stopped completed, calling start"
/etc/init.d/bamboo start
echo "Done restarting bamboo, but it will run in background for sometime before available so, we are sleeping for 15 minutes"
sleep 900
echo "done sleeping"