Nagios监控Windows主机
一、 介绍
本文用来说明如何监控Windows主机的本地服务和特性,包括:
内存占用率
CPU负载
Disk利用率
服务状态
运行进程
等等
在Windows主机上的公众化服务(如HTTP、FTP、POP3等)可以查阅监控公众化服务这篇文档。
注意:如下的内容是假定你已经按照快速安装指南安装好了Nagios系统之后做的,下面所使用的样例配置文件(如commands.cfg、templates.cfg等)已经在安装过程中安装到位。
二、概览
对Windows机器的监控私有服务需要在机器上安装代理程序。代理将会在检测插件与Nagios服务之间起网关代理作用。如果没有在机器上安装代理的话,Nagios将无法对Windows私有服务或属性等进行监控。
在下面例子中,将在Windows机器上安装NSClient++外部构件并使用check_nt插件检测和与NSClient++构件进行通讯。如果你按照指南来安装的话,check_nt插件已经安装到了Nagios服务器上。
如果愿意,可以用其他的Windows代理(象NC_Net)替代NSClient++构件所起的作用-只是要稍稍改一下对应的命令和服务定义等。下面将只是讨论安装了NSClient++外部构件的情况。
三、步骤
为完成对Windows机器的检测,有几个步骤要做,它们是:
确认一下首要条件;
在Windows机器上安装代理(在本例中是安装NSClient++构件);
给Windows机器创建新的主机和服务对象定义;
重启动Nagios守护进程。
四、 已经做了什么?
为使过程简单,已经完成了少量配置文件的工作:
已经把check_nt命令加入到了commands.cfg文件中,就可以直接使用check_nt插件来监控Windows服务;
一个Windows机器的主机对象模板(命名为windows-server)已经在templates.cfg文件里创建好了,可以更容易地加入一个新的Windows主机对象定义。
常用的配置文件可以在/usr/local/nagios/etc/objects/目录里找到。如果愿意可以对里面的对象进行修改以适应你的要求。但是,如果你没有熟悉配置Nagios之前劝你不要这么做。开始时可以只是按照下面的指令操作来快速完成监控Windows机器。
五、首要条件
首次监控一台Winodws机器时需要对Nagios做点额外的工作,记住,仅仅是监控第一台Windows机器时需要做这些工作。
编辑Nagios的主配置文件
- vi /usr/local/nagios/etc/nagios.cfg
把下面这行最前面的#号去掉:
- #cfg_file=/usr/local/nagios/etc/objects/windows.cfg
保存配置文件并退出。
刚才做的是什么呢?是让Nagios起用/usr/local/nagios/etc/objects/windows.cfg这个配置文件里的对象定义。在这个配置文件里可以加些Windows的主机与服务对象定义。该配置文件里已经包含有几个样例主机、主机组及服务对象定义。对于第一台Windows机器,可以只是简单地修改里面已经有的主机与服务对象定义而不要新创建一个。
六、安装Windows代理程序
在用Nagios监控Windows机器的私有服务之前,需要先在机器上安装代理程序。推荐使用NSClient++外部构件,它可以在http://sourceforge.net/projects/nscplus找到。如下指令可以安装一个基本的NSClient++外部构件,同时也配置好Nagios来监控这台Windows机器。
1.从http://sourceforge.net/projects/nscplus站点下载最新稳定版的NSClient++软件包;
2.展开软件包到一个目录下,如C:\NSClient++;
3.打开一个命令行窗口并切换到C:\NSClient++目录下;
4.用下面命令将NSClient++系统服务注册到系统里:
- nsclient++ /install
5.用下面命令安装NSClient++系统托盘程序('SysTray'是大小写敏感的):
- nsclient++ SysTray
6.打开服务管理器并确认NSClientpp服务可以在桌面交互(看一下服务管理器里的'Log On'选项页),如果没有允许桌面交互,点一下里面的选择项打开它。
7.编辑NSC.INI文件(位于C:\NSClient++目录)并做如下修改:
去掉在[modules]段里的列出模块程序的注释,除了CheckWMI.dll和RemoteConfiguration.dll;
最好是修改一下在[Settings]段里的'password'选项;
去掉在[Settings]段里的'allowed_hosts'选项注释,把Nagios服务所在主机的IP加到这一行里,或是置为空,让全部主机都可以联入;
确认一下在[NSClient]段里的'port'选项里已经去掉注释并设置成'12489'(默认端口);
8.用下面命令启动NSClient++服务:
- nsclient++ /start
9.如果安装正确,一个新的图标会出现在系统托盘里,是个黄圈里面有个黑色的'M';
10.完成了。这台Windows机器可以加到Nagios监控配置里了...
七、配置Nagios
为监控Windows机器下面要在Nagios配置文件里加几个对象定义。
编辑方式打开windows.cfg文件。
- vi /usr/local/nagios/etc/objects/windows.cfg
给Windows机器加一个新的主机对象定义以便监控。如果是被监控的第一台Windows机器,可以只是修改windows.cfg文件里的对象定义。修改host_name、alias和address域以符合那台Windows机器。
- define host{
- use windows-server ; Inherit default values from a Windows server template (make sure you keep this line!)
- host_name winserver
- alias My Windows Server
- address 192.168.1.2
- }
好了。下面可以加几个服务定义(在同一个配置文件里)以使Nagios监控Windows机器上的不同属性内容。如果是第一台Windows机器,可以只是修改windows.cfg里的服务对象定义。
注意:用你刚刚加好的主机对象定义里的host_name来替换例子里的"winserver"。
加入下面的服务定义以监控运行于Windows机器上的NSClient++外部构件的版本。当到时间要升级Windows机器上的外部构件时这信息会很用有,因为它可以告知这台Windows机器上的NSClient++需要升级到最新版本。
- define service{
- use generic-service
- host_name winserver
- service_description NSClient++ Version
- check_command check_nt!CLIENTVERSION
- }
加入下面的服务定义以监控Windows机器的启动后运行时间。
- define service{
- use generic-service
- host_name winserver
- service_description Uptime
- check_command check_nt!UPTIME
- }
加入下面的服务定义可监控Windows机器的CPU利用率,并在5分钟CPU负荷高于90%时给出一个紧急警报或是高于80%时给出一个告警警报。
- define service{
- use generic-service
- host_name winserver
- service_description CPU Load
- check_command check_nt!CPULOAD!-l 5,80,90
- }
加入下面的服务定义可监控Windows机器的内存占用率,并在5分钟内存占用率高于90%时给出一个紧急警报或是高于80%时给出一个告警警报。
- define service{
- use generic-service
- host_name winserver
- service_description Memory Usage
- check_command check_nt!MEMUSE!-w 80 -c 90
- }
加入下面的服务定义可监控Windows机器的C:盘的磁盘利用率,并在磁盘利用率高于90%时给出一个紧急警报或是高于80%时给出一个告警警报。
- define service{
- use generic-service
- host_name winserver
- service_description C:\ Drive Space
- check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
- }
加入下面的服务定义可监控Windows机器上的W3SVC服务状态,并在W3SVC服务停止时给出一个紧急警报。
- define service{
- use generic-service
- host_name winserver
- service_description W3SVC
- check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
- }
加入下面的服务定义可监控Windows机器上的Explorer.exe进程,并在进程没有运行时给出一个紧急警报。
- define service{
- use generic-service
- host_name winserver
- service_description Explorer
- check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
- }
都好了,已经加好了基础服务定义,可以监控Windows机器了,保存一下配置文件。
八、 口令保护
如果想指定保存在Windows机器上NSClient++配置文件里的口令,可以修改check_nt命令定义,让它带着口令。编辑方式打开commands.cfg文件。
- vi /usr/local/nagios/etc/commands.cfg
修改check_nt命令的定义,带上"-s "命令参数(这里的PASSWORD 要换成你Windows机器的真正口令),象这样:
- define command{
- command_name check_nt
- command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
- }
保存文件退出。
九、重启动Nagios
如果修改好Nagios配置文件,需要验证你的配置文件并重启动Nagios。
如果验证配置文件过程中有什么错误信息,在做下一步前一定要修正好配置文件。一定要保证验证过程中不再有出错信息后再启动或重启动Nagios!
【编辑推荐】