Nagiosgraph is a Nagios Addon that parses output and performance data from Nagios plugins and stores the data in RRD files. Nagiosgraph creates graphs and generates HTML pages with graphic reports from the data.
This tutorial is tested on CentOS/RHEL 6.3, and have following Nagios core and plugin package:
Nagios Core: nagios-4.0.0
Nagios Plugin: nagios-plugins-1.4.16
To install Nagios please see my Nagios Installation Docs.
Installation Prerequisite
- Nagios server in working condition.
- We require following packages as well:
yum -y install perl-GD php-gd rrdtool-perl rrdtool-php rrdtool perl-CGI perl-Time-HiRes
Installation
*) Create a directory where you would download nagios software:
mkdir /usr/local/src
cd /usr/local/src
*) Download nagiosgraph package/Untar it and navigate it to that directory
wget http://downloads.sourceforge.net/project/nagiosgraph/nagiosgraph/1.4.4/nagiosgraph-1.4.4.tar.gz
tar -xzvf nagiosgraph-1.4.4.tar.gz
cd nagiosgraph-1.4.4
*) Check for any other Nagiosgraph dependency using "install.pl" script with "check-prereq" options:
./install.pl --check-prereq
checking required PERL modules
Carp...1.11
CGI...3.51
Data::Dumper...2.124
File::Basename...2.77
File::Find...1.14
MIME::Base64...3.08
POSIX...1.17
RRDs...1.3008
Time::HiRes...1.9721
checking optional PERL modules
GD...2.44
checking nagios installation
found nagios at /usr/local/nagios/bin/nagios
checking web server installation
found apache at /usr/sbin/httpd
Note:
*) In case any dependency is missing we need to install it using cpan or yum command.
*) You need to be root to run this script.
There are two ways to install nagiosgraph either automatically or manually.
1) Automated way which install file and set permission automatically
./install.pl --layout overlay --prefix /usr/local/nagios
checking required PERL modules
Carp...1.11
CGI...3.51
Data::Dumper...2.124
File::Basename...2.77
File::Find...1.14
MIME::Base64...3.08
POSIX...1.17
RRDs...1.3008
Time::HiRes... ***FAIL***
checking optional PERL modules
GD...2.44
checking nagios installation
found nagios at /usr/local/nagios/bin/nagios
checking web server installation
found apache at /usr/sbin/httpd
Destination directory (prefix)? [/usr/local/nagios]
Location of configuration files (etc-dir)? [/usr/local/nagios/etc/nagiosgraph]
Location of executables? [/usr/local/nagios/libexec]
Location of CGI scripts? [/usr/local/nagios/sbin]
Location of documentation (doc-dir)? [/usr/local/nagios/docs/nagiosgraph]
Location of examples? [/usr/local/nagios/docs/nagiosgraph/examples]
Location of CSS and JavaScript files? [/usr/local/nagios/share]
Location of utilities? [/usr/local/nagios/docs/nagiosgraph/util]
Location of state files (var-dir)? [/var/nagios]
Location of RRD files? [/var/nagios/rrd]
Location of log files (log-dir)? [/var/nagios]
Path of log file? [/var/nagios/nagiosgraph.log]
Path of CGI log file? [/var/nagios/nagiosgraph-cgi.log]
URL of CGI scripts? [/nagios/cgi-bin]
URL of CSS file? [/nagios/nagiosgraph.css]
URL of JavaScript file? [/nagios/nagiosgraph.js]
Path of Nagios performance data file? [/tmp/perfdata.log]
URL of Nagios CGI scripts? [/nagios/cgi-bin]
username or userid of Nagios user? [nagios]
username or userid of web server user? [apache]
Modify the Nagios configuration? [n]
Modify the Apache configuration? [n]
configuration:
ng_layout overlay
ng_prefix /usr/local/nagios
ng_etc_dir /usr/local/nagios/etc/nagiosgraph
ng_bin_dir /usr/local/nagios/libexec
ng_cgi_dir /usr/local/nagios/sbin
ng_doc_dir /usr/local/nagios/docs/nagiosgraph
ng_examples_dir /usr/local/nagios/docs/nagiosgraph/examples
ng_www_dir /usr/local/nagios/share
ng_util_dir /usr/local/nagios/docs/nagiosgraph/util
ng_var_dir /var/nagios
ng_rrd_dir /var/nagios/rrd
ng_log_dir /var/nagios
ng_log_file /var/nagios/nagiosgraph.log
ng_cgilog_file /var/nagios/nagiosgraph-cgi.log
ng_url /nagios
ng_cgi_url /nagios/cgi-bin
ng_css_url /nagios/nagiosgraph.css
ng_js_url /nagios/nagiosgraph.js
nagios_cgi_url /nagios/cgi-bin
nagios_perfdata_file /tmp/perfdata.log
nagios_user nagios
www_user apache
modify_nagios_config n
nagios_config_file /usr/local/nagios/etc/nagios.cfg
nagios_commands_file /usr/local/nagios/var/rw/nagios.cmd
modify_apache_config n
apache_config_dir /etc/httpd/conf.d
apache_config_file
Continue with this configuration? [y]
OR
2) Manual steps to install Nagiosgraph.
2.1) Create NagiosGraph directory and copy its configuration file in it:
mkdir /usr/local/nagios/etc/nagiosgraph
cp -vr etc /usr/local/nagios/etc/nagiosgraph/
2.2) Change NagiosGraph path in cgi and perl scripts:
sed -i "s#/opt/nagiosgraph/etc#/usr/local/nagios/etc/nagiosgraph/#g" cgi/*cgi
sed -i "s#/opt/nagiosgraph/etc#/usr/local/nagios/etc/nagiosgraph/#g" lib/insert.pl
2.3) Copy cgi scripts to nagios appropriate directory that will be served by the web-server:
cp cgi/*.cgi /usr/local/nagios/sbin
2.4) Copy insert.pl to nagios appropriate directory from which it can be executed:
cp lib/insert.pl /usr/local/nagios/libexec
2.5) Copy CSS and JavaScript files to a nagios directory that would be served by the web server:
cp share/nagiosgraph.css /usr/local/nagios/share
cp share/nagiosgraph.js /usr/local/nagios/share
2.6) In NagiosGraph SSI file, set the URL for nagiosgraph.js,copy it to its appropriate location:
vi share/nagiosgraph.ssi
src="/nagiosgraph/nagiosgraph.js" to src="/nagios/nagiosgraph.js"
cp share/nagiosgraph.ssi /usr/local/nagios/share/ssi/common-header.ssi
2.7) Replace the Nagios action icon with the nagiosgraph graph icon:
cp share/graph.gif /usr/local/nagios/share/images/action.gif
Configuration
Edit Nagiosgraph configuration file and set at least the following parameters:
vi /usr/local/nagios/etc/nagiosgraph/nagiosgraph.conf
perflog = /usr/local/nagios/var/perfdata.log
rrddir = /usr/local/nagios/var/rrd
mapfile = /usr/local/nagios/etc/nagiosgraph/map
nagiosgraphcgiurl = /nagios/cgi-bin
javascript = /nagios/nagiosgraph.js
stylesheet = /nagios/nagiosgraph.css
logfile = /usr/local/nagios/var/nagiosgraph.log
cgilogfile = /usr/local/nagios/var/nagiosgraph-cgi.log
Creating necessary directory and fixing the permissions
Changing the ownership of conf and other necessary file that we have copyied earlier
chown nagios:nagios /usr/local/nagios/etc/nagiosgraph
chown nagios:nagios /usr/local/nagios/sbin
chown nagios:nagios /usr/local/nagios/libexec/insert.pl
chown nagios:nagios /usr/local/nagios/share/nagiosgraph.css /usr/local/nagios/share/nagiosgraph.js
chown nagios:nagios /usr/local/nagios/share/ssi/common-header.ssi
Created RRD directory and set permission of "rrddir" to be writable by *nagios* user and read by *apache* (webserver user).
mkdir /usr/local/nagios/var/rrd
chmod nagios:apache /usr/local/nagios/var/rrd
chmod 755 /usr/local/nagios/var/rrd
Set writeable permissions to user *nagios* for “logfile” config directive:
touch /usr/local/nagios/var/nagiosgraph.log
chown nagios /usr/local/nagios/var/nagiosgraph.log
chmod 644 /usr/local/nagios/var/nagiosgraph.log
Set writeable permissions to user *apache* for “cgilogfile” config directive:
touch /usr/local/nagios/var/nagiosgraph-cgi.log
chown apache /usr/local/nagios/var/nagiosgraph-cgi.log
chmod 644 /usr/local/nagios/var/nagiosgraph-cgi.log
Make sure that the *nagios* user can create and delete perfdata files:
Nagios Configuration
Add the following line at the end of Nagios configuration file:
vi /usr/local/nagios/etc/nagios.cfg
# begin nagiosgraph configuration
# process nagios performance data using nagiosgraph
process_performance_data=1
service_perfdata_file=/tmp/perfdata.log
service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata-for-nagiosgraph
# end nagiosgraph configuration
In the Nagios commands file (commands.cfg) define the process-service-perfdata command at the end:
vi /usr/local/nagios/etc/objects/commands.cfg
# command to process nagios performance data for nagiosgraph
define command {
command_name process-service-perfdata-for-nagiosgraph
command_line /usr/local/nagios/libexec/insert.pl
}
Modify the Nagios sidebar (e.g. /usr/local/nagios/share/side.php) by inserting bullets under the 'Trends' heading:
<li><a href="<?php echo $cfg["cgi_base_url"];?>/trends.cgi" target="<?php echo $link_target;?>">Trends</a>
<ul>
<li><a href="<?php echo $cfg["cgi_base_url"];?>/show.cgi" target="<?php echo $link_target;?>">Graphs</a></li>
<li><a href="<?php echo $cfg["cgi_base_url"];?>/showhost.cgi" target="<?php echo $link_target;?>">Graphs by Host</a></li>
<li><a href="<?php echo $cfg["cgi_base_url"];?>/showservice.cgi" target="<?php echo $link_target;?>">Graphs by Service</a></li>
<li><a href="<?php echo $cfg["cgi_base_url"];?>/showgroup.cgi" target="<?php echo $link_target;?>">Graphs by Group</a></li>
</ul>
</li>
Validation and testing.
Verify Nagios configuration and restart it once every thing is ok
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios restart
Verify that nagiosgraph configuration is working by running showconfig.cgi:
http://localhost/nagios/cgi-bin/showconfig.cgi
OR
http://Server-IP-Address/nagios/cgi-bin/showconfig.cgi
If everything is working up to this point, try graphing some data by running show.cgi:
http://localhost/nagios/cgi-bin/show.cgi
OR
http://Server-IP-Address/nagios/cgi-bin/show.cgi
Note: If you get a 500 internal error and the issue is with Apache. If you get a “no rrd data found” error, then the configuration of nagiosgraph is incorrect.
To test if you configuration is working you can try to run the script directly:
cd /usr/local/nagios/libexec
./insert.pl
To verify that there is some data in the RRD directory:
ls /var/nagios/rrd/
web001 web002 app001 app002 db001 db002
Adding Service to NagiosGraph
Now we need to define an action URL for the services that we want to graph, so that you can click to go directly to the graphs for that service from the Nagios Core web interface.
define service {
name graphed-service
action_url /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$' onMouseOver='showGraphPopup(this)' onMouseOut='hideGraphPopup()' rel='/nagiosgraph/cgi-bin/showgraph.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&period=week&rrdopts=-w+450+-j
}
Then, you can have the services you want graphed inherit from it, as well as from any other templates they use, by adding "graphed-service" to the value for the use directive:
define service {
use generic-service,graphed-service
host_name web001
service_description PING
check_command check_ping!100,10%!200,20%
}
You should do this for all the services for which you want graphing.
Validate the configuration file and reload the Nagios Core server once again:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reload
With this done, visiting the Service section of the web interface should include action icons after each graphed service.
Hi Sachin,
ReplyDeleteI have tried your post but got the below error when tried to run the command ./insert.pl in /usr/local/nagios/libexec/
Can't locate RRDs.pm in @INC (@INC contains: /usr/local/nagios/etc/nagiosgraph /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/local/nagios/etc/nagiosgraph/ngshared.pm line 30.
BEGIN failed--compilation aborted at /usr/local/nagios/etc/nagiosgraph/ngshared.pm line 30.
Compilation failed in require at ./insert.pl line 35.
BEGIN failed--compilation aborted at ./insert.pl line 35.
Can you help me ?
Try installing rrdtool package using and retry it:
ReplyDeleteUbuntu
sudo apt-get install rrdtool librrds-perl
For CentOS/RHEL
yum install rrdtool rrdtool-perl
OR try to install RRD Module from CPAN site.
perl -MCPAN -e 'install RRD::Simple'
Dear Sachin
ReplyDeleteThank you for sharing this nice article, after I followed up your instruction I am getting below error
Can't locate ngshared.pm in @INC (@INC contains: /usr/local/nagios/etc/nagiosgraph/ /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./insert.pl line 35.
BEGIN failed--compilation aborted at ./insert.pl line 35.
then after run the command yum install rrdtool rrdtool-perl, showing its already installed
updates/primary_db | 2.0 MB 00:05
Setting up Install Process
Package rrdtool-1.3.8-6.el6.x86_64 already installed and latest version
Package rrdtool-perl-1.3.8-6.el6.x86_64 already installed and latest version
Nothing to do
please advice
Haneef,
ReplyDeleteTry installing from CPAN.
/ # cpan
Terminal does not support AddHistory.
cpan shell -- CPAN exploration and modules installation (v1.9800)
Enter 'h' for help.
cpan[1]> install RRD::Simple
also
cpan[2]> install GD
Hello all,
ReplyDeletemy configuration is running, but i see that the graph scale does not show the real values of the services that it monitors.
for example it says that the memory being monitored by graph is on the range of KB.
Any idea how can it be fixed?
thanks.
I had tried below steps
ReplyDeleteInstall RRDTOOL using yum
1- rpm -ivh http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
2- yum install rrdtool -y
Thanks a lot Centos tutorials
ReplyDelete[root@tools nagiosgraph-1.4.4]# perl install.pl --check-prereq
ReplyDeletechecking required PERL modules
Carp...1.11
CGI...4.04
Data::Dumper...2.154
File::Basename...2.77
File::Find...1.14
MIME::Base64...3.14
POSIX...1.17
RRDs...1.3001
Time::HiRes...1.9721
checking optional PERL modules
GD... ***FAIL***
checking nagios installation
found nagios at /usr/local/nagios/bin/nagios
checking web server installation
found apache at /usr/sbin/httpd
[root@tools nagiosgraph-1.4.4]# perl install.pl --check-prereq
checking required PERL modules
Carp...1.11
CGI...4.04
Data::Dumper...2.154
File::Basename...2.77
File::Find...1.14
MIME::Base64...3.14
POSIX...1.17
RRDs...1.3001
Time::HiRes...1.9721
checking optional PERL modules
GD... ***FAIL***
checking nagios installation
found nagios at /usr/local/nagios/bin/nagios
checking web server installation
found apache at /usr/sbin/httpd
I am getting an error GD is up to date but I am getting any error GD... ***FAIL*** when I execute the scrip as perl install.pl --check-prereq. Can anyone help me to solve this issue it will highly appreciable. I install all the GD rpm's which are necessary for the GD graph.
[root@tools nagiosgraph-1.4.4]# rpm -qa|grep gd
gdm-2.30.4-52.el6.x86_64
gd-devel-2.0.35-11.el6.x86_64
eggdbus-0.6-3.el6.x86_64
gdb-7.2-60.el6_4.1.x86_64
gd-2.0.35-11.el6.x86_64
libgdata-0.6.4-2.el6.x86_64
gdm-user-switch-applet-2.30.4-52.el6.x86_64
gdb-gdbserver-7.2-60.el6_4.1.x86_64
plymouth-gdm-hooks-0.8.3-27.el6.x86_64
gdm-plugin-smartcard-2.30.4-52.el6.x86_64
gdbm-devel-1.8.0-36.el6.x86_64
php-gd-5.3.3-26.el6.x86_64
gdm-libs-2.30.4-52.el6.x86_64
gdm-plugin-fingerprint-2.30.4-52.el6.x86_64
gdbm-1.8.0-36.el6.x86_64
pulseaudio-gdm-hooks-0.9.21-14.el6_3.x86_64
gdisk-0.8.10-1.el6.x86_64
[root@tools nagiosgraph-1.4.4]# rpm -qa|grep perl-gd
[root@tools nagiosgraph-1.4.4]# rpm -qa|grep perl-GD
perl-GDGraph-1.44-7.el6.noarch
perl-GD-Barcode-1.15-6.el6.noarch
perl-GDGraph3d-0.63-12.el6.noarch
perl-GD-2.44-3.el6.x86_64
perl-GDTextUtil-0.86-15.el6.noarch
perl-GD-Graph3d-0.63-3.el6.noarch
perl-GDGraph-histogram-1.1-1.sdl6.noarch
[root@tools nagiosgraph-1.4.4]# rpm -qa|grep php-gd
php-gd-5.3.3-26.el6.x86_64
[root@tools nagiosgraph-1.4.4]#
Please help me solve this issue.
Thanks
Shahabuddin
RRD is already installed there.
ReplyDelete[root@tools nagiosgraph-1.4.4]# rpm -qa | grep rrdtool
perl-rrdtool-1.4.7-1.el5.rf.x86_64
rrdtool-1.4.7-1.el5.rf.x86_64
rrdtool-devel-1.4.7-1.el5.rf.x86_64
[root@tools nagiosgraph-1.4.4]# rpm -qa | grep rrdutils
rrdutils-5.2.1-1.el6.rf.noarch
[root@tools nagiosgraph-1.4.4]#
GD is already installed by CPAN command.
ReplyDelete[root@tools nagiosgraph-1.4.4]# perl -MCPAN -e shell
cpan shell -- CPAN exploration and modules installation (v2.10)
Enter 'h' for help.
cpan[1]> install GD::Graph
CPAN: Storable loaded ok (v2.20)
Reading '/root/.cpan/Metadata'
Database was generated on Mon, 30 Mar 2015 06:17:02 GMT
CPAN: Module::CoreList loaded ok (v2.18)
GD::Graph is up to date (1.49).
cpan[2]> exit
Lockfile removed.
insert.pl scrip giving no error on executing.
ReplyDelete[root@tools nagiosgraph-1.4.4]# /usr/local/nagios/libexec/insert.pl
[root@tools nagiosgraph-1.4.4]#
[root@Nagios1 rrd]# chmod nagios:apache /usr/local/nagios/var/rrd
ReplyDeletechmod: invalid mode: `nagios:apache'
Try `chmod --help' for more information.
I have added the below to service.cfg file
ReplyDeletedefine service {
name graphed-service
action_url /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$' onMouseOver='showGraphPopup(this)' onMouseOut='hideGraphPopup()' rel='/nagiosgraph/cgi-bin/showgraph.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&period=week&rrdopts=-w+450+-j
}
but when i restart the nagios i have below error
Error: Service has no hosts and/or service_description (config file '/usr/local/nagios/etc/services.cfg', starting on line 315)
Error processing object config files!
can you help me here
You should add the following lines into templates.cfg file. Bty, you were missing the "register 0".
Deletedefine service{
name nagiosgraph
action_url /nagios/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$' onMouseOver='showGraphPopup(this)' onMouseOut='hideGraphPopup()' rel='/nagiosgraph/cgi-bin/showgraph.
cgi?host=$HOSTNAME$&service=$SERVICEDESC$&period=week&rrdopts=-w+450+-j
register 0
}
Hope this helps!
hai after adding the service
ReplyDelete(No output on stdout) stderr: i got the error. Kindly suggest
I enter the service in nagiosql servicetemplates.cfg
Hi all,
ReplyDeleteI have install the nagiosgraph in nagios... Its working fine...
I am able to see the graph of those machines which are added in before the installation of nagiosgraph.
so the problem is that the it wont add the host and services of the machines which I have deployed after the installation of the nagiosgraph
http://10..100./nagiosgraph/cgi-bin/show.cgi
ReplyDeletenot The requested URL /nagiosgraph/cgi-bin/show.cgi was not found on this server.
Apache/2.2.15 (CentOS) Server at 10.80.100.120 Port 80
what could be the problem please help
logs are generating in rrd tool but am not able to access from web kindly help
Delete
ReplyDeleteWell done! It is so well written and interactive. Keep writing such brilliant piece of work. Glad i came across this post. Last night even i saw similar wonderful DevOps tutorial on youtube so you can check that too for more detailed knowledge on DevOps.https://www.youtube.com/watch?v=4AJoRkjm998