-
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://iyubo.blogbus.com/logs/37628541.html
监控方法的选择
其实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
服务器端配置
安装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服务,启动它。
客户端配置(即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
至此所有配置完成
参考文档
http://trac.nakednuns.org/nscp/wiki随机文章:
Add Performance Data Output For PNP 2009-04-09Nagios升级到3.0.6 2009-04-03利用Nagios实现服务器监控(下) 2008-05-27利用Nagios实现服务器监控(中) 2008-05-27利用Nagios实现服务器监控(上) 2008-05-27
收藏到:Del.icio.us
Add Performance Data Output For PNP
Blog:What Kevin is Thinking2009-04-09 15:00:23








