监控脚本
以下均以 root 身份操作。1
vi ~/tomcatMonitor.sh
内容如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#!/bin/bash
source /etc/profile
tomcatMonitorLog=/root/logs/tomcatMonitor.log
checkTomcat() {
tomcatPath=$1;
now=`date +%Y%m%d%H%M%S`
echo "$now start check $tomcatPath ..."
tomcatPid=`ps aux|grep "java"|grep $tomcatPath|awk '{printf $2}'`
if test -z ${tomcatPid}
then
echo "stoped"
su - utomcat -lc "sh $tomcatPath/bin/startup.sh" # 以 utomcat 的身份运行 tomcat 实例
echo "starting..."
else
echo "running, pid: $tomcatPid"
fi
}
checkTomcat "/home/utomcat/tomcat/web/" >> $tomcatMonitorLog
checkTomcat "/home/utomcat/tomcat/backend/" >> $tomcatMonitorLog
echo '--------------' >> $tomcatMonitorLog
- 如果有多个 tomcat 实例需要监控,则调用多次 checkTomcat 函数,传入对应的 tomcat 目录名即可。
- 记得要以 / 结束,否则如果目录名前面部分有相同的,则会不准确,如目录 web,webv1,在 web 已经停止,而 webv1 运行的情况下,将会取到 webv1 这个实例的信息。
设置可执行权限1
chmod +x tomcatMonitor.sh
添加定时执行任务
1 | crontab -e |
增加一条定时任务,以下脚本表示每 3 分钟执行1
*/3 * * * * /root/tomcatMonitor.sh > /dev/null 2>&1
如果专门为 tomcat 配置了用户,如用户名:utomcat,则建议以 utomcat 的身份创建和定时运行脚本。需要做的修改如下:
- 将上述脚本中的 su - utomcat -lc “sh $tomcatPath/bin/startup.sh” 替换成:sh $tomcatPath’bin/startup.sh’
- 将脚本保存到 utomcat 的目录下,如:/home/utomcat/shell/。
- 以 utomcat 的身份执行 crontab -e 创建定时任务。
1 */3 * * * * /home/utomcat/shell/tomcatMonitor.sh > /dev/null 2>&1
运行日志
1 | 20180717142701 start check /home/utomcat/tomcat/web/ ... |