PNP is an addon to nagios which analyzes performance data provided by plugins and stores them automatically into RRD-databases. We are going to configure pnp4nagios to run as bulk mode
System Requirements:
Nagios
Installing dependencies
apt-get install perl rrdtool librrds-perl php5-gd
Enabling mod_rewrite module in apache
cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/
/etc/init.d/apache2 restart
Downloading and compiling pnp4nagios
mkdir ~/downloads
cd ~/downloads
wget http://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.10.tar.gz
tar zxvf pnp4nagios-0.6.10.tar.gz
cd pnp4nagios-0.6.10
./configure
Configure default options
Following default option you will see after running configure command
*** Configuration summary for pnp4nagios-0.6.10 12-14-2010 ***
General Options:
------------------------- -------------------
Nagios user/group: nagios nagios
Install directory: /usr/local/pnp4nagios
HTML Dir: /usr/local/pnp4nagios/share
Config Dir: /usr/local/pnp4nagios/etc
Location of rrdtool binary: /usr/bin/rrdtool Version 1.4.3
RRDs Perl Modules: FOUND (Version 1.4003)
RRD Files stored in: /usr/local/pnp4nagios/var/perfdata
process_perfdata.pl Logfile: /usr/local/pnp4nagios/var/perfdata.log
Perfdata files (NPCD) stored in: /usr/local/pnp4nagios/var/spool
Web Interface Options: ------------------------- -------------------
HTML URL: http://localhost/pnp4nagios
Apache Config File: /etc/apache2/conf.d/pnp4nagios.conf
Review the options above for accuracy. If they look okay,
type 'make all' to compile.
Installing pnp4nagios
make all
make install
make install-webconf
make install-config
Changing nagios.cfg to work with pnp4nagios
We need to add following line in nagios.cfg
process_performance_data=1
#
# service performance data
#
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
#
# host performance data starting with Nagios 3.0
#
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
To make life easier I have created a script which will do all this work
touch /root/nagios_pnp4nagios.sh
Copy following lines in /root/nagios_pnp4nagios.sh file
#!/bin/bash
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#Enabling process_performance data
sed -i 's/process_performance_data=0/#process_performance_data=0/g' /usr/local/nagios/etc/nagios.cfg
#Configuring nagios for pnp4nagios
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo '#pnp4nagios configuration start' >> /usr/local/nagios/etc/nagios.cfg
echo 'process_performance_data=1' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo '#' >> /usr/local/nagios/etc/nagios.cfg
echo '# service performance data' >> /usr/local/nagios/etc/nagios.cfg
echo '#' >> /usr/local/nagios/etc/nagios.cfg
echo 'service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo 'service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo 'service_perfdata_file_mode=a' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo 'service_perfdata_file_processing_interval=10' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo 'service_perfdata_file_processing_command=process-service-perfdata-file' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo '#' >> /usr/local/nagios/etc/nagios.cfg
echo '# host performance data' >> /usr/local/nagios/etc/nagios.cfg
echo '# ' >> /usr/local/nagios/etc/nagios.cfg
echo 'host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo 'host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo 'host_perfdata_file_mode=a' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo 'host_perfdata_file_processing_interval=10' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo 'host_perfdata_file_processing_command=process-host-perfdata-file' >> /usr/local/nagios/etc/nagios.cfg
echo '' >> /usr/local/nagios/etc/nagios.cfg
echo '#pnp4nagios configuration end' >> /usr/local/nagios/etc/nagios.cfg
Make the file executable and run to do the changes
chmod 777 /root/nagios_pnp4nagios.sh
/root/nagios_pnp4nagios.sh
Making necessary changes in /usr/local/nagios/etc/objects/commands.cfg
Note: if you have followed my previous article of nconf on ubuntu you need to add new checkcommands in NConf portal
Add following lines in /usr/local/nagios/etc/objects/commands.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
}
Now everything is done. You need to restart apache and nagios to run with new changes
/etc/init.d/nagios restart
/etc/init.d/apache2 restart
Open pnp4nagios webpage by entering http://localhost/pnp4nagios/ in your browser. If everything goes well you will get following screen.

You need to delete install.php file.
rm -rf /usr/local/pnp4nagios/share/install.php
After few minutes just check http://localhost/pnp4nagios/ You should get some graphs.