使用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. 定时执行