NSClinet++监控Windows主机的nagios插件

下载地址:https://nsclient.org/nscp/downloads

下载NSClient++-xxx-Win32

我们这里下载的是NSClient++-0.3.9-Win32.msi


安装NSClient++

双击程序安装,前面都点下一步,从下面可以看出来NSClient集成了很多的插件NRPENSCA等都支持

Nagios的NSClient++插件配置_nagiops

添加允许主机

Nagios的NSClient++插件配置_nagios的 NSClient++_02

下面没什么需要注意的了,直接下一步,安装完成就可以了。

Nagios的NSClient++插件配置_nagiops_03

服务开启以后可以看到服务端的端口开启了,NSClient++使用的是12489端口,而且我们也看到nrpe的端口也开启了

Nagios的NSClient++插件配置_nagiops_04



1、基于check_nt

Windows端安装目录下NSC.ini配置文件的要启用的模块:

[modules]

CheckSystem.dll

CheckDisk.dll

FileLogger.dll

NSClientListener.dll


[settings]

allowed_hosts = #允许的主机

Password=   #密码

修改配置后要重启服务:


nsclient++ /stop

nsclient++ /start




在nagios端使用如下命令测试:


check_nt -H <client ip> -p <port> -s <PASSWORD> -v <command> ...


# check_nt -H 172.16.100.66 -p 12489 -v CPULOAD -w 80 -c 90 -l5,80,90-s redhat


[root@node4 ~]# cd/usr/local/nagios/libexec/

[root@node4 libexec]#./check_nt -H 192.168.0.5 -p 12489 -v CPULOAD -w 80 -c 90 -l 5,80,90 -s redhat

CPU Load 0% (5 minaverage) |   '5 min avgLoad'=0%;80;90;0;100




nagios端配置:


首先是命令配置:
[root@node4 ~]# cd/usr/local/nagios/etc/objects/
[root@node4 objects]#vim commands.cfg
define command{
        command_name    check_nt
        command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489-s redhat -v $ARG1$ $ARG2$
        }
然后是主机配置:
# vim/usr/local/nagios/etc/objects/windows.cfg
define host{
        use             windows-server  ; Inherit default values from a template
        host_name       winserver       ; The name we're giving to this host
        alias           My Windows Server       ; A longer name associated with the host
        address         192.168.0.5     ; IP address of the host
        }
###############################################################################
###############################################################################
#
# HOST GROUPDEFINITIONS
#
###############################################################################
###############################################################################
# Define a hostgroupfor Windows machines
# All hosts that usethe windows-server template will automatically be a member of this group
define hostgroup{
        hostgroup_name  windows-servers ; The name of the hostgroup
        alias           Windows Servers ; Long name of thegroup
        }
###############################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################
# Create a servicefor monitoring the version of NSCLient++ that is installed
# Change thehost_name to match the name of the host you defined above
define service{
        use                     generic-service
        host_name               winserver
        service_description     NSClient++ Version
        check_command           check_nt!CLIENTVERSION
        }
# Create a servicefor monitoring the uptime of the server
# Change thehost_name to match the name of the host you defined above
define service{
        use                     generic-service
        host_name               winserver
        service_description     Uptime
        check_command           check_nt!UPTIME
        }
# Create a servicefor monitoring CPU load
# Change thehost_name to match the name of the host you defined above
define service{
        use                     generic-service
        host_name               winserver
        service_description     CPU Load
        check_command           check_nt!CPULOAD!-l 5,80,90
        }
# Create a servicefor monitoring memory usage
# Change thehost_name to match the name of the host you defined above
define service{
        use                     generic-service
        host_name               winserver
        service_description     Memory Usage
        check_command           check_nt!MEMUSE!-w 80 -c 90
        }
# Create a servicefor monitoring C:\ disk usage
# Change thehost_name to match the name of the host you defined above
define service{
        use                     generic-service
        host_name               winserver
        service_description     C:\ Drive Space
        check_command           check_nt!USEDDISKSPACE!-l c -w 80 -c90
        }
# Create a servicefor monitoring the W3SVC service
# Change thehost_name to match the name of the host you defined above
define service{
        use                     generic-service
        host_name               winserver
        service_description     W3SVC
        check_command           check_nt!SERVICESTATE!-d SHOWALL -lW3SVC
        }
