你是否碰到过这样的问题,线上服务突然挂了,然后各种电话或者告警提醒。。。让人一点都不省心,今天我来为大家解读一下服务挂了自动重启脚本,由监听器检测部署的服务是否正常运行,如果没有运行,则重新启动。
连接部署服务的服务器 vim /tmp/monitor.sh。可以直接复制下面命令修改下划线处即可
#!/bin/sh
# func:自动监控tomcat并且在异常时执行重启操作
# 获取tomcat进程ID(tomcat的版本) apache-tomcat-7.0.90需要根据实际配置,我们使用的# 是tomcat7.0.9为例
TomcatID=$(ps -ef |grep tomcat |grep -w 'apache-tomcat-7.0.90'|grep -v 'grep'|awk '{print $2}')
echo $TomcatID
#tomcat的启动命令 ,对应tomcat启动的start.sh文件
StartTomcat=/root/apache-tomcat-7.0.90/bin/startup.sh
GetPageInfo=/tmp/tomcatMonitor.Info
#tomcat启动后的项目url ,相当于让服务器发起一次http请求,如果成功说明服务正常启动
# xxx为实际的项目地址
WebUrl=http://127.0.0.1:8080/XXX/index.html
Monitor()
{
echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})
if [ $TomcatServiceCode -eq 200 ];then
echo "[info]页面返回码为$TomcatServiceCode,测试页面正常...[$(date +'%F %H:%M:%S')]"
else
kill -9 $TomcatID
sleep 3
echo "[info]启动tomcat...[$(date +'%F %H:%M:%S')]"
$StartTomcat
fi
}
Monitor >> /tmp/monitor.log
脚本编写好了,现在让脚本生效:
root用户执行命令编辑文件 vim /etc/rc.local
添加monitor.sh添加到文件末尾即可:
root执行命令赋予rc.local执行权限。
chmod 777 /etc/rc.local
关机,然后开机测试一下服务是否开机自启。