前段时间因为接了信用卡的业务,引擎的计算量急剧上升,Tomcat宕机了两次,所以给引擎添加监控就成了很紧急的任务。
监控的主要原理是这样的,有两个监控的主要目标:1.tomcat进程2.具体的服务端口,如果这两个监控目标有一个状态不正常了,就重启后台。
所以现在要做的是写一个脚本,查看这两个目标,然后定时启动这个脚本。
第一步:监控脚本
#!/bin/sh
Restart(){
cd /wls/padl_spk/javaweb/tomcat/bin
./catalina.sh stop
cd /wls/padl_spk/javaweb/tomcat/bin
nohup ./catalina.sh run &
curl http://127.0.0.1:8080/PAServer2/init
}
TomcatID=$(ps -ef |grep tomcat |grep -w $tomcat_name|grep -v 'grep'|awk '{print $2}')
Monitor(){
if [[ $TomcatID ]]; then
TomcatServiceCode=$(curl -s -m 10 --connect-timeout 10 $webUrl -w %{http_code})
if [[ $TomcatServiceCode -eq 200 ]]; then
echo "ok"
else
echo "error"
Restart
fi
else
echo "tomcat is no exist"
Restart
fi
}
第二步:定时启动这个脚本
定时启动有很多方式,这里使用了两种:
(1)crontab
设置方式为:
(2)systemd
- [Unit]
- Description=MyScript
- [Service]
- Type=simple
- ExecStart=/usr/local/bin/myscript
- [Unit]
- Description=Runs myscript every hour
- [Timer]
- # 首次运行要在启动后10分钟后
- OnBootSec=10min
- # 每次运行间隔时间
- OnUnitActiveSec=1h
- Unit=myscript.service
- [Install]
- WantedBy=multi-user.target
- # 以 root 身份启动定时器
- systemctl start myscript.timer
- # 在系统引导起来后就启用该定时器
- systemctl enable myscript.timer