Seorang anggota tim saya datang dengan solusi yang agak cerdik yang memungkinkan monit untuk sering memeriksa (setiap menit) , tetapi begitu telah mencoba untuk me-restart layanan (yang memakan waktu ~ 10 menit) itu akan menunggu masa tenggang yang ditentukan sebelum mencoba untuk memulai lagi.
Ini mencegah menunggu terlalu lama di antara pemeriksaan, yang dikombinasikan dengan awal yang lambat adalah dampak yang jauh lebih besar bagi pelanggan. Ini bekerja dengan menggunakan skrip perantara yang bertindak sebagai flag untuk menunjukkan monit sudah mengambil tindakan dari kegagalan terakhir.
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'"
Jika bambu (aplikasi web mulai lambat) turun selama 3 menit berturut-turut, mulai ulang, TETAPI hanya jika skrip mulai ulang belum berjalan.
Script yang dipanggil memiliki sleep yang ditentukan yang menunggu LEBIH LAMA kemudian waktu mulai paling lambat untuk layanan (dalam kasus kami, kami berharap untuk menyelesaikan dalam ~ 10, jadi kami tidur selama 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"