Một thành viên trong nhóm của tôi đã đưa ra một giải pháp khá thông minh cho phép monit kiểm tra thường xuyên (mỗi phút) , nhưng một khi nó đã cố gắng khởi động lại dịch vụ (mất ~ 10 phút), nó sẽ đợi một khoảng thời gian ân hạn được chỉ định trước khi thử bắt đầu lần nữa.
Điều này ngăn việc chờ đợi quá lâu giữa các lần kiểm tra, kết hợp với khởi động chậm là tác động lớn hơn nhiều đối với khách hàng. Nó hoạt động bằng cách sử dụng một tập lệnh trung gian hoạt động như cờ để biểu thị monit đã thực hiện hành động từ thất bại cuối cùng.
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'"
Nếu tre (ứng dụng web khởi động chậm) ngừng hoạt động trong 3 phút liên tiếp, hãy khởi động lại, NHƯNG chỉ khi tập lệnh khởi động lại chưa chạy.
Tập lệnh được gọi có một giấc ngủ được chỉ định chờ DÀI sau đó thời gian bắt đầu chậm nhất cho dịch vụ (trong trường hợp của chúng tôi, chúng tôi dự kiến sẽ hoàn thành trong ~ 10, vì vậy chúng tôi ngủ trong 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"