PNP它是基于PHP和PERL,利用rrdtool将Nagios采集的数据绘制成图表。如果你要安装PNP,那么准备工作有如下3项:
1、安装Perl
2、安装rrdtools(需要cgilib库的支持)
3、整合Apache和PHP
rpm -qa |grep perl  检查是否安装了perl这个包,这里使用的是系统自带的perl
 tar xzvf cgilib-0.5.tar.gz  先将cgilib进行解压
rpm -qa |grep lib
rpm -qa |grep libpng
rpm -qa |grep freetype
rpm -qa |grep libart_lgpl  查看需要使用的库是否安装
cd cgilib-0.5   进入到cgilib目录
make    进行编译
cp libcgi.a /usr/local/lib  
cp cgi.h /usr/include/  拷贝这两个文件,为rrdtool编译需要的
tar xzvf rrdtool-1.2.6.tar.gz 将rrdtool进行解压
cd rrdtool-1.2.6   进入rrdtools目录
./configure    进行配置
make;make install  然后再编译和安装
ls /usr/local/rrdtool-1.2.6/ 查看安装目录是否有
bin  examples  include  lib  man  share  shared 应该有这些目录才正至此rrdtool安装成功
 tar xzvf php-5.2.5.tar.gz  将php解压
cd php-5.2.5   进入php目录
./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-apxs2=/usr/local/apache2/bin/apxs  将php进行配置指定使用gd和zlib库安装到/usr/local/php5
make;make install  对php进行编译和安装
cp php.ini-dist /usr/local/php5/php.ini 将php配置文件复制到安装目录
vi /usr/local/apache2/conf/httpd.conf 编辑apache的目录,
LoadModule php5_module        modules/libphp5.so 确保没被注释
并添加两行将php和apache结合
AddType application/x-httpd-php .php .php3 .htm .phtml .php4
AddType application/x-httpd-php-source .phps
为php添加首页
DirectoryIndex default.php default.phtml default.php3 default.html default.htm 添加index.php
cd /usr/local/apache2/htdocs/ 进入到apache文档目录
vi index.php   创建一个index.php文档内容为
<?
  phpinfo();
?>
保存退出
[url]http://ip/index.php[/url]  访问检验是否打开正常,正常会有一个php信息的页面
Nagios提供的数据接口,也就是PNP的数据来源。在定义host或service中都有一个定义项,名为process_perf_data,其值可以定义为0或1,其作用是是否启用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就会调用相应的命令来输出数据了。Nagios的command定义中默认有一项“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的软件包
./configure --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata/
make all
make install
make install-config

 
安装结束之后,再去检查一下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
 
在浏览器的地址栏中输入:

FAQ:

1 、为什么/usr/local/nagios/share/perfdata/目录中生成不出数据

嘿嘿,确实是因为权限问题。因为当时装好 PNP 时太性急了,看到 PERFDATA 目录没有生成数据就自己手动创建了两个主机名称的目录,(因为 RRDTOOL 需要过一会才会创建数据)
[root@pnp perfdata]# ll
total 8
drwxr-xr-x 2 root root 4096 Mar 17 21:15 cacti
drwxr-xr-x 2 root root 4096 Mar 17 21:16 nagios-server
而创建这两目录所属用户和组成了 root 所以说 nagios 跑的是 nagios 用户怎么有权限写入到 root 权限的目录中呢。
所以才创建不出数据。
[root@pnp perfdata]# chown nagios.nagios cacti
[root@pnp perfdata]# ll
total 8
drwxr-xr-x 2 nagios nagios 4096 Mar 17 21:15 cacti
[root@pnp perfdata]# cd cacti/
[root@pnp cacti]# ls
check-tcp-8008.rrd  check-tcp-8008.xml
哈哈,数据出来了,唉只怪自己太大意了

 

2 、为什么/usr/local/nagios/share/perfdata目录中还是没有数据生成,

解决方法:安装pnp的时候是否make install-config安装了模板安装了这些模板后进入/usr/local/nagios/etc/pnp目录中去掉后面的扩展。

    是否在services.cfg文件中为服务添加了 process_perf_data 1

这一项。否则不会生成数据的

 

我们在做完上面的这些后发现还是没有数据产生,这时你就要等五分到十分钟。因为pnp需要这么久才能产生数据,才能出图。

 

如果只是个别服务不出图,就要查看# ls /usr/local/nagios/share/pnp/templates.dist/ 这个目中是否有这个服务,如果没有则不可以出图。此处相当于是rrd数据的源模板