Nagios中自身是不提供相应的监控,它实现监控是依赖于SNMP协议或者是相关的插件来完成相应的监控的,而平时为了部署快速方便,在Linux主机上一般多用NRPE扩展,而在Windows的主机上使用比较多的是NSClient++扩展,两者的区别是NRPE还是通过插件完成监控,而NSClient++没有插件,是由Nagios监控主机发送监控请求给NSClient++来完成监控任务的,使用NSClient++可以满足日常的Windows主机监控,但是缺点是不够灵活。这个具体可以参看:http://jim123.blog.51cto.com/4763600/1922662在文中有具体的说明,在这里就不做详细的介绍。至于安装NSClient++很简单,先在NSClient++的官网:http://www.nsclient.org/nsclient/上下载相应合适系统的版本,在安装过程中有一点比较重要如下,需要填如允许的IP(Nagios监控服端IP)和密码,如下:

在这里需要填入监控服务器的IP地址,然后在配置好密码,勾选上所有的插件,从这里得知NSClient++可以使用check_nrpe和check_nt两种插件实现监控,不过在一般情况下使用NSClient++监控Windows主机时大多都使用check_nt,之后的步骤就一步步按步骤安装就好,在这里就不做过多的篇幅做说明。在NSClient++安装好后并且启用NSClient++服务后(可以使用services.msc查看),默认的安装路径是C:\Program Files\NSClient++,在安装好后打开NSClient++的安装文件路径下的nsclient.ini文件:Nagios中NSClient++监控Windows主机_第1张图片

在这里就可以看见刚才配置过的密码及允许的Nagios的监控主机的IP等相关配置参数,在以后需要修改配置时可以在这里更改设置,这里需要注意的是每次修改后的配置不会立即生效的,同Linux服务器上的nrpe一样需要重启NSClient++的服务,可以通过services.msc中找到NSClient++服务重启

在修改后需要Nagios监控服务端上/usr/local/nagios/etc/objects/commands.cfg中修改配置添加上Nagios主机使用check_nt的密码及NSClient++监听端口信息,默认端口是12489

define command{
        command_name    check_nt
        command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s S5RAwLaFEMy3lzqi -v $ARG1$ $ARG2$
        }

因为以前有配置过nagios.cfg下的cfg_dir所以配置参数都是集中在文件夹中统一进行管理配置:

cfg_dir=/usr/local/nagios/etc/servers
cfg_dir=/usr/local/nagios/etc/objects

,在Nagios安装配置好时就有自带的windows.cfg模板,在之前的备份中把windows.cfg模板修改定义通用Windows模板以下内容在/usr/local/nagios/etc/objects文件夹内:

define host{
        name                    windows-servers
        check_period            24x7            
        check_interval          5              
        retry_interval          1           
        max_check_attempts      4            
        check_command           check-host-alive       
        notification_period     24x7         
        notification_interval   30              
        notification_options    d,r            
        contact_groups          admins         
        register                0              
        }
define service{
        name                            windows-servers               
        max_check_attempts              4                       
        normal_check_interval           3                      
        retry_check_interval            1                       
        register                        0    
        check_period                    24x7  
        process_perf_data               1         
        }

在host_group.cfg添加上Windows服务的主机组:

define hostgroup{
        hostgroup_name  windows-servers 
        alias           Windows Servers 
        }

其他的部分同以前的配置改成自定义的文件名放在/usr/local/nagios/etc/servers目录中在模板中有几个默认的几个监控都是通过check_nt配置定义的,至于check_nt的使用同check_nrpe差不多具体可以看:http://jim123.blog.51cto.com/4763600/1955618在文中有相关的参数详细解释,总之使用还是比较简单的,在默认的监控模板下会有W3SVC的监控,主要是用于监控windows下的IIS服务是否正常如果不需要可以去掉,还有在默认的模板中监控Explorer进程中有一处错误,是没有大写进程名,在这里需要修改在,这样可以在Nagios的监控服务端上测试一下,如默认模板中的打印NSClinet++的版本号的监控

[root@localhost libexec]# ./check_nt -H 192.168.2.204 -p 12489 -s S5RAwLaFEMy3lzqi -v CLIENTVERSION

,也可以根据自己的需要添加修改自己所需要监控的相关服务或者是进程配置在/usr/local/nagios/etc/servers中定义的配置文件,在这里需要注意的一点是在Windows的2008以上的版本上防火墙是默认是关闭ICMP的ping回显的协议的如果使用Nagios的监控时或通过ping来检查主机的存活,所以还需要在Windows的监控客户端主机上的防火墙上入站规则中开启ICMP的ping回显的协议,如下:Nagios中NSClient++监控Windows主机_第2张图片

开启文件和打印机共享回显请求,这样在使用Nagios监控Windows的主机时就不会出现检查到主机不在线。