如题

监控脚本

以下均以 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

  1. 如果有多个 tomcat 实例需要监控,则调用多次 checkTomcat 函数,传入对应的 tomcat 目录名即可。
  2. 记得要以 / 结束,否则如果目录名前面部分有相同的,则会不准确,如目录 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 的身份创建和定时运行脚本。需要做的修改如下:

  1. 将上述脚本中的 su - utomcat -lc “sh $tomcatPath/bin/startup.sh” 替换成:sh $tomcatPath’bin/startup.sh’
  2. 将脚本保存到 utomcat 的目录下,如:/home/utomcat/shell/。
  3. 以 utomcat 的身份执行 crontab -e 创建定时任务。
    1
    */3 * * * * /home/utomcat/shell/tomcatMonitor.sh > /dev/null 2>&1

运行日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
20180717142701 start check /home/utomcat/tomcat/web/ ...
running, pid: 13251
20180717142701 start check /home/utomcat/tomcat/backend/ ...
running, pid: 18496
--------------
20180717142801 start check /home/utomcat/tomcat/web/ ...
running, pid: 13251
20180717142801 start check /home/utomcat/tomcat/backend/ ...
stoped
starting...
--------------
20180717142901 start check /home/utomcat/tomcat/web/ ...
running, pid: 13251
20180717142901 start check /home/utomcat/tomcat/backend/ ...
running, pid: 15051
--------------

tomcat 相关文章