【shell脚本】自动监控tomcat服务===autoCheck.sh和发送告警邮件脚本auto_monitor_service.sh

自动监控tomcat服务,当tomcat服务挂掉时自动重启

一、脚本内容

[root@localhost ]# cat /root/autoCheck.sh 
#!/bin/bash
startTomcat=/usr/local/tomcat-7/bin/startup.sh
tomcatLog=/tmp/tomcatLog
tomcatID=`ps -ef | grep tomcat-7 | grep -w 'tomcat-7' | grep -v 'grep' | wc -l`
Monitor()
{
  #while true;do
  #tomcatID=`ps -ef | grep tomcat-7 | grep -w 'tomcat-7' | grep -v 'grep' | wc -l`
  echo "[info] 开始监控tomcat...[$(date +'%F %H:%M:%S')]"
  if [ $tomcatID -lt 1 ];then
    echo "[error] tomcat进程不存在!tomcat开始自动重启..."
    echo "[info] $startTomcat,请稍候..."
    sleep 3
    $startTomcat
    echo "[info] 服务启动成功..."
  fi
  echo "======================================================"
  #sleep 1
  #done
}
Monitor >> $tomcatLog

分析:

  1)先定义tomcat服务启动目录startTomcat

  2)定义日志输出目录tomcatLog

  3)查询的tomcat进程号,通过wc -l统计是否存在该进程号,存在则大于1,不存在则小于1

  4)判断是否存在tomcat服务进程,小于1则服务不存在,睡眠3秒重启tomcat服务,并将启动信息输出到日志文件中

二、设置定时执行任务

设置为每一分钟执行一次监控脚本

[root@localhost ]# crontab -l
*/1 * * * * /root/autoCheck.sh

 

检查服务并发送告警邮件

[root@rhel8 shell]# cat auto_monitor_service.sh 
#!/bin/bash
# auto monitor server
# by author tanbaobao 2020/06/12

echo -e  "\033[31m \033[1m"
EMAIL="email.txt"
DATE=`date`
NETWORK_NAME=ens160

cat <<EOF
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++ welcom to use auto monitor system +++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EOF

if [ -z $1 ];then
    echo -e "\033[32mUsage: { sh $0 nginx | mysql | server_list.txt}\033[0m"
    echo
    exit
fi

# if [ ! -f $EMAIL ];then
#    touch $EMAIL
# else
#    rm -rf $EMAIL
#    touch $EMAIL
# fi

sleep 2
M_IPADDR=`ifconfig $NETWORK_NAME|grep -w "inet"|awk '{print $2}'`
if [ -f "$1" -a "$1" == "server_list.txt" ];then
    for i in `cat server_list.txt|grep -v "#"`
    do
        count=`ps -ef | grep $i|grep -v "grep"|grep -v "auto_monitor_service"|wc -l`
        if [ $count -eq 0 ];then        
cat >$EMAIL <<EOF
***************** Email Server Info******************
通知类型:故障
服务:$i
主机:$M_IPADDR
状态:警告
日期/时间:$DATE
额外信息:
CRITICAL - $i Server Connection Refused,Please Check.
*****************************************************
EOF
            dos2unix $EMAIL
            echo -e "\033[32mThe Monitor $i Warning,Please Check.\033[0m"
            mail -s "$M_IPADDR $i Warning" qq邮箱@qq.com < $EMAIL >>/dev/null 2>&1
        else    
            echo -e "\033[32mThe Monitor $i Server 200 OK!\033[0m"
        fi
        echo -e "\n\033[32m------------------------------------------------------------\033[1m"
        echo "Done."
    done
else
    count=`ps -ef | grep $1|grep -v "grep"|grep -v "auto_monitor_service"|wc -l`
    if [ $count -eq 0 ];then
cat >$EMAIL <<EOF
***************** Email Server Info******************
通知类型:故障
服务:$1
主机:$M_IPADDR
状态:警告
日期/时间:$DATE
额外信息:
CRITICAL - $1 Server Connection Refused,Please Check.
*****************************************************
EOF
        dos2unix $EMAIL
        echo -e "\033[32mThe Monitor $1 Warning,Please Check.\033[0m"
        mail -s "$M_IPADDR $1 Warning" qq邮箱@qq.com < $EMAIL >>/dev/null 2>&1    
    else
        echo -e "\033[32mThe Monitor $1 Server 200 OK!\033[0m"
    fi
    echo -e "\n\033[32m------------------------------------------------------------\033[1m"
    echo "Done."
fi

 

posted @ 2019-09-30 09:20  HeiDi_BoKe  阅读(502)  评论(0编辑  收藏  举报