linux上tomcat监控monitor,自动重启

1、监控脚本代码

#!/bin/bash
# 获取tomcat进程ID  /home/deploy/apache-tomcat-8.5.14
TomcatID=$(ps -ef |grep tomcat |grep -w 'apache-tomcat-8.5.14'|grep -v 'grep'|awk '{print $2}')
# tomcat启动程序(这里注意tomcat实际安装的路径)
StartTomcat=/home/deploy/tomcat-serv.sh
# 定义要监控的页面地址
WebUrl=http://localhost:8080/aicrm/monitor/is_alive/
# 日志输出
TomcatMonitorLog=/home/deploy/logs/TomcatMonitor.log

Monitor()
{
  echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
  if [[ $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进程
        #sleep 3
        #rm -rf $TomcatCache # 清理tomcat缓存
        #$StartTomcat
    fi
  else
    echo "[error]tomcat进程不存在!tomcat开始自动重启..."
    echo "[info]$StartTomcat,请稍候......"
    #rm -rf $TomcatCache
    $StartTomcat
  fi
  echo "------------------------------"
}
Monitor>>$TomcatMonitorLog

2、tomcat启动脚本 tomcat-serv.sh

#!/bin/bash
# 获取tomcat进程ID  /home/deploy/apache-tomcat-8.5.14
TomcatID=$(ps -ef |grep tomcat |grep -w 'apache-tomcat-8.5.14'|grep -v 'grep'|awk '{print $2}')


if [[ $TomcatID ]];then # 这里判断TOMCAT进程是否存在
    echo "[info]当前tomcat进程ID为:$TomcatID,不再新启动tomcat..."
else
        nohup /usr/bin/java -server -Xms4096m -Xmx4096m -Xmn1536m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/deploy/apache-tomcat-8.5.14/logs/gc.log  -XX:-OmitStackTraceInFastThrow -XX:ErrorFile=/home/deploy/apache-tomcat-8.5.14/logs/hs_err_%p.log -Dspring.profiles.active=prod -Djava.util.logging.config.file=/home/deploy/apache-tomcat-8.5.14/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager  -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8 -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /home/deploy/apache-tomcat-8.5.14/bin/bootstrap.jar:/home/deploy/apache-tomcat-8.5.14/bin/tomcat-juli.jar -Dcatalina.base=/home/deploy/apache-tomcat-8.5.14 -Dcatalina.home=/home/deploy/apache-tomcat-8.5.14 -Djava.io.tmpdir=/home/deploy/apache-tomcat-8.5.14/temp org.apache.catalina.startup.Bootstrap start > /dev/null 2>&1 &
        echo "[info]当前tomcat进程ID为:空,新启动tomcat..."
fi
    echo "------------------------------"

3、crontab 定时任务

sudo crontab -udeploy -e

crontab.log:

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
#每5分钟执行一次 tomcatmonitor.sh
*/5 * * * *  /home/deploy/tomcatmonitor.sh  >/home/deploy/cronlog.log 2>&1

4、关于crontabhttp://www.jb51.net/LINUXjishu/19905.html

猜你喜欢

转载自my.oschina.net/u/3670641/blog/1810175