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

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

下载NSClient++-xxx-Win32

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


安装NSClient++

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

添加允许主机

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

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



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.cfgdefine 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.cfgdefine 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 groupdefine 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 abovedefine 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 abovedefine 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 abovedefine 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 abovedefine 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 abovedefine 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 abovedefine 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 abovedefine 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.cfgcfg_file=/usr/local/nagios/etc/objects/windows.cfg做完上述的操作以后重启nagios服务端的nagios服务[root@node4 objects]#service nagios restartRunning configurationcheck...done.Stopping nagios: done.Starting nagios: done.


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

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


密码保护:

如果你在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

}