Linux下实现监测tomcat是否宕机/停止并重新启动功能实现

Linux下实现监测tomcat是否宕机/停止并重新启动功能


文章目录

Linux下实现监测tomcat是否宕机/停止并重新启动功能 前言 一、安装crontab 1.确认crontab是否安装 2.安装crontab 3.使用crontab 4.将crontab加入至开机自启 二、编辑monitor.sh脚本 1.monitor.sh脚本模板 2.使用crontab来完成定时任务


前言

首先我们要知道实现该功能需要哪些准备工作


一、安装crontab

Linux上的crontab是一个定时任务的工具,可以帮助你实现定时循环执行某一个脚本的功能

1.确认crontab是否安装

输入命令行 crontab -l
如果报 “command not found” ,就说明该crontab服务没有安装 如果报 “no crontab for root” ,就说明已经安装crontab服务了, 不用再安装了

2.安装crontab

依次输入以下命令
yum install vixie-cron
yum install crontabs

3.使用crontab

说一下常用的几个命令
service crontab start 启动crontab服务
service crontab stop 停止crontab服务
service crontab reload 重启crontab服务
service crontab status 查看crontab服务的状态
crontab -e 编辑定时任务,这里给个模板,可以做一下修改:
*/1 * * * * /tmp/xxx/xxx.sh (这个代表每一分钟执行一次,后面的是脚本的路径,cron表达式可以去百度在线生成)

4.将crontab加入至开机自启

使用命令ntsysv,键盘上下移动选择,按空格选中或取消,按Tab可以切换光标到列表和确认取消上注意,这里如果有tomcat配置的自启在保存后会自动变为取消,所以保存后需要去再设置一下tomcat的自启,用命令chkconfig --add 脚本名称 来完成tomcat自启的配置

二、编辑monitor.sh脚本

1.monitor.sh脚本模板

代码如下(示例):

#!/bin/sh
#tomcat监控脚本,记录tomcat运行状况,并在系统出现异常的时候重启服务
# 获取线程ID,执行该命令,可以得到tomcat线程,grep -w用于执行单词搜索
Tomcat grep java |grep tomcat |grep -w 'DataExchange'|grep -v 'grep'|awk '{print $2}')
. /etc/profile #此行必不可少,若少了,tomcat无法自动重启
# tomcat启动的脚本文件,一般位于tomcat服务器bin目录下面
StartTomcat=/usr/tomcat/xxx/bin/startup.sh

# 项目的一个方法,该方法只要能够请求到,则返回成功
WebUrl=http://localhost:8080/xxx

#tomcatwork空间
TomcatCache=/usr/tomcat/xxx/work

# 日志输出地址
GetPageInfo=/dev/null
TomcatMonitorLog=/tmp/TomcatMonitor.log

#监控的代码
Monitor()
{
  #输出到日志文件,并将时间保存
  echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
  #查看tomcatID,如果存在,则进入处理逻辑,如果不存在,则重启tomcat
  if [ -n "$TomcatID" ];then
    #记录日志
    echo "[info]tomcat进程ID为:$TomcatID."
    # 请求项目,$WebUrl是相应的请求地址,该命令执行之后会得到相应的线程ID
    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]访问出错,状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"
        echo "[error]开始重启tomcat"
        #杀掉相应的进程
        #kill -9 $TomcatID  # 杀掉原tomcat进程
      for id in $TomcatID
        do
        kill -9 $id # 杀掉原tomcat进程
        echo "killed $id"
      done
        sleep 1
	#清理work空间
        rm -rf $TomcatCache # 清理tomcat缓存
	#重启
        $StartTomcat
        echo "[info] tomcat开始重启."
    fi
  else
    echo "[error]进程不存在!tomcat自动重启...$TomcatID"
    echo "[info]$StartTomcat,请稍候......"
    #rm -rf $TomcatCache
    $StartTomcat
  fi
  echo "------------------------------"
}
Monitor>>$TomcatMonitorLog

脚本是我整合了网上一些零散的脚本并修改的,如有不对欢迎指出,一起学习,一起进步~

2.使用crontab来完成定时任务

这里可以先执行一下脚本看看有没有作用,然后用上述的crontab -e的命令将脚本加入进去,然后执行service crontab reload,接着去看看日志输出,看看有没有完成功能


来源url
栏目