@cdmonkey
2015-04-30T03:03:24.000000Z
字数 4099
阅读 1424
Nagios
如果是被动模式(即通过NRPE的监控方式),则首先要在被监控端对插件进行确认与定义。
#首先检查客户端的『nrpe.cfg』文件中已经定义了那些监控指令:[root@WEB-A1 ~]# vim /usr/local/nagios/etc/nrpe.cfgcommand[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,6 -c 30,25,20command[check_mem]=/usr/local/nagios/libexec/check_memory.pl -w 6% -c 3%command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 8% -p /command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%command[check_iostat]=/usr/local/nagios/libexec/check_iostat -w 6 -c 10#首先查看系统自带的插件:[root@WEB-A1 ~]# ll /usr/local/nagios/libexec/...-rwxr-xr-x 1 root root 103176 Dec 7 22:25 check_ssh-rwxr-xr-x 1 root root 108558 Dec 7 22:25 check_swap-rwxr-xr-x 1 root root 105198 Dec 7 22:25 check_time...
其次,要在服务端添加服务及命令的定义:
#定义所要监控的项目(服务):[root@Nagios ~]# vim /usr/local/nagios/etc/objects/services.cfgdefine service {use generic-servicehost_name WEB-A1,WEB-A2service_description Check Memorycheck_command check_nrpe!check_mem}--------------------------#定义监控项目中使用到的命令:[root@Nagios ~]# vim /usr/local/nagios/etc/objects/commands.cfgdefine command{command_name check_nrpecommand_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$}
即增加从Nagios服务器端发起的监控,例如对URL地址、端口的监控等。这类被监控对象一般都属于向外部提供服务的业务。对这样的业务,我们一般采取主动监控模式。这种模式无需通过NRPE,而完全由Nagios服务端主动发起监控,进而直接获取到监控信息。
#我们通过在服务端执行指令来检测客户端的80端口:[root@Nagios libexec]# ./check_tcp -H 172.16.1.10 -p 80TCP OK - 0.006 second response time on port 80|time=0.005889s;;;0.000000;10.000000#也可以监控Web服务:[root@Nagios libexec]# ./check_http -I 172.16.1.10HTTP OK: HTTP/1.1 200 OK - 360 bytes in 0.082 second response time |time=0.082371s;;;0.000000 size=360B;;;0
下面对站点的URL进行正式的监控。首先是定义相应的监控服务,对于服务的定义可以在services.cfg中进行配置,也可以在我们之前定义的配置目录中新建配置文件(以.cfg结尾的文件),然后进行配置。
#无论是主动监控还是被动监控,我们首先都要定义服务(监控的对象)。[root@Nagios ~]# cd /usr/local/nagios/etc/services/[root@Nagios services]# vim web.cfgdefine service{use generic-servicehost_name WEB-A1service_description Check Web URLcheck_command check_weburl!-I 172.16.1.10#注意,既然是主动模式,在配置指令时就要指定具体的监控目标。max_check_attempts 3normal_check_interval 2retry_check_interval 1check_period 24x7notification_interval 30notification_period 24x7notification_options w,u,c,rcontact_groups admins}
其次,我们要对监控指令check_weburl进行定义。
[root@Nagios services]# vim ../objects/commands.cfg#添加下面的指令定义内容:define command{command_name check_weburlcommand_line $USER1$/check_http $ARG1$ -w 10 -c 30}---------------------#当然这里也可以使用系统预定义的指令,都是可以的。define command{command_name check_httpcommand_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$}
最后检查语法并重新加载配置文件。
[root@Nagios services]# /etc/init.d/nagios checkconfigTotal Warnings: 0Total Errors: 0Things look okay - No serious problems were detected during the pre-flight checkOK.[root@Nagios services]# /etc/init.d/nagios reloadRunning configuration check...done.Reloading nagios configuration...done#至此主动监控模式配置完成。
主动监控模式的配置过程:
① 在服务端的命令行把要监控的命令调试好。
② 在commands.cfg文件里定义Nagios命令,同时调用命令行的插件。
③ 在服务的配置文件里定义要监控的服务,调用commands.cfg里定义的监控指令。
Nagios插件程序中需要调用监控服务规定的操作序列,并根据预先定义的规则,对返回结果进行分析,判断服务的当前状态,并以指定的状态码退出程序,同时将对该状态的说明不换行输出到控制台。Nagios的插件可以用脚本(Shell和Perl)C编译后的可执行程序,但必须满足以下两件事:

首先要在客户端编写插件,并进行定义。
第一步:编写插件脚本
[root@WEB-A1 ~]# cat /usr/local/nagios/libexec/check_www#!/bin/shstatus=`curl -I -s 172.16.1.10|grep HTTP`code=`$status|awk '{print $2}'`if [[ $code -eq 200 ]]thenecho "The HTTP service is running, and the Web is OK!"exit 0elif [ -z $code ]thenecho "The HTTP service is down!"exit 2elseecho "The HTTP service is running, but $status"exit 2fi--------------------------#上面脚本的问题:首先,取到站点的首页的HTTP状态码的方法笨拙,一条curl指令就完全可以搞定。[root@WEB-A1 ~]# code=`curl -I -o /dev/null -w%{http_code} -s 172.16.1.10`[root@WEB-A1 ~]# echo $code200#其次,对于状态码的判断不合理,类似301这类的状态码不该归为错误类。
第二步:赋予插件可执行权限
[root@WEB-A1 ~]# chmod +x /usr/local/nagios/libexec/check_www
第三步:定义插件
[root@WEB-A1 ~]# vim /usr/local/nagios/etc/nrpe.cfgcommand[check_www]=/usr/local/nagios/libexec/check_www
第四步:重启NRPE服务
在服务端应该首先在命令行中对命令进行测试,测试正常后执行下面的操作:
第一步:定义服务
[root@Monitor ~]# vim /usr/local/nagios/etc/objects/services.cfgdefine service {use generic-servicehost_name WEB-A1service_description Check Webcheck_command check_nrpe!check_www}
第二步:验证配置文件后重启Nagios服务
[root@Monitor ~]# /etc/init.d/nagios checkconfig[root@Monitor ~]# /etc/init.d/nagios restart