Nagios对Windows机器的监控
监控方法的选择
其实Nagios对服务器的监控方法有很多,但大体上可以分为三种:
1. 通过snmp协议编写脚本使用snmpwalk或snmpget等client程序对远程主机进行数据的抓取
2. 走c/s方式,通过特定的客户端用他们自己的协议对服务器进行数据抓取,这一类需要在目标服务器上安装服务器端(即Listener),服务器端通过自己的程序对服务器上的数据进行收集(wmi,vbscript),***再由nagios服务器上的客户端来取数据。这类的代表应用有NSClient++,pNSClient,nrpe_nt等等
3. 还是走c/s方式,只不过这次nagios本机变成了服务器端,目标监控服务器上通过安装客户端向nagios服务器推送本机的相关数据。这类的代表应用有NSCA等
鉴于我需要用到performance data来使用pnp进行绘图,而本人编程能力非常有限,再加上我是个非常懒的SA。所以,我选择了上面的第二类方式对我的所有Windows服务器进行监控,选择的应用是NSClient++。
NSClient++
NSClient++是针对Windows操作系统的一款简单但是功能强大又安全的监控服务器端,同时兼容了NSClient/NRPE/NSCA三种方式。它能监控cpu,内存,硬盘,进程,服务状态,性能计数器等等。NSClient++提供的CheckCommands
#p#
服务器端配置
安装NSClient++
下载NSClient++
将下载的压缩包解压到任意路径,这里举例解压到D盘根目录并重命名为NSClient。从命令行进行安装
- D:\>”NSClient\NSClient++.exe” -install
安装成功会看到下面两行提示
- Service NSClientpp installed…
- l NSClient++.cpp(224) Service installed!
修改配置文件
编辑nsc.ini,只针对需要修改的地方
- [modules]
- FileLogger.dll
- CheckSystem.dll
- CheckDisk.dll
- NSClientListener.dll
- NRPEListener.dll
- CheckEventLog.dll
- CheckHelpers.dll
- CheckWMI.dll
- CheckExternalScripts.dll
- LUAScript.dll
- CheckTaskSched.dll
- [Settings]
- #允许访问的主机IP,多个主机用,分隔
- allowed_hosts=127.0.0.1/32
- #使用此ini文件作为配置文件
- use_file=1
- [log]
- file=nsclient.log
- date_mask=%Y-%m-%d %H:%M:%S
- root_folder=exe
- [NSClient]
- #允许访问的主机IP,多个主机用,分隔
- allowed_hosts=127.0.0.1/32
- #监听端口
- port=5666
- socket_timeout=30
- [NRPE]
- #监听端口
- port=5667
- command_timeout=60
- #不使用ssl,否则容易出错
- use_ssl=0
- #允许访问的主机IP,多个主机用,分隔
- allowed_hosts=127.0.0.1/32
- socket_timeout=30
- #启用performance_data(关键,就看着他画图呢)
- performance_data=1
- [NRPE Handlers]
- #定义NRPE的命令
- #监测内存
- check_mem=inject checkMem MaxWarn=80% MaxCrit=90% ShowAll=long type=physical
编辑完成以后保存关闭,然后在Windows的服务里面找到新装的NSClientpp服务,启动它。
#p#
客户端配置(即nagios监控机)
修改commands.cfg,增加使用NSClient和NRPE收集数据的命令,因为NSClient监测到的内存大小都大于实际的物理内存(估计可能是总计),所以使用NRPE监测内存
- # ‘check_remote_nt_disk’ command definition,监测硬盘使用量
- define command{
- command_name check_remote_nt_disk
- command_line $USER1$/check_nt -H $ARG1$ -p $ARG2$ -v $ARG3$ -l $ARG4$ -w $ARG5$ -c $ARG6$
- }
- # ‘check_remote_nt_cpu’ command definition,监测cpu负载
- define command{
- command_name check_remote_nt_cpu
- command_line $USER1$/check_nt -H $ARG1$ -p $ARG2$ -v $ARG3$ -l $ARG4$
- }
- # ‘check_nt_mem_nrpe’ command definition,监测内存使用量
- define command{
- command_name check_nt_mem_nrpe
- command_line $USER1$/check_nrpe -H $ARG1$ -n -p $ARG2$ -c $ARG3$
- }
- # ‘check_avg_disk_queue’ command definition,监测硬盘读写队列
- define command{
- command_name check_avg_disk_queue
- command_line $USER1$/check_nt -H $ARG1$ -p $ARG2$ -v $ARG3$ -l $ARG4$ -d $ARG5$ -w $ARG6$ -c $ARG7$
- }
修改localhost.cfg中service定义里面的check_command
- define service{
- use web-service,service-pnp
- host_name web1
- service_description disk-d
- check_command check_remote_nt_disk!10.10.10.11!5666!USEDDISKSPACE!d!85!90
- }
- define service{
- use web-service,service-pnp
- host_name web1
- service_description mem
- check_command check_nt_mem_nrpe!10.10.10.11!5667!check_mem
- }
- define service{
- use web-service,service-pnp
- host_name web4
- service_description avg-disk-queue
- check_command check_avg_disk_queue!10.10.10.24!5666!COUNTER!”\\PhysicalDisk(_Total)\\Avg. Disk Queue Length”,”%.2f”!SHOWALL!14!28
- }
修改完以后重新配置nagios使配置生效
- #/etc/init.d/nagios reload
至此所有配置完成。
【编辑推荐】