ubuntu下的tomcat監控腳本

前提

一、須要服務器中安裝sendemail以及mailutils插件,具體操做請轉度娘web

二、須要使用cron添加定時任務,我設置的是每三分鐘執行一次tomcat

*/3  *  *  *  *  sh /mnt/web/tomcat/monitor/monitor.sh >/dev/null 2>&1 &

三、執行腳本會出現發送太慢或發送失敗的狀況,這是由於郵件發送回對發件郵箱的郵箱名服務器進行解析,解決方法:修改 /etc/hosts,將郵箱服務器名映射到127.0.0.1,並重啓senmail服務器 service sendmail restart服務器

腳本內容

#!/bin/sh  

#. /etc/profile 

logPath=/mnt/web/tomcat/monitor/log/monitor`date '+%Y-%m-%d'`.log
#接收郵箱,多個用英文逗號隔開
mails=xxx@gmail.com

echo "">>$logPath
echo `date '+%Y-%m-%d %H:%M:%S'`>>$logPath

pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print $2}'`
sendMail=0
if [  -n "$pid" ]
then
{

   echo "已檢測到pid:$pid,繼續檢測頁面。。。">>$logPath
 #https://xxx.com/favicon.ico爲服務器的測試url,能夠根據項目隨便寫,只要不是404的就能夠。我這裏是指向的一個圖標
   check=`/usr/bin/wget -S --spider --tries=3 --timeout=10 https://xxx.com/favicon.ico 2>&1 | grep HTTP/1.1|awk '{print $2}'`
   echo "頁面檢測返回狀態碼:$check">>$logPath
   if [ $check -eq 200 ];then
        echo "tomcat狀態正常">>$logPath
   else
                sendMail = 1
        echo "tomcat狀態異常,準備重啓。。。">>$logPath
        echo "tomcat shutdown">>$logPath
        /mnt/web/tomcat/tomcat8/bin/shutdown.sh
        sleep 3
        pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print $2}'`
        if [ -n "$pid" ]
        then
         {
           sleep 1
           echo "kill tomcat:$pid">>$logPath
           kill -9 $pid
         }
        fi
        sleep 1
        echo "tomcat startup">>$logPath
        /mnt/web/tomcat/tomcat8/bin/startup.sh
    fi
 }
else
        sendMail = 1
    echo "未檢測到pid,開始重啓tomcat...">>$logPath
    /mnt/web/tomcat/tomcat8/bin/startup.sh
fi

#發送郵件
if [ $sendMail -eq 1  ]
then
{
    echo "開始發送郵件。sendTo:$mails"
   #root@host.com就是接收郵件時候顯示的發件人
    mail -s "Server Monitor Error" $mails < $logPath -A $logPath -a From:root@host.com
}
fi
相關文章
相關標籤/搜索