Linux中使用Crontab定時(shí)監(jiān)測(cè)維護(hù)Tomcat應(yīng)用程序的方法
監(jiān)測(cè)的應(yīng)用接口: 新聞接口、天氣接口
處理方法:應(yīng)用接口不可用時(shí)自動(dòng)重啟Tomcat,并發(fā)送告警郵件給相關(guān)人員
#!/bin/bash
#---------------------------------------------------------
# 功能說明:
# 監(jiān)控指定HTTP服務(wù)是否可用,如果不可用立即重啟Tomcat
#
# 使用說明:
# 1. 將此腳本放置在/home/opentsp/crontab/目錄下。
# 2. 修改腳本執(zhí)行權(quán)下為可執(zhí)行權(quán)限。
# 3. 添加到定時(shí)任務(wù)中,定時(shí)執(zhí)行時(shí)間(建議為20分鐘)
# 4. 修改郵件發(fā)送人員信息列表(當(dāng)服務(wù)重啟時(shí)發(fā)郵件給相關(guān)人員)
# - 周凌飛(2014-08-13)
#---------------------------------------------------------
export LC_ALL=zh_CN.UTF-8
#網(wǎng)站地址、參數(shù)
SERVER_NAME="趣駕云接口服務(wù)"
URL_2="http://127.0.0.1/get_rss_news?p=%7b%27chId%27:%27TIYU%27%7d"
KeyWorld_2='<title>'
URL_3="http://127.0.0.1/get_json_weather?p=%7blon:116.407617,lat:39.993956,date:1%7d"
KeyWorld_3='temperature'
#郵件發(fā)送列表
mail_ary=(
xxxxxxxxx@navinfo.com
xxxxxxxxx@navinfo.com
xxxxxxxxx@navinfo.com
)
#接口調(diào)用失敗的處理方法
function doFail(){
local ipinfo=$(ifconfig |sed -n '2p'|awk '{print substr($2,6)}');
# 發(fā)送郵件
for _v in ${mail_ary[*]} ; do
echo "[$SERVER_NAME 異常] - [$(date -d "0 min" +"%Y-%m-%d %H:%M:%S")] - [請(qǐng)求地址: $1] - [請(qǐng)求返回碼: $2]" | mail -s ${ipinfo}服務(wù)異常 ${_v}
done
# 寫入日志
echo "[ERROR] - [$(date -d "0 min" +"%Y-%m-%d %H:%M:%S")] - 返回碼[$2] - 重啟Tomcat服務(wù)" >> detect-http.log
# 關(guān)閉Tomcat
sh /home/opentsp/crontab/ibr-shutdown.sh
exit;
}
#請(qǐng)求超時(shí)時(shí)間設(shè)置
TIME_OUT=40
function doCheck(){
local URL_X=$1;
local KeyWorld_X=$2;
HTTP_STATUS_CODE=`curl -m $TIME_OUT -o /dev/null -s -w "%{http_code}" "${URL_X}"`
if [ $HTTP_STATUS_CODE != 200 ];then
#請(qǐng)求失敗
echo "-> Fail - 返回碼${HTTP_STATUS_CODE}";
doFail ${URL_X} ${HTTP_STATUS_CODE};
else
#服務(wù)器正常響應(yīng),檢查返回內(nèi)容
if curl -m ${TIME_OUT} -s ${URL_X} | grep -q ${KeyWorld_X};then
echo "-> SUCCESS";
else
echo "->> Fail";
# 返回內(nèi)容錯(cuò)誤處理
doFail ${URL_X} ${HTTP_STATUS_CODE};
fi
fi
}
#
#檢查 - 新聞
doCheck ${URL_2} ${KeyWorld_2}
#檢查 - 天氣
doCheck ${URL_3} ${KeyWorld_3}
將以上代碼放入到Linux的定時(shí)任務(wù)中即可,定時(shí)任務(wù)時(shí)間建議為20分鐘一次。
相關(guān)文章
ubuntu中修改grub的啟動(dòng)時(shí)間生成
這篇文章主要介紹了ubuntu中修改grub的啟動(dòng)時(shí)間生成,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Linux低電量自動(dòng)關(guān)機(jī)的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Linux低電量自動(dòng)關(guān)機(jī)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
Ubuntu LTS服務(wù)器部署Jenkins詳細(xì)介紹
這篇文章主要介紹了Ubuntu LTS服務(wù)器部署Jenkins詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-03-03
解決VMware安裝linux系統(tǒng)啟動(dòng)后黑屏問題
這篇文章主要介紹了解決VMware安裝linux系統(tǒng)啟動(dòng)后黑屏問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
Linux進(jìn)程間通信(IPC)的幾種方式總結(jié)
進(jìn)程間通信是指至少兩個(gè)進(jìn)程或線程間傳送數(shù)據(jù)或信號(hào)的一些技術(shù)或方法,每個(gè)進(jìn)程都有自己的一部分獨(dú)立的系統(tǒng)資源,彼此是隔離的,為了能使不同的進(jìn)程互相訪問資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信,本文就給大家介紹幾種Linux進(jìn)程間通信的方式,需要的朋友可以參考下2023-09-09
CentOS8出現(xiàn)-bash:亂碼問題及解決方法
這篇文章主要介紹了CentOS8出現(xiàn)-bash:亂碼問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
centos 修改ssh默認(rèn)端口號(hào)的方法示例
這篇文章主要介紹了centos 修改ssh默認(rèn)端口號(hào)的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02

