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 &