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'选项页),如果没有允许桌面交互,点一下里面的选择项打开它。

wKiom1LGhkrTek_QAAC2zm_aLzM468.jpg

7.编辑NSC.INI文件(位于C:\NSClient++目录)并做如下修改:

 去掉在[modules]段里的列出模块程序的注释,除了CheckWMI.dllRemoteConfiguration.dll

 最好是修改一下在[Settings]段里的'password'选项;

 去掉在[Settings]段里的'allowed_hosts'选项注释,把Nagios服务所在主机的IP加到这一行里,或是置为空,让

 全部主机都可以联入;

 确认一下在[NSClient]段里的'port'选项里已经去掉注释并设置成'12489'(默认端口)

[log]项,debug=1file=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

wKioL1LGh8agIwPMAAApVxkt0l0857.jpg

#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

wKiom1LGiQSQjesXAAGIGgXJ1JA842.jpg

重启nagios服务

service nagios restart

此时,就可以监控windows主机了,通过http查看

wKioL1LGiR_A-XaEAAMCHKYHyFk479.jpg