Nagios的性能分析图表

Nagios
监控的侧重点在此时服务是否正常,是一个瞬时状态。通过对这个状态的监控和告警,管理员可以第一时间对主机或者服务的故障做处理。但是我 们往往也非常关心主机的性能以及服务的响应时间等情况,这些情况是一个持续的变化曲线,并非一个实时的值,如果通过查看日志数据来分析的话,既繁琐有抽 象,所以,我们希望Nagios可以帮我们做这份工作,然后将报表提交给我们,这样就非常方便了。这就是我今天要介绍的Nagios的相关开源项目—— PNPhttp://ederdrom.de/doku.php/nagios/pnp_en)。

PNP
是一个小巧的开源软件包,它是基于PHPPERL,利用rrdtoolNagios采集的数据绘制成图表。如果你要安装PNP,那么准备工作有如下3项:

1
、整合ApachePHP(本文使用版本:Apache 2.2.3  PHP 5.1.6
2
、安装rrdtools (本文使用版本:RRDTools 1.2.23
3
、安装Perl (本文使用版本: Perl5

关于这3项工作的方法,网络上有很多精彩的文章介绍,我就不多说了,下面介绍一下PNP的工作原理,顺便将安装配置的内容也描述如下。

要介绍PNP工作原理,首先要说明一下Nagios提供的数据接口,也就是PNP的数据来源。在前面的文章中,我提到过,在定义hostservice 中都有一个定义项,名为process_perf_data,其值可以定义为01,其作用是是否启用Nagios的数据输出功能。如果你将此项赋值为 1,那么Nagios就会将收集的数据写入到某个文件中,以备提取。所以,如果你想让Nagios将数据输出的话,首先要将Nagios的主配置文件 nagios.cfg中相关的配置修改:
 
代码:
process_performance_data=1
service_perfdata_command=process-service-perfdata  #默认此句被注释掉了
如果想要对某个监控对象做数据图表,则需在所对应的host或者service定义中(一般写在hosts.cfg或者services.cfg文件中),包含如下的定义:
 
代码:
process_perf_data 1
这 样,Nagios就会调用相应的命令来输出数据了。Nagioscommand定义中默认有一项“process-service- perfdata”,该命令声明了Nagios输出哪些值到输出的文件中。不过其定义相对简单,PNP提供了一个perl脚本,更详尽的定义了一个输出数 据的方法。如果要使用PNP的话,我们需要在command的定义中,将“process-service-perfdata”命令对应的执行命令行的内 容替换成该脚本:
 
代码:
define command{
command_name process-service-perfdata
command_line /usr/local/nagios/libexec/process_perfdata.pl
}
这样设置了之后,Nagios就会利用PNP提供的脚本进行相关的工作了。

细心的看管大概已经发现了,刚刚定义命令时用到的脚本“process_perfdata.pl”现在还不存在。我们现在就来安装,也就PNP的软件包 (本文用的版本是pnp-0.3.3.tar.gz)。安装方法很简单,过程也很顺利(我的系统安装时选择了开发工具,谢天谢地!)
 
代码:
./configure --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata/
make all
make install
安装结束之后,再去检查一下Nagios的插件目录(libexec),就会发现多了一个名为“process_perfdata.pl”的脚本。

ok
,现在执行一下Nagios配置检查命令
 
代码:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果没有什么错误,那么我们重新启动Nagios
 
代码:
/etc/init.d/nagios restart
验收一下成果,在浏览器的地址栏中输入:

http://IP/nagios/pnp/