linux脚本监控tomcat,邮件提醒

目录

1.monitorTomcat.sh

2.配置linux本地163邮箱

3.邮箱发送过慢问题


 

内容简介:今天要做在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提醒" [email protected]
   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 [email protected]

Set smtp=smtp.163.com

Set [email protected]

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

 

你可能感兴趣的:(Linux)