监听tomcat,启动tomcat,发送短信通知。shell脚本实现

6 篇文章 1 订阅
1 篇文章 0 订阅

业务场景
为了防止服务器tomcat异常造成的web项目访问异常。我们开发了一个shell脚本,用来监听,重启tomcat,同时发送短信通知。
短信通知的逻辑:是tcp传输json调用短信通知接口实现。
服务器地址:xx.xxx.xx.xx
脚本存放地址: /usr/local/tomcat/bin

restartTomcat.sh

###########################################
# author wujj
# date 2020/11/17
# update   
# Automatic detection and restart tomcat
# 监听检测,重启tomcat,并发送短信通知
# name restartTomcat.sh
############################################ 

while :
do
echo ========================================
date=$(date -d "today" +"%Y%m%d %H:%M:%S")  
cd /usr/local/tomcat/bin/script
rm -f index.html
 wget -T 10 -t 3 -q http://xx.xx.xx.130:8080
if [  -e index.html ]; then
	  echo "tomcat checked,it is opened."
else  
		#curl https://sc.ftqq.com/SCU127446Tb535bddadf3dddfebd0e8a9ba58c97d85fb38d0c5c40e.send?text=主人服务器又挂掉啦~  
		#echo "xx.xxx.xx.130 的tomcat挂掉了."  
		exec 9>/dev/tcp/xx.xxx.xxx.16/42020 
		#echo "$date">& 9 
		#echo "{"SysModule":"Test","MonitorData": [{"Content":"xx.xxx.xx.130,该服务器的tomca异常关闭","Mobiles":["150xxxx8134"]}]}">& 9
		echo "{ \"SysModule\":\"valueAdd\",\"MonitorData\" :[{\"Content\":\"xx.xxx.xx.130,该服务器的tomca异常关闭\", \"Mobiles\" : [\"150xxxx8134\"]}] }">& 9
		exec 9>&- 
		
        echo "restart tomcat."  
        # /usr/local/tomcat/bin/shutdown.sh
        #sleep 10
        #kill -9 `ps aux|grep "/usr/local/tomcat"|grep -v grep|awk '{print $2}'`
        #sleep 5
        /usr/local/tomcat/bin/startup.sh
fi
sleep 20s
done

思路
1.这里没有直接监控tomcat端口,而是通过wget传输文件来测试,因为wget是可以走http协议的,正好可以经过tomcat来测试web服务是否有效,很巧妙的应用!同理也可做其他服务的监控。
2.确定tomcat异常后,会tcp连接到某个服务器地址端口42020,并发送json过去。
3.关于42020端口,是我们发送短信通知的接口的端口。调用这个端口会调用短信通知逻辑。
4.脚本里做了while do循环,每20s会执行一次。
步骤:
1.把这个shell文件放到tomcat的bin目录下,和tomcat的startup.sh脚本放一起。
2.在bin下面mkdir一个script文件夹,用来放下载的index.html.
3.关闭tomcat, ./shutdown.sh ,然后执行这个脚本看看输出。
4.如果脚本不能执行,记得加上权限chmod 755 xxx.sh。

生产环境:
如果要在生产环境里加上脚本,记得额外加上一个启动脚本和停止脚本。
startRestartTomcat.sh

#!/bin/sh
nohup ./restartTomcat.sh &

这个命令表示后台执行,来保证restartTomcat的进程的存活。

stopRestartTomcat.sh

#!/bin/sh
STARTSCRIPT="./restartTomcat.sh"
PROGRAM="./restartTomcat"
LOGPATH="/usr/local/tomcat/logs/"
LOGNAME="status.log"
DATE=$(date -d "today" +"%Y%m%d") 
TIME=$(date -d "today" +"%Y%m%d %H:%M:%S") 
echo "__________start__________stop restartTomcat.sh_________" $TIME >> $LOGPATH$DATE$LOGNAME
kill -9 `ps -ef|grep $STARTSCRIPT | grep -v grep | awk '{print $2}'` >> $LOGPATH$DATE$LOGNAME 2>&1
kill -9 `ps -ef|grep $PROGRAM | grep -v grep | awk '{print $2}'` >> $LOGPATH$DATE$LOGNAME 2>&1
echo "____________________end_______________________" >> $LOGPATH$DATE$LOGNAME
echo "stop restartTomcat.sh!"

这里就是杀死restartTomcat的进程了。
你自己用的时候,记得改成自己的路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值