檢測邏輯:連續3次訪問tomcat提供的接口,若3次響應碼都不為200,則自動重啟tomcat
腳本內容:
#!/bin/bash
source /etc/profile
IP=10.78.1.183
PORT=8114
TOMCAT_DIR=/soft/tomcat_8114
#定義發送郵件函數
function send_mail(){
maillist=(
linuxidc@linuxidc.com
)
DATE=`date +’%F %T’`
SUBJECT=”${IP}的${PORT}端口發生故障,已自動重啟!”
CONTENT=”時間:${DATE}n主機:${IP}n事件:${PORT}端口發生重啟”
for mail in ${maillist[*]};do
echo -e “${CONTENT}” | mail -s “${SUBJECT}” $mail
done
}
#對接口訪問3次
declare -i NUM=0
for i in `seq 1 3`;do
CODE=$(/usr/bin/curl -I -m 10 -o /dev/null -s -w %{http_code}”n” http://${IP}:${PORT})
if [ $CODE == “000” ];then
((NUM++))
fi
sleep 3
done
#根據NUM的值來確定是否重啟tomcat,NUM=3時進行重啟
if [ $NUM == 3 ];then
IS_LIVING=`jps -m -l -v | grep “${PORT}” | wc -l`
if [ ${IS_LIVING} -eq 1 ];then
PID=`jps -m -l -v | grep “${PORT}” | awk ‘{print $1}’`
kill -9 $PID
${TOMCAT_DIR}/bin/startup.sh
elif [ ${IS_LIVING} -eq 0 ];then
${TOMCAT_DIR}/bin/startup.sh
fi
send_mail
fi
任務計劃:每5分鐘檢測一次
*/5 * * * * /server/scripts/tomcat/check_8114.sh &> /dev/null