shell腳本監控tomcat狀態以及自動清理tomcat日誌

監控用的

#!/bin/bash
# 
#*/2 * * * *   sh /home/apache-tomcat-7.0.61/bin/detectionTMT.sh




# 獲取tomcat進程ID(其中[grep -w 'tomcat']代碼中的tomcat需要替換爲你的tomcat文件夾名)
TomcatID=$(ps -ef | grep "org.apache.catalina.startup.Bootstrap" | grep -v 'grep' | awk '{print $2}')

# tomcat啓動程序(這裏注意tomcat實際安裝的路徑)
StartTomcat=./startup.sh

#定義要監控的頁面地址
WebUrl=http://192.169.160.19:8088/mp_topics/jsp/100/to_100.jsp

#日誌輸出
GetPageInfo=/home/apache-tomcat-7.0.61/logs/TomcatMonitor.Info
TomcatMonitorLog=/home/apache-tomcat-7.0.61/logs/TomcatMonitor.log

Monitor()
{
echo "[info]開始監控tomcat...[$(date +'%F %H:%M:%S')]"
if [ -n "$TomcatID" ];then #這裏判斷Tomcat進程是否存在
        echo "[info]當前tomcat進程ID爲:$TomcatID,繼續檢測頁面..."
        # 檢測是否啓動成功(成功的話頁面會返回狀態"200")
        TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})
                if [ $TomcatServiceCode -eq 200 ];then
                                echo "[info]頁面返回碼爲$TomcatServiceCode,tomcat啓動成功,測試頁面正常"
                        else
                                echo "[error]tomcat頁面出錯,請注意...狀態碼爲$TomcatServiceCode,錯誤日誌已輸出到$GetPageInfo"
                                echo "[error]頁面訪問出錯,開始重啓tomcat"
                                kill -9 $TomcatID # 殺掉原tomcat進程
                                echo "殺掉原tomcat進程$TomcatID"
                                sleep 3
                        cd /home/apache-tomcat-7.0.61/bin/ &&  $StartTomcat
                fi
else
        echo "[error]tomcat進程不存在!tomcat開始自動重啓..."
        echo "[info]$StartTomcat,請稍候..."
         cd /home/apache-tomcat-7.0.61/bin/ && $StartTomcat
fi
echo "--------------------------"
}
Monitor>>$TomcatMonitorLog

清理日誌用的


datess=$(date "+%Y-%m-%d   %H:%M:%S")
echo  "-------------------------------------$datess--------------------------------------"    >>  /home/apache-tomcat-7.0.88/logs/cleanlogrecording.txt


cleanLog () {
#3天前的日期
today=$(date +%Y%m%d --date="-3 day")
#遍歷這個數組
for file in $files
do
#截取文件的後綴時間
#date2="${file##*.}"
#獲取該文件的創建時間
datatime=$(stat $file|grep Modify|awk '{print $2}'|sed s/-//g)
#如果這個文件的時間小於三天前的時間則刪除這個文件
        if [ $datatime -lt $today ]; then
                rm -rf  $file
        fi
done
}

#需要清除的日誌路徑   下方類似
files=/home/apache-tomcat-7.0.88/logs/catalina.*.log

cleanLog $files

files=/home/apache-tomcat-7.0.88/logs/host-manager.*.log

cleanLog $files

files=/home/apache-tomcat-7.0.88/logs/localhost.*.log

cleanLog $files

files=/home/apache-tomcat-7.0.88/logs/localhost_access_log.*.txt

cleanLog $files

files=/home/apache-tomcat-7.0.88/logs/manager.*.log

cleanLog $files

#files=/home/logging/hs/bubble/spring.log.*
#cleanLog $files


cat /dev/null  >  /home/apache-tomcat-7.0.88/logs/catalina.out


配合linux的crontab定時任務  即可達到效果

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章