在Nagios的libexec下有check_nt这个插件,它就是用来检查windows机器的服务的。其功能类似于check_nrpe。不过还需要搭配另外一个软件NSClient++,它则类似于NRPE。我们需要下载NSClient合适的版本,然后安装在被监控的windows主机上。
可以看到NSClient与nrpe最大的区别就是:
•NRPE: 被监控机上安装有nrpe,并且还有插件,最终的监控是由这些插件来进行的。当监控主机将监控请求发给nrpe后,nrpe调用插件来完成监控。
•NSClient++: NSClient++则不同,被监控机上只安装NSClient,没有任何的插件。当监控主机将监控请求发给NSClient++后,NSClient直接完成监控,所有的监控是由NSClient完成的。
这也说明了NSClient++的一个很大的问题:不灵活、没有可扩展性。它只能完成自己本身包含的监控操作,不能由一些插件来扩展。好在NSClient++已经做的不错了,基本上可以完全满足我们的监控需求。
从http://www.nsclient.org/nscp/downloads 下载NSClient++。安装的过程和其他windows应用程序的安装过程类似,next即可,选项我们都保持默认。安装过程中需要填写监控端的IP地址和密码,以及把下面的Modules全部勾选上。
安装完成后,我们查看是否启用了5666和12489端口,如果有,表明NSClient服务启动正常
在“运行”里面,输入services.msc, 打开“服务”
如果看到NSClient++,说明正常。
设置远程桌面交互
define host{
use windows-server ; Inherit default values from a template 从template中继承相关监控参数
host_name BR56 ; The name we're giving to this host 主机名称
alias ZWBR56 ; A longer name associated with the host 别名
address 192.168.0.56 ; IP address of the host IP地址
}
4. 在Service定义部分,参数说明
首先需要设定以下内容,用于确认监控对象的NSClient++的版本是否正确
然后是定义监控对象的正常运行时间
check_command check_nt!UPTIME
随后是定义CPU的负载状况,下面的定义表示在5分钟内的平均负载超过80%则发出警告WARNING,而超过90%则是危机报警CRITICAL alert
check_command check_nt!CPULOAD!-l 5,80,90
定义内存负载状况,当内存使用率达到80则warning 90%则CRITICAL alert
check_command check_nt!MEMUSE!-w 80 -c 90
监控C盘空间,使用率达到80则warning 90%则CRITICAL alert
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
监控服务状态的格式,当服务停止了则发送CRITICAL alert
check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
监控系统进程,当进程处于非运行状态时,则发送CRITICAL alert
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
# 'check_nt' command definition
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
}
在vi /usr/local/nagios/etc/object/templates.cfg中是否有以下内容(这个用于未来添加新主机的时候的范例)
define host{
name windows-server ; The name of this host template
use generic-host ; Inherit default values from the generic-host template
check_period 24x7 ; By default, Windows servers are monitored round the clock
check_interval 5 ; Actively check the server every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each server 10 times (max)
check_command check-host-alive; Default command to check if servers are "alive"
notification_period 24x7 ; Send notification out at any time - day or night
notification_interval 30 ; Resend notifications every 30 minutes
notification_options d,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default
hostgroups windows-servers ; Host groups that Windows servers should be a member of
register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE
}
6.密码设定
编辑/usr/local/nagios/etc/objects/commands.cfg 在check_nt部分中,command_line后面添加一个参数-s "NSClient主机的密码"
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s 123456 -v $ARG1$ $ARG2$
可以通过以下指令测试设备响应是否正常
如果显示为could not fetch information from server,则有以下可能
密码不正确(最傻的可能,也是经常发生的可能)
服务器上有防火墙,需要开放12489端口。
7.重新启动Nagios服务
来验证配置文件是否正确。
重启服务:service nagios restart