1.介绍
本文用来说明如何监控Windows主机的本地服务和特性,包括:
内存占用率
CPU负载
Disk利用率
服务状态
运行进程
等等
2.概览
对Windows机器的监控私有服务需要在机器上安装代理程序。代理将会在检测插件与Nagios服务之间起网关代理作用。如果没有在机器上安装代理的话,Nagios将无法对Windows私有服务或属性等进行监控。
在下面例子中,将在Windows机器上安装NSClient++外部构件并使用check_nt插件检测和与NSClient++构件进行通讯。
3.安装步骤:
在用Nagios监控Windows机器的私有服务之前,需要先在机器上安装代理程序。推荐使用NSClient++外部构件,它可以在http://nsclient.org/nscp/downloads找到。如下指令可以安装一个基本的NSClient++外部构件,同时也配置好Nagios来监控Windows机器。
配置被监控端
1.从http://nsclient.org/nscp/downloads站点下载最新稳定版的NSClient++软件包(这里以监控 WindowsServer2008R2 64位系统为例:http://files.nsclient.org/0.3.x/NSClient%2B%2B-0.3.9-x64.zip);
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'(默认端口);
[log]项,debug=1,file=nsclient.log
8.用下面命令启动NSClient++服务:
nsclient++ /start
9.如果安装正确,一个新的图标会出现在系统托盘里,是个黄圈里面有个黑色的'M';
10.在防火墙上将12489端口例外和开启ICMP回显功能。
配置监控端
1.定义命令
vi /usr/local/nagios/etc/objects/commands.cfg
增加下面的内容
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
}
如果NSClient设置了连接需要密码,则应写成如下格式
$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
2.增加监控项目
修改nagios.cfg
vim /usr/local/nagios/etc/nagios.cfg
添加这一行
cfg_dir=/usr/local/nagios/etc/servers
创建目录
mkdir /usr/local/nagios/etc/servers
复制默认windows.cfg内容
cp /usr/local/nagios/etc/objects/windows.cfg /usr/local/nagios/etc/servers/win1.cfg(监控第二台是一样的方法:cp /usr/local/nagios/etc/servers/win1.cfg /usr/local/nagios/etc/servers/win2.cfg)
在/usr/local/nagios/etc/servers/目录下添加个组group.cfg,方便监控多台windows主机(这里先列举监控两台windows主机)。
cd /usr/local/nagios/etc/servers
touch group.cfg
vim group.cfg
#给Windows机器加一个新的主机对象定义以便监控
vi /usr/local/nagios/etc/servers/win.cfg
define host{
use windows-server
host_name winserver
alias My Windows Server
address 192.168.1.2;监控客户机的IP地址
}
define hostgroup{
hostgroup_name windows-servers
alias Windows Servers
};监控第二台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 -lW3SVC
}
#定义可监控Windows机器上的Explorer.exe进程,并在进程没有运行时给出一个紧急警报
define service{
use generic-service
host_name winserver
service_description Explorer
check_command check_nt!PROCSTATE!-d SHOWALL -lExplorer.exe
}
配置完成后,检查nagios的配置文件是否正确
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
重启nagios服务
service nagios restart
此时,就可以监控windows主机了,通过http查看