# Create a servicefor monitoring the Explorer.exe process
# Change thehost_name to match the name of the host you defined above
define service{
        use                     generic-service
        host_name               winserver
        service_description     Explorer
        check_command           check_nt!PROCSTATE!-d SHOWALL -lExplorer.exe
        }
在nagios配置文件内添加一条cfg
[root@node4 objects]# vim/usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
做完上述的操作以后重启nagios服务端的nagios服务
[root@node4 objects]#service nagios restart
Running configurationcheck...done.
Stopping nagios: done.
Starting nagios: done.


然后在nagiosweb管理界面上你就会发现一个新的主机

Nagios的NSClient++插件配置_nagiops_05

而且服务里面也多出很多我们定义的服务

Nagios的NSClient++插件配置_nagios的 NSClient++_06


密码保护:

如果你在windows的机器上设置了密码,你需要在commands.cfg配置文档内加上-s PASSWORD如下:

vi/usr/local/nagios/etc/objects/commands.cfg

define command{

command_name        check_nt

command_line        $USER1$/check_nt-H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$$ARG2$

}


Save the file.



2、基于NRPE


Windows上NSClient++要启用如下模块:

[modules]

CheckSystem.dll

CheckDisk.dll

CheckExternalScripts.dll

FileLogger.dll

NRPEListener.dll


NRPE specific settingin NSClient++

use_ssl  #使用ssl

allow_arguments  #是否允许nagios服务端传递参数过来

allow_nasty_meta_chars # 传递参数的时候是否可以包含一些&<>等字符

bind_to_address=  #绑定在那个地址上,默认监听在0.0.0.0

           allowed_hosts= #允许主机


check_nrpe语法:

check_nrpe ... -c<command> [-a <argument> <argument> <argument>]



check_nrpe的内置命令:

·CheckAlwaysCRITICAL (check)

·CheckAlwaysOK (check)

·CheckAlwaysWARNING (check)

· CheckCPU(check)

·CheckCRITICAL (check)

·CheckCounter (check)

·CheckEventLog/CheckEventLog (check)

·CheckFile (check)

·CheckFileSize (check)

· CheckMem(check)

·CheckMultiple (check)

· CheckOK(check)

·CheckProcState (check)

·CheckServiceState (check)

·CheckTaskSched/CheckTaskSched (check)

·CheckUpTime (check)

·CheckVersion (check)

·CheckWARNING (check)

·CheckWMI/CheckWMI (check)

·CheckWMIValue (check)


用法如:

# check_nrpe ... -cCheckCPU -a warn=80 crit=90 time=20m time=10s time=4





Nagios端的配置:


1) Template


define host{

nametpl-windows-servers

usegeneric-host

check_period24x7

check_interval5

retry_interval1

max_check_attempts10

check_commandcheck-host-alive

notification_period24x7

notification_interval30

notification_optionsd,r

contact_groupsadmins

register0

}


2) 定义主机:

define host{

usetpl-windows-servers

host_namewindowshost

aliasMy First Windows Server

address172.16.100.66

}


3) 定义服务:


define service{

usegeneric-service

host_namewindowshost

service_descriptionCPU Load

check_commandcheck_nrpe!alias_cpu

}


define service{

usegeneric-service

host_namewindowshost

service_descriptionFree Space

check_commandcheck_nrpe!alias_disk

}



3、基于NSCA


[modules]

CheckSystem.dll

CheckDisk.dll

CheckExternalScripts.dll

CheckHelpers.dll

FileLogger.dll

NSCAAgent.dll


NSClient++配置


interval

encryption_method

password

nsca_host


修改配置后要重启服务





1) 模板

define host{

nametpl-windows-servers ; Name of this template

usegeneric-host ; Inherit default values

check_period24x7

check_interval5

retry_interval1

max_check_attempts10

check_commandcheck-host-alive

notification_period24x7

notification_interval30

notification_optionsd,r

contact_groupsadmins

register0 ; DONT REGISTER THIS - ITS A TEMPLATE

}


2)主机配置

define host{

usetpl-windows-servers

host_namewindowshost

aliasMy First Windows Server

address172.16.100.66

active_checks_enabled0

passive_checks_enabled1

}


3)服务配置


define service{

usegeneric-service

host_namewindowshost

service_descriptionCPU Load

check_commandcheck_nrpe!alias_cpu

active_checks_enabled0

passive_checks_enabled1

}


define service{

usegeneric-service

host_namewindowshost

service_descriptionFree Space

check_commandcheck_nrpe!alias_disk

active_checks_enabled0

passive_checks_enabled1

}