nginx、tomcat、http服务shell监控脚本

通过shell脚本来监控网站相关的服务,并结合短信报警、邮件报警、飞信报警等在第一时间通知运维人员,提供工作效率!

1. nginx服务shell监控脚本。(短信网关报警)

[root@linuxserver scripts]# cat watch_nginx.sh 

#/bin/bash
pgrep nginx &> /dev/null
if [ $? -ne 0 ];then
   /data/conf/nginx/sbin/nginx
   /opt/sms/send.sh "Nginx 服务已经宕机,本程序已经重启过,请确认是否成功"
sleep 3s

pgrep nginx &> /dev/null
if [ $? -eq 0 ]; then
   /opt/sms/send.sh "Nginx 服务已经重启成功"
   else
   /opt/sms/send.sh "Nginx 服务重启不成功,请登录服务器查明原因,手动启动!"
  fi

fi
 

2. tomcat服务shell监控脚本。(邮件报警)

[root@linuxserver scripts]# cat watch_tomcat.sh

#!/bin/bash
tomcat=`ps -ef |grep tomcat |awk '{if($3==1)print $3}'`
if [ "$tomcat" = "" ];then
   /data/conf/tomcat/bin/boot.sh &> /dev/null
   "Tomcat 服务已经宕机,本程序已经重启过,请确认是否成功" | mail -s "网站服务信息" [email protected]
sleep 3

REL=$?
  if [ $REL -eq 0 ];then
    "Tomcat 服务已经重启成功" | mail -s "网站服务息"[email protected]
else
   "Tomcat.inter 服务重启不成功,请登录服务器查明原因,手动启动!"  | mail -s "网站服务信息" [email protected]

  fi
fi

3. http服务shell监控脚本。(飞信报警)

[root@linuxserver scripts]# cat watch_httpd.sh

#!/bin/bash
httpd=`ps -ef  |grep httpd |awk '{if($3==1)print $0}'|awk '{if($1=="root")print $3 }'`
if [ "$httpd" != 1 ];then
   service httpd restart &> /dev/null
   echo "httpd 服务已经宕机,本程序已经重启过,请确认是否成功" >> /var/log/messages
sleep 3
  if [ "$httpd" == 1 ];then
   echo "httpd 服务已经重启成功" >> /var/log/messages
else
   echo "httpd 服务重启不成功,请登录服务器查明原因,手动启动!"  >> /var/log/messages
  fi
fi

 

(备注:)短信报警,需要购买短信网关。

短信报警shell脚本:(如nginx服务shell监控脚本)

[root@linuxserver sms]# cat send.sh

#!/bin/bash
export user=输入你的用户名
export mobile="输入你的手机号码"
export word="$1"
export btime=`date +%Y-%m-%d-%r`

for i in $mobile
do
        cat $btime >> /opt/sms/send.log
        /usr/bin/links "输入你的短信网关地址" >> /opt/sms/send.log
done

 

邮件报警shell脚本:(如tomcat服务shell监控脚本)

首先需安装sendmail服务

 格式为:"正文内容"  mail -s "标题"  邮件地址1  邮件地址2 ............

 

飞信报警shell脚本:(如httpd服务shell监控脚本)

首先需要安装linux版的fetion (已略)

 

[root@linuxserver fetion]#  cat fetion.sh 

#!/bin/bash

export LD_LIBRARY_PATH=/opt/fetion:$LD_LIBRARY_PATH

export DST_PHONE="手机号码1,手机号码2"

 

for i in $DST_PHONE

do

        /opt/fetion/fetion --mobile=手机号码 --pwd=密码 --to=$i --msg-utf8="$1 $2 $3 $4 $5 $6 $7 $8 $9(短信内容)"

done

 

 

最后设置crontab任务计划。

 

[root@linuxserver scripts]# crontab -l

#用来监控 Nginx 服务是否存在

*/3 7-23,0-4 * * * /bak/scripts/watch_nginx.sh &

#用来监控 Tomcat 服务是否存在

*/3 7-23,0-4 * * * /bak/scripts/watch_tomcat.sh &

#用来监控 httpd 服务是否存在

*/3 7-23,0-4 * * * /bak/scripts/watch_httpd.sh &