介绍

本文用来说明如何监控windows主机的本地服务和特性,包括:

内存占用率

CPU负载

disk利用率

服务状态

运行进程等

对windows机器的监控私有服务需要在机器上安装代理程序(agent)。代理将会在检测插件与Nagios服务之间起网关代理作用。如果没有在机器上安装代理的话,Nagios将无法对windows私有服务或属性等进行监控。

下面的例子中,将在被监控端的windows主机上安装NSClient++外部构件并在监控中心使用check_nt插件检测和玉NSClient++构件进行通信。

在Nagios的libexec下有check_nt这个插件,它就是用来检查windows机器的服务的。其功能类似于check_nrpe。不过还需要搭配另外一个软件NSClient++,它则类似于NRPE。我们需要下载NSClient合适的版本,然后安装在被监控的windows主机上。


Overview of NRPE

NSClient++的原理如下图:

可以看到NSClient与nrpe最大的区别就是:

NRPE: 被监控机上安装有nrpe,并且还有插件,最终的监控是由这些插件来进行的。当监控主机将监控请求发给nrpe后,nrpe调用插件来完成监控。

NSClient++: NSClient++则不同,被监控机上只安装NSClient,没有任何的插件。当监控主机将监控请求发给NSClient++后,NSClient直接完成监控,所有的监控是由NSClient完成的。

这也说明了NSClient++的一个很大的问题:不灵活、没有可扩展性。它只能完成自己本身包含的监控操作,不能由一些插件来扩展。好在NSClient++已经做的不错了,基本上可以完全满足我们的监控需求。

步骤:

为完成对windows主机的检测,有几个步骤要做,他们是:

在被监控端的windows机器上安装代理agent(本例中采用的NSClient++构件)

给windows机器创建新的主机和服务对象定义

重启Nagios守护进程

1、在被监控的windows主机上安装NSClient++

从http://www.nsclient.org/nscp/downloads 下载NSClient++。安装的过程和其他windows应用程序的安装过程类似,next即可,选项我们都保持默认。安装过程中需要填写监控端的IP地址和密码,以及把下面的Modules全部勾选上。

安装完成后,我们查看是否启用了5666和12489端口,如果有,表明NSClient服务启动正常。

在“运行”里面,输入services.msc, 打开“服务”

如果看到NSClient++,说明正常。

2、编辑NSClient++的配置文件

默认是安装在C:\Program Files\NSClient++ 目录下,nsclient.ini即为NSClient服务的配置文件,一般我们无需修改,但是当我们监控端的IP地址改变时,或者密码忘记,即可以在这里修改了。

这样外部就可以访问了吗?

错!

防火墙也要打开tcp的12489端口,否则nagios 检查此服务的时候会报错。

这样被监控机的配置就搞定了,它就等待nagios 发出某个监控请求,然后它执行请求将监控的结果发回到nagios监控主机上。

3、在监控端操作,检测能否正常工作

[root@localhost~]#cd/usr/local/nagios/libexec/#查看使用帮助[root@localhostlibexec]#./check_nt-h#如果没有指定端口,默认使用1248去连接[root@localhostlibexec]#./check_nt-H192.168.11.105-vUPTIMEconnecttoaddress192.168.11.105andport1248:Connectionrefusedcouldnotfetchinformationfromserver#没有指定密码[root@localhostlibexec]#./check_nt-H192.168.11.105-p12489-vUPTIMENSClient-ERROR:Invalidpassword.#OK[root@localhostlibexec]#./check_nt-H192.168.11.105-p12489-s123456-vUPTIMESystemUptime-0day(s)0hour(s)51minute(s)|uptime=51[root@localhostlibexec]#./check_nt-H192.168.11.105-p12489-s123456-vCPULOAD-w80-c90-l5,80,90CPULoad21%(5minaverage)|'5minavgLoad'=21%;80;90;0;100#-w警告比例-c紧急比例-l(小写L)表示过去5分钟的平均值,80%为警告,90%为紧急#./check_nt-H192.168.1.5-p12489-s-vUSEDDISKSPACE-w80-c90-lCC:\-total:50.01Gb-used:18.94Gb(38%)-free31.07Gb(62%)|'C:\UsedSpace'=18.94Gb;40.01;45.01;0.00;50.01###信息回显格式一般信息|资源的性能信息他们之间输出要用|隔开,如果自己开发插件必须使用这种格式,如果只输出一般信息一行就行。

4、定义主机、服务、命令

[root@localhost~]#cd/etc/nagios/monitor/

(1)定义命令

#vicommands.cfgdefinecommand{command_namecheck_wincommand_line$USER1$/check_nt-H"$HOSTADDRESS$"-p12489-s123456-v$ARG1$$ARG2$}#$..$表示系统内置的宏,也就是所谓的变量#$USER1$表示插件所在的目录#-H指定主机地址#$HOSTADDRESS$应用到哪个主机,就用哪个主机的地址#$ARG1$传递的参数,形参#-s指定密码,如果有需要加,如上面安装时设置了密码为123456

(2)定义主机

#vimhosts.cfgdefinehost{usewindows-serverhost_namewin-192.168.11.105aliasmywinserveraddress192.168.11.105}

(3)定义服务

#viservices.cfgdefineservice{usegeneric-servicehost_namewin-192.168.11.105service_descriptionNSClient++Versioncheck_commandcheck_win!CLIENTVERSION;传递给-v的参数第一个参数}defineservice{usegeneric-servicehost_namewin-192.168.11.105service_descriptionUptimecheck_commandcheck_win!UPTIME}defineservice{usegeneric-servicehost_namewin-192.168.11.105service_descriptionCPULoadcheck_commandcheck_win!CPULOAD!-l5,80,90;传递两过参数!CPULOAD和-!-l5,80,90}

5、查看结果

由于修改了配置文件,我们最好先检查一下配置文件的语法。

#/usr/local/nagios/bin/nagios-v/etc/nagios/nagios.cfg#如果没有问题,就可以重启nagios服务#servicenagiosrestart

现在打开Nagios Web监控页便可查看到相关信息了。


更多详细信息,请参考:

http://www.nsclient.org/nscp/wiki/doc/usage/nagios/nrpe


附件:http://down.51cto.com/data/2364701