使用shell监控指定的页面是否正常访问,我们可以采取请求某个接口的方式,如果请求错误到达一定次数,则发送警告信息到指定手机
环境:CentOS7、Tomcat9

1. 编写shell脚本

1.1 创建个tomcatChenk.sh文件

[root@localhost ~]# vi /usr/sbin/tomcatChenk.sh

1.2 编写内容

#!/bin/sh
################################### 基本参数配置  ############################################
# 要监控的页面地址
reqUrl=http://baidu.com
# 服务名称
serverName=Tomcat
# 通知联系人电话
phoneNumber=186xxxxxxxx
# tomcat启动路径
startTomcat=/opt/tomcat/bin/startup.sh
# tomcat缓存路径
tomcatCatalina=/opt/tomcat/work/Catalina
# 日志文件存放路径
checkLogPath=/opt/tomcat_check_log.txt
# 重试请求次数
checkNum=1
# 最大重试请求次数
maxCheckNum=5
# 验证结果
checkResult=false
################################## 定义函数 #############################################
# 大于 -gt (greater than)
# 小于 -lt (less than)
# 大于或等于 -ge (greater than or equal)
# 小于或等于 -le (less than or equal)
# 不相等 -ne (not equal)
# 相等 -eq (equal)

# 定义一个函数
check(){
  echo "$(date +'%F %H:%M:%S') [info]--------------- 开始监控$serverName --------------"

  while [ true ]
  do
    # 1.获取请求 http://baidu.com 的返回状态,成功返回为200
    reqCode=`curl -s -w %{http_code} -o $checkLogPath $reqUrl`
    # 2.验证请求验证接口状态是否正常,正常则退出验证
    if [ $reqCode -ne 200 ]; then
      echo "$(date +'%F %H:%M:%S') [info]第$checkNum次请求监控接口失败,返回状态为[$reqCode]"
    else
      checkResult=true
      break
    fi

    # 获取Tomcat进程ID(暂未使用,可扩展)
    # tomcat_id=$(ps -ef | grep tomcat | grep -w 'tomcat' | grep -v 'grep' | awk '{print $2}')

    # 3.计算执行次数,如果执行次数大于最大重试请求次数则结束此次验证,否则停止5秒进行下一次验证
    let checkNum=$checkNum+1
    if [ $checkNum -gt $maxCheckNum ]; then
      break
    else
      sleep 5
    fi
  done;

  if [ $checkResult == true ]; then
    echo "$(date +'%F %H:%M:%S') [info]$serverName服务运行正常"
  else
    curl -k -i -d 'tpl_id=199141&mobile=18812345678&tpl_value=%23code%23%3D110911&key=key值' http://v.juhe.cn/sms/send
    echo "$(date +'%F %H:%M:%S') [info]$serverName服务运行异常,发送预警信息到指定手机"
  fi
  echo "$(date +'%F %H:%M:%S') [info]--------------- 结束监控$serverName --------------"
}

# 调用check函数
check

1.3 给文件分配权限

[root@localhost opt]# chmod 755 tomcatChenk.sh

2. 定时执行

添加到指定的定时任务crontab中即可,具体请参照Linux(CentOS)定时任务删除Tomcat日志信息即可