Член моєї команди придумав досить розумне рішення, яке дозволяє монітору часто перевіряти (щохвилини) , але після того, як він спробує перезапустити службу (що займає ~ 10 хвилин), він зачекає визначений пільговий період, перш ніж спробувати почати знову.
Це заважає чекати занадто довго між чеками, що в поєднанні з повільним початком набагато більший вплив на клієнтів. Він працює, використовуючи проміжний скрипт, який діє як прапор, щоб вказати, що monit вже вживає дій з останньої відмови.
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'"
Якщо бамбук (повільний запуск веб-програми) не працює 3 хвилини поспіль, перезапустіть, АЛЕ лише якщо сценарій перезапуску ще не працює.
Сценарій, що викликається, має вказаний сон, який очікує ДІЛЬШЕ, а потім найповільніший час початку служби (у нашому випадку ми очікуємо закінчити через ~ 10, тому ми спимо протягом 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"