Ein Mitglied meines Teams hat eine ziemlich clevere Lösung gefunden, mit der die Überwachung häufig (jede Minute) überprüft werden kann. Wenn jedoch versucht wurde, den Dienst neu zu starten (dies dauert ca. 10 Minuten), wartet die Überwachung eine bestimmte Frist, bevor sie gestartet wird nochmal.
Dies verhindert, dass zu lange zwischen den Überprüfungen gewartet wird, was in Verbindung mit einem langsamen Start für die Kunden eine viel größere Auswirkung hat. Es funktioniert mithilfe eines Zwischenskripts, das als Flag fungiert, um anzuzeigen, dass die Überwachung bereits nach dem letzten Fehler aktiv ist.
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'"
Wenn bamboo (langsam startende Webanwendung) 3 Minuten hintereinander nicht funktioniert, starten Sie neu, ABER nur, wenn noch kein Neustart-Skript ausgeführt wird.
Das aufgerufene Skript hat einen festgelegten Ruhezustand, der auf LÄNGER wartet, dann auf die langsamste Startzeit für den Dienst (in unserem Fall erwarten wir, in ~ 10 zu enden, sodass wir für 15 schlafen).
#!/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"