目录
内容简介:今天要做在linux上监控tomcat的脚本文件,每隔30秒监控一次,并且当tomcat停止运行发送邮件提醒。
1.monitorTomcat.sh
linux脚本文件,到所在文件路径下,
需要文件授予权限chmod u+x monitorTomcat.sh
执行方法. ./monitorTomcat.sh
不需要授予权限
执行方法1 bash monitorTomcat.sh
执行方法2 sh hello.sh
#!/bin/bash
# func:自动监控tomcat并且在异常时30s发送邮件提醒
# 定义环境变量
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8.0_181/bin
export JAVA_HOME=/usr/java/jdk1.8.0_181
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# tomcat启动程序(这里注意tomcat实际安装的路径)
StartTomcat=/usr/tomcat/apache-tomcat-7.0.90/bin/startup.sh
TomcatCache=/usr/tomcat/apache-tomcat-7.0.90/work
# 定义要监控的页面地址
WebUrl=http://localhost:8080
# 日志输出
TomcatMonitorLog=/tmp/TomcatMonitor.log
Monitor(){
# 获取tomcat进程ID
TomcatID=$(ps -ef |grep tomcat |grep -w 'apache-tomcat-7.0.90'|grep -v 'grep'|awk '{print $2}')
echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
# 这里判断TOMCAT进程是否存在
if [ $TomcatID ];then
echo "[info]当前tomcat进程ID为:$TomcatID,继续检测页面..."
# 如果tomcat进程不猜在
else
echo "tomcat异常,请及时查看...[$(date +'%F %H:%M:%S')]"|mail -s "tomcat提醒" xxxxxxxxx@qq.com
echo "tomcat异常,已发送邮件提醒..."
fi
echo "------------------------------"
}
#定义死循环,每30秒调用一次Monitor()方法
step=30
while(true)
do
Monitor
#这里是输出到日志文件,我们不开启,直接在控制台查看情况
# >>$TomcatMonitorLog
sleep $step
done
2.配置linux本地163邮箱
这里最好不要配置qq邮箱,有许多限制,会出现很多问题,163邮箱兼容很好。
去到linux的/etc/mial.rc文件,配置163邮箱发送,下面的xxx配上自己的邮箱账号。
# vi /etc/mail.rc
Set from=xxx@163.com Set smtp=smtp.163.com Set smtp-auth-user=xxx@163.COM Set smtp-auth-password=XXX Set smtp-auth=login |
3.邮箱发送过慢问题
去到/etc/hosts/文件下,将主机名添加,例如我的主机名是peixin,之后重启sendmail服务。
因为sendmail监听的是127.0.0.1,但却无法确认主机名peixin ,所以发送邮件就非常慢了。那么我就 把 peixin 这个主机名同时也加到127.0.0.1上面,变成:
#vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 peixin ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 |
# service sendmail restart