1、安装rrd-tools和libtime-hires-perl
#apt-get install rrdtool libtime-hires-perl
2、安装PNP4
#wget http://jaist.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.17.tar.gz
# tar zxvf pnp4nagios-0.6.17.tar.gz
# cd pnp4nagios-0.6.17
#./configure --with-nagios-user=nagios --with-nagios-group=nagios
#make all
#make install
#make install-webconf
#make install-config
#make install-init
重启httpd服务
#/etc/init.d/apache2 restart
在浏览器中访问如下地址:
http://10.11.1.1/pnp4nagios/index.php
注意,我这里出了一个错,是因为我的nagios的密码配置文件为htpasswd,而pnp4nagios查找的是htpasswd.uers,所以我还得生成一个htpasswd.users的问题,各位根据
实际情况操作即可:
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
然后重启apache2即可访问。
增加npcd服务,并开机启动
#chkconfig --add npcd
#chkconfig npcd on
去除自检页面
#mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php.bak
3、配置pnp4nagios
pnp4nagios有4种工作模式: synchronous模式、bulk模式、带npcd的bulk模式和带npcdmod的bulk模式。
4种模式的区别:
synchronous模式: 及时模式,最简单,也是最容易配置的一种模式,nagios在检测过每一个主机或者服务时,会调用perl脚本process_perfdata.pl来处理获得perfdata数据,此种模式能处理1000个以下,且检测间隔为5分钟的服务。
bukl模式: 集中处理模式,nagios会将需要的数据写入一个临时文件中, 然后再通过nagios调用process_perfdata.pl来一次性处理。这种模式性能比第一种高一些,但是也同带来一些风险,nagios会block。
带npcd的bulk模式: 定时将perfdata文件mv为一个带时间戳的文件,然后由npcd进程在对mv的perfdata进行处理。此模式性能比较高,并且和nagios独立,不会影响nagios的性能。
带npcdmod的bulk模式: 和第三种类似,不过使用了nagios嵌入模块完成。
这里我使用的是第二种模式,所以只写了第二种模式的配置方式:
3.1 修改/usr/local/nagios/etc/nagios.cfg配置文件,将process_performance_data 的值改为1
然后在nagios.cfg配置文件下边加入如下配置:
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file
# *** the template definition differs from the one in the original nagios.cfg
#
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file
3.2 修改/usr/local/nagios/etc/objects/command.cfg,在文件最后插入:
define command{
command_name process-service-perfdata-file
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/service-perfdata
}
define command{
command_name process-host-perfdata-file
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/host-perfdata
}
将原来定义的这两项注释掉
3.3 修改/usr/local/nagios/etc/objects/templates.cfg
define host {
name host-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=_HOST_
register 0
}
define service {
name srv-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
register 0
}
3.4 修改/usr/local/pnp4nagios/etc/process_perfdata.cfg文件
将TIMEOUT = 15改为TIMEOUT = 30
3.5 修改/usr/local/pnp4nagios/etc/config_local.php文件
将#$views[] = array('title' => 'One Hour', 'start' => (60*60) );前边的#注释掉
3.6 修改nagios的hosts文件和service文件,分别在use处加上host-pnp和srv-pnp
重启nagios即可