设为首页 收藏本站
查看: 1081|回复: 0

Tomcat nagios-plugins监控网站(自动启动每分钟检测).txt

[复制链接]

尚未签到

发表于 2015-11-22 16:37:04 | 显示全部楼层 |阅读模式
  安装nagios-plugins-1.4.13.tar.gz
检查gcc是否安装
[iyunv@zhuang~~]# rpm -qa |grep gcc
libgcc-4.1.2-42.el5
compat-gcc-34-g77-3.4.6-4
compat-libgcc-296-2.96-138
libgcc-4.1.2-42.el5
gcc-4.1.2-42.el5
compat-gcc-34-c++-3.4.6-4
gcc-gfortran-4.1.2-42.el5
compat-gcc-34-3.4.6-4
gcc-c++-4.1.2-42.el5
gcc-java-4.1.2-42.el5

有显示即安装了没有显示就安装gcc
[iyunv@zhuang~~]# yum install gcc

[iyunv@zhuang~~]#tar zvxf nagios-mysql-plugins-0.3.tar.gz
[iyunv@zhuang~~]#./configure --prefix=/usr/local/nagios
[iyunv@zhuang~~]#make
[iyunv@zhuang~~]#make install
./check_http –h 检查check_http可不可用(显示帮助信息代表可用)

创建监控脚本存放目录,并且把脚本(moniter.sh)放在该目录中.
[iyunv@zhuang~~]#mkdir moniter
[iyunv@zhuang~~]#cd moniter
[iyunv@zhuang~~]#cp /usr/local/nagios/libexec/check_http /root/moniter/

[iyunv@zhuang~~]#ls -l
check_http moniter.sh   --给这两个文件赋于可执行权限

脚本(moniter.sh),代码如下:

#!/bin/sh
path=/moniter
logfile=/root/monite/jboosmoniter.log
date=`(date +%D--%T)`
ps -eo pid,tty,user,comm,stime,etime | more |grep java|sed 's/://g'>$path/pid.txt
result=`( awk '/master/ {print $6}' $path/pid.txt |sed -e 's/://g' -e 's/-//g')`
$path/check_http -H 192.168.3.17 -p 80 -u /index.html >$path/a.txt
a=`(awk '{print $4}' $path/a.txt)`
echo $a >$path/states.txt
valuse=`(cat $path/states.txt)`
awk '/refused/ {print $2}' $path/a.txt>$path/b.txt
f=`(cat $path/b.txt)`
q=refused
level=1000
if [ $valuse != 200 ]
then
     if (( "10#$result" > "$level" ))
      then
            killall -9 java;/etc/init.d/tomcat start;echo "the tomcat server have reboot on $date">>$logfile;echo "Jboss running time:$result">>$logfile
    fi
fi
if [ "$f" = "$q" ]
         then
       killall -9 java;/etc/init.d/tomcat start;echo "the tomcat server have dead but it start on $date">>$logfile

fi


配置crontab,每分钟运行一次
[iyunv@zhuang~~]#crontab –e
*/1 * * * * /root/moniter/moniter.sh


实现原理:
该监控主要是利用nagios监控工具里面的一个java脚本结合自己编写的shell脚本来实现监控,该程序会定时的(结合crontab)向被监控服务器发起HTTP连接取得其连接返回的状态值指标,通过判断不正常的状态来触发重启动作并且记录日志。有四种状态分别为正常状态:HTTP OK HTTP/1.1 200 OK - 3745 bytes in 0.745 seconds |time=0.744536s;;;0.000000 size=3745B;;;0
内存溢出的状态:CRITICAL - Socket timeout after 10 seconds
正在重启的状态:CRITICAL - Socket timeout after 10 seconds
宕机的状态:Connection refused HTTP CRITICAL - Unable to open TCP socket
下面有两个程序
(1)通过监控timeout值,其原理为界定了一个连接响应时间timeout值的一个阀值为2S,超过这个值,或者这个值为空(宕机和内存溢出时都为空)都会认为是服务运行不正常,即触发重启服务器的命令:
#!/bin/bash
path=/usr/local/nagios/libexec
$path/check_http -w 5 -c 10 -H 192.168.3.11 -p 80 -u /index.jsp >$path/a.txt
a=`awk -F '[ ;|=]' '/s/d {print $14}' $path/a.txt |sed 's/s//g'`
echo $a >$path/timeout.txt
valuse=`(cat $path/timeout.txt)`
timeout=2.0000
if (echo ${valuse} ${timeout} | awk '!($1>$2){exit 1}')
   then
/etc/init.d/tomcat restart
fi
(2)通过监控返回的http状态代码来实现监控,正常状态返回的代码应为200,其他值都是不正常的,当响应时间小于10分钟证明是正在重启,取到不正常的值的时候就触发重启服务器的命令,脚本如下

脚本注释:
#!/bin/bash
path=/root/moniter/
#####定义脚本存放的绝对路径##########
logfile=/root/moniter/tomcatmoniter.log
########定义日志文件名和存放的绝对路径###############
date=`(date +%D--%T)`
##########定义时间格式#############
ps -eo pid,tty,user,comm,stime,etime | more |grep java|sed 's/://g'>$path/pid.txt
##############得出tomcat进程运行的信息并且输出到文件pid.txt中###############
result=`( awk '/master/ {print $6}' $path/pid.txt |sed -e 's/://g' -e 's/-//g')`
################得出tomcat进程运行的时间并且赋值给result变量##############
$path/check_http -H 192.168.3.11 -p 80 -u /index.jsp >$path/a.txt
##############向 192.168.3.11 发起HTTP连接并且把得到的状态信息输出到a.txt##########
a=`(awk '{print $4}' $path/a.txt)`
###########得出http连接的状态值并且输出给变量a##################
echo $a >$path/states.txt
################把变量a的值输出给states.txt#################################
valuse=`(cat $path/states.txt)`
##############变量values存的就是http连接的状态值#########################
awk '/refused/ {print $2}' $path/a.txt>$path/b.txt
##########该语句判断的是当服务已死的时候的状态值,赋值给b.txt####################
f=`(cat $path/b.txt)`
#####变量f为状态值######
q=refused
#######变量q是判断服务是否死掉的标准#######
level=1000
################变量level是区分服务正在重启与服务器内存溢出的标准#################
if [ $valuse != 200 ]
#########判断http连接状态是否正常##########
then
     if (( "10#$result" > "$level" ))
##########区分服务正在重启与内存溢出的状态#################
      then
            killall -9 java;/etc/init.d/tomcat start;echo "the tomcat server have reboot on $date">>$logfile
################重启服务并且记录日志###########################
    fi
fi
if [ "$f" = "$q" ]
##############判断是否符合服务已死的条件##########
         then
       killall -9 java;/etc/init.d/tomcat start;echo "the tomcat server have dead but it start on $date">>$logfile
################重启服务并且记录日志###########################
fi


使用说明:该脚本必须为root用户才能执行:chown root moniter.sh   chmod +x moniter.sh脚本中蓝色字体的是脚本存放的路径,红色字体的是服务器的完整域名,一定要按照实际情况填写

自动执行设置: crontab –e
*/1 * * * * /root/moniter/moniter.sh

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-142273-1-1.html 上篇帖子: nagios 监控 nginx 下篇帖子: 事件机制在nagios中的应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表