首页 男生 其他 跟老男孩学Linux运维:Web集群实战

14.8.3 使用Shell开发Nagios插件

  您可以在百度里搜索“跟老男孩学Linux运维:Web集群实战 艾草文学(www.321553.xyz)”查找最新章节!

  

  14.8.3 使用Shell开发Nagios插件

  1.编写检查WebURL地址的插件

  以下脚本只是针对访问客户端10.0.0.8的IP的。

  [root@nagios-server ~]# cd /usr/local/nagios/libexec/[root@nagios-server libexec]# cat check_url.sh #!/bin/sh wget -T 10--spider 10.0.0.8 >/dev/null 2>&1#<==用wget检查10.0.0.8是不是可以访问 if [ $ -eq 0 ]#<==判断上述wget命令指令的返回值,0为 成功,非0为失败 then echo "URL 10.0.0.8 OK"exit 0 else echo "URL 10.0.0.8 CRITICAL" exit 2 fi

  下面利用传参把脚本改进为通用的WebURL插件。

  [root@nagios-server libexec]# cat check_url.sh #!/bin/shPROGNAME=`basename $0` #<==取脚本名 PROGPATH=`dirname $0`#<==去脚本路径 usage() { #<==打印帮助 echo "Usage: /bin/sh $PROGNAMEurl" exit 1 } [ $# -ne 1 ]&&usage #<==参数个数不为1,打印帮助 wget-T 10 --spider $1 >/dev/null 2>&1 #<==URL地址改成传参 if [ $-eq 0 ] then echo "URL $1 OK" exit 0 #<==返回0值表示成功 else echo "URL$1 CRITICAL" exit 2 fi

  以下是监控WebURL的插件脚本改进(专业规范的脚本)。

  [root@nagios-server libexec]# cat check_url.sh #!/bin/shPROGNAME=`basename $0` PROGPATH=`dirname $0` usage() { echo "Usage:/bin/sh $PROGNAME url" exit 1 } [ $# -ne 1 ]&&usage .$PROGPATH/utils.sh if wget -T 20 --spider $1 >/dev/null2>&1 ;then echo 'url $1 OK' exit $STATE_OK else echo 'url $1NO' exit $STATE_CRITICAL fi

  最后,手工测试一下改进的WebURL插件脚本。

  [root@nagios-server libexec]# sh/usr/local/nagios/libexec/check_url Usage: /bin/sh check_url url[root@nagios-server libexec]# sh/usr/local/nagios/libexec/check_url www.etiantian.org URLwww.etiantian.org OK [root@nagios-server libexec]# sh/usr/local/nagios/libexec/check_url oldboy.blog.51cto.com URLoldboy.blog.51cto.com OK

  2.WebURL插件脚本的部署过程(主动监控方式)

  Nagios主动模式监控和Nagios客户端的nrpe进程没有关系,这里停掉nrpe进程进行下面的实验。主动模式的所有操作完全在Nagios主服务器上进行。部署步骤如下。

  1)开发check_url.sh,放到/usr/local/nagios/libexec中,授权为可执行。

  [root@nagios-server ~]# cd /usr/local/nagios/libexec/[root@nagios-server libexec]# chmod +x check_url.sh[root@nagios-server libexec]# cat check_url.sh #!/bin/shPROGNAME=`basename $0` PROGPATH=`dirname $0` usage() { echo "Usage:/bin/sh $PROGNAME url" exit 1 } [ $# -ne 1 ]&&usage wget -T10 --spider $1 >/dev/null 2>&1 if [ $ -eq 0 ] then echo"URL $1 OK" exit 0 else echo "URL $1 CRITICAL" exit 2 fi

  2)在command.cfg建立check_url命令:

  [root@nagios-server ~]# cd /usr/local/nagios/etc/objects/[root@nagios-server objects]# vi commands.cfg #<==到结尾增加如下内容 #'check_url' command definition by oldboy define command{command_name check_url command_line $USER1$/check_url.sh10.0.0.8#<==加载libexec下的脚本, 并传参10.0.0.8 }

  3)在services.cfg里添加监控上述URL地址的服务。

  [root@nagios-server objects]# pwd /usr/local/nagios/etc/objects[root@nagios-server objects]# cd services #<==这个是被nagios.cfg包含的目录,所有放到目录的配置文件(以 .cfg结尾)都会生效 [root@nagios-server services]# vicheck_url.cfg #<==创建check_url.cfg添加如下 对web01,http服务的监控 defineservice{ use generic-service host_name web01service_descriptionhttp_zhudong_url #<==http服务主动监控的名字check_command check_url #<==监控的命令,来自于command. cfg中定义好的 }

  4)重新加载Nagios,查看结果。

  [root@nagios-server objects]# /etc/init.d/nagios checkconfig#====》这个启动脚本是改过的,可以省去敲一堆字符检查语法的麻烦 Running configuration check......省略部分内容... Checking misc settings... Total Warnings: 0#==>警告不为0,可以忽略 Total Errors: 0 #==>这里为0就OK。 Things look okay- No serious problems were detected during the pre-flight check OK.[root@nagios-server objects]# /etc/init.d/nagios reload#==>reload好于restart Running configuration check...done.Reloading nagios configuration...done

  5)查看Nagios服务页面监控结果,如图14-31所示。

  图14-31 Nagios服务页面监控结果

  此时,发现设置的内容是红色报警状态,原来10.0.0.8没有Web服务,检查结果如下:

  [root@nagios-server ~]# telnet 10.0.0.8 80 Trying 10.0.0.8...telnet: connect to address 10.0.0.8: Connection refused

  6)在Nagios客户端web01上安装HTTP服务进行测试。

  [root@web01 ~]# yum install httpd -y [root@web01 ~]#/etc/init.d/httpd start正在启动 httpd:httpd: apr_sockaddr_info_get()failed for web01 httpd: Could not reliably determine the server'sfully qualified domain name, using 127.0.0.1 for ServerName [确定][root@web01 ~]# echo ok >/var/www/html/index.html [root@web01~]# curl 10.0.0.8/index.html ok

  7)重新查看Nagios服务页面的监控结果,如图14-32所示。

  图14-32 重新查看Nagios服务页面的监控结果

  3.利用被动模式的nrpe方式监控/etc/passwd文件是否变化

  Nagios被动模式下的所有插件都需要部署在被监控的Nagios客户端。部署步骤如下。

  1)在Nagios客户端web01上取/etc/passwd的文件指纹,即md5值。

  [root@nagios-server ~]# md5sum /etc/passwd >/opt/ps.md5[root@nagios-server ~]# cat /opt/ps.md5c70166c5379d57f45e2ac10ed166b2ba /etc/passwd#<==记录好前面的一堆字符串。

  2)在Nagios客户端web01上开发插件脚本,并测试。

  [root@nagios-server ~]# cd /usr/local/nagios/libexec/[root@web01 libexec]# cat check_passwd #!/bin/shOriMd5="f90679e1ff07a90181edbbf82cb10a01"#<==/etc/passwd正确的MD5指纹 字符串 CurrMd5=`md5sum /etc/passwd|cut -c1-32` #<==每次执行脚本重新获取MD5指纹 和正确的指纹比较 if [ "$OriMd5" == "$CurrMd5"] then echo "/etc/passwd:ok" exit 0 else echo "/etc/passwd:FAILED"exit 2 fi [root@nagios-server libexec]# sh check_passwd/etc/passwd:ok [root@nagios-server libexec]# chmod + x check_passwd#<==需要具备执行权限

  提示:还可以用md5sum-c/opt/ps.md5的方法比较。

  3)在Nagios客户端web01上编辑nrpe.cfg,插入如下的内容后保存:

  [root@nagios-server libexec]# cd /usr/local/nagios/etc/[root@nagios-server etc]# vim nrpe.cfg #<==切到文件结尾增加如下内容command[check_passwd]=/usr/local/nagios/libexec/check_passwd

  4)在Nagios客户端web01上重启nrpe,并检查是否重启成功(check_nrpe检验)。

  [root@web01 etc]# ps -ef|grep nrpe|grep -v grep nagios 2398 1 015:30 00:00:00 /usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d [root@web01 etc]# pkill nrpe[root@web01 etc]# ps -ef|grep nrpe|grep -v grep [root@web01 etc]#/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d[root@web01 etc]# ps -ef|grep nrpe|grep -v grep nagios 2414 1 015:30 00:00:00 /usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d

  5)在Nagios服务器端nagios-server上进入service目录,创建配置文件check_passwd_web01.cfg。

  [root@nagios-server ~]# cd/usr/local/nagios/etc/objects/services [root@nagios-serverservices]# cat check_passwd_web01.cfg define service { usegeneric-service host_name web01 service_description check_passwdcheck_command check_nrpe!check_passwd#<==这里的check_passwd就是Nagios客户端nrpe.cfg里command[check_passwd]=/usr/local/nagios/libexec/check_passwd配置的中括号命令名check_passwd}

  6)在Nagios服务器端检查语法。

  [root@nagios-server services]# /etc/init.d/nagios checkconfigRunning configuration check... Nagios Core 3.5.1…… Total Warnings:0 Total Errors: 0……

  7)在Nagios服务器端加载Nagios配置,然后打开Nagios页面查看。

  [root@nagios-server services]# /etc/init.d/nagios reload Runningconfiguration check...done. Reloading nagiosconfiguration...done

  8)如果出问题就进行排查。

  首先,进入/usr/local/nagios/libexec/目录,然后,在Nagios服务器端检查语法,如下:

  [root@nagios-server libexec]# ./check_nrpe -H 10.0.0.8 -ccheck_passwd /etc/passwd:ok

  接着,在Nagios客户端检查语法,如下:

  [root@web01 libexec]# ./check_nrpe -H 127.0.0.1 -c check_passwd/etc/passwd:ok

  最后,在Nagios客户端执行nrpe里命令名后面的插件命令,即/usr/local/nagios/libexec/check_passwd看结果。

  [root@web01 libexec]# /usr/local/nagios/libexec/check_passwd/etc/passwd:ok 跟老男孩学Linux运维:Web集群实战

目录
设置
手机
书架
书页
评论