nagios 监控 windows 主机
(这部分转自官方文档,但是提供的下载地址是最新的nsclient 0.3.5 ,在实际我应用的时候发现0.3.5的似乎不太好用。12489 端口起不来,费了好大劲找到的NSClient++-0.2.7.zip地址:http://trac.nakednuns.org/nscp/downloads )
安装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监控配置里了...
为监控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>"命令参数(这里的PASSWORD 要换成你Windows机器的真正口令),象这样:
define command{ command_name check_nt command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$ }
保存文件退出。
----转自官方手册
重启nagios