Saturday, 29 September 2012

How to install nagios in rhel 6.3 / centos 6.3

This guide is intended to provide you with simple instructions on how to install Nagios from source (code) on Fedora and have it monitoring your local machine inside of 20 minutes. No advanced installation options are discussed here - just the basics that will work for 95% of users who want to get started.
These instructions were written based on a standard RHEL 6.3 Linux distribution. 

What You'll End Up With
If you follow these instructions, here's what you'll end up with:
  • Nagios and the plugins will be installed underneath /usr/local/nagios
  • Nagios will be configured to monitor a few aspects of your local system (CPU load, disk usage, etc.)
  • The Nagios web interface will be accessible at http://localhost/nagios/
During portions of the installation you'll need to have root access to your machine.
Make sure you've installed the following packages on your Fedora installation before continuing.
  • Apache
  • PHP
  • GCC compiler
  • GD development libraries
You can use yum to install these packages by running the following commands (as root):
yum install httpd php

yum install gcc glibc glibc-common

yum install gd gd-devel 
gd-devel is not available in default package so download from here. 
While installing it throws dependency errors. 
Just install those dependency through yum after that install this gd-devel rpm
1) Create Account Information
Become the root user.
su -l

Create a new nagios user account and give it a password.
/usr/sbin/useradd -m nagios

passwd nagios
Create a new nagcmd group for allowing external commands to be submitted through the web interface. Add both the nagios user and the apache user to the group.
/usr/sbin/groupadd nagcmd

/usr/sbin/usermod -a -G nagcmd nagios

/usr/sbin/usermod -a -G nagcmd apache
2) Download Nagios and the Plugins
Create a directory for storing the downloads.
mkdir ~/downloads

cd ~/downloads
Download the source code tarballs of both Nagios and the Nagios plugins (visit for links to the latest versions).

3) Compile and Install Nagios

Extract the Nagios source code tarball.
cd ~/downloads

tar xzf nagios-3.2.3.tar.gz

cd nagios-3.2.3
Run the Nagios configure script, passing the name of the group you created earlier like so:
./configure --with-command-group=nagcmd
Compile the Nagios source code.
make all
Install binaries, init script, sample config files and set permissions on the external command directory.
make install

make install-init

make install-config

make install-commandmode

Don't start Nagios yet - there's still more that needs to be done...

4) Customize Configuration

Sample configuration files have now been installed in the /usr/local/nagios/etc directory. These sample files should work fine for getting started with Nagios. You'll need to make just one change before you proceed...
Edit the /usr/local/nagios/etc/objects/contacts.cfg config file with your favorite editor and change the email address associated with the nagiosadmin contact definition to the address you'd like to use for receiving alerts.
vi /usr/local/nagios/etc/objects/contacts.cfg

5) Configure the Web Interface

Install the Nagios web config file in the Apache conf.d directory.
make install-webconf

Create a nagiosadmin account for logging into the Nagios web interface. Remember the password you assign to this account - you'll need it later.
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Restart Apache to make the new settings take effect.
service httpd restart

Note: Consider implementing the ehanced CGI security measures described here 
to ensure that your web authentication credentials are not compromised. 
[root@station1 ~]# htdigest -c /usr/local/nagios/etc/.digest_pw "Nagios Access" \ 
Adding password for nagiosadmin in realm Nagios Access.
New password: 
Re-type new password: 
[root@station1 ~]# vim /etc/httpd/conf.d/nagios.conf 
  9 ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
 11 <Directory "/usr/local/nagios/sbin">
 12    SSLRequireSSL
 13    Options ExecCGI
 14    AllowOverride None
 15    Order allow,deny
 16 #   Allow from all
 17 #  Order deny,allow
 18 #  Deny from all
 19    Allow from
 20    AuthName "Nagios Access"
 21    AuthType Digest
 22    AuthUserFile /usr/local/nagios/etc/.digest_pw
 23    Require valid-user
 24 </Directory>
 26 Alias /nagios "/usr/local/nagios/share"
 28 <Directory "/usr/local/nagios/share">
 29    SSLRequireSSL
 30    Options None
 31    AllowOverride None
 32    Order allow,deny
 33 #   Allow from all
 34 #  Order deny,allow
 35 #  Deny from all
 36    Allow from
 37    AuthName "Nagios Access"
 38    AuthType Digest
 39    AuthUserFile /usr/local/nagios/etc/.digest_pw
 40    Require valid-user
 41 </Directory>

6) Compile and Install the Nagios Plugins
Extract the Nagios plugins source code tarball.
cd ~/downloads

tar xzf nagios-plugins-1.4.11.tar.gz

cd nagios-plugins-1.4.11

Compile and install the plugins.
./configure --with-nagios-user=nagios --with-nagios-group=nagios


make install

7) Start Nagios

Add Nagios to the list of system services and have it automatically 
start when the system boots.
chkconfig --add nagios

chkconfig nagios on

Verify the sample Nagios configuration files.
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

If there are no errors, start Nagios.
service nagios start

8) Modify SELinux Settings
Fedora ships with SELinux (Security Enhanced Linux) installed and in Enforcing mode by default. This can result in "Internal Server Error" messages when you attempt to access the Nagios CGIs.
See if SELinux is in Enforcing mode.
Put SELinux into Permissive mode.
setenforce 0
To make this change permanent, you'll have to modify the settings in /etc/selinux/config and reboot.
Instead of disabling SELinux or setting it to permissive mode, you can use the following command to run the CGIs under SELinux enforcing/targeted mode:
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/

chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
For information on running the Nagios CGIs under Enforcing mode with a targeted policy, visit the Nagios Support Portal or Nagios Community Wiki.

9) Login to the Web Interface

You should now be able to access the Nagios web interface at the URL below. You'll be prompted for the username (nagiosadmin) and password you specified earlier.

Click on the "Service Detail" navbar link to see details of what's being monitored on your local machine. It will take a few minutes for Nagios to check all the services associated with your machine, as the checks are spread out over time.

10) Other Modifications

Make sure your machine's firewall rules are configured to allow access to the web server if you want to access the Nagios interface remotely.
Configuring email notifications is out of the scope of this documentation. While Nagios is currently configured to send you email notifications, your system may not yet have a mail program properly installed or configured. Refer to your system documentation, search the web, or look to the Nagios Support Portal or Nagios Community Wiki for specific instructions on configuring your system to send email messages to external addresses. More information on notifications can be found here.

11) You're Done

Congratulations! You sucessfully installed Nagios.


How to monitor locally available pc's
[root@station1 ~]# vim /usr/local/nagios/etc/objects/localhost.cfg
25 define host{
26 use linux-server ; Name of host template to use
27 ; This host definition will inherit all variables that are defined
28 ; in (or inherited by) the linux-server host template definition.
29 host_name station1
30 alias Ranjihat
31 address
32 }
34 define host{
35 use linux-server ; Name of host template to use
36 ; This host definition will inherit all variables that are defined
37 ; in (or inherited by) the linux-server host template definition.
38 host_name station2
39 alias station2
40 address
41 }

54 define hostgroup{
55 hostgroup_name linux-servers ; The name of the hostgroup
56 alias Linux Servers ; Long name of the group
57 members station1,station2 ; Comma separated list of hosts that belong to this group
58 }

73 define service{
74 use local-service ; Name of service template to use
75 host_name station1,station2
76 service_description PING
77 check_command check_ping!100.0,20%!500.0,60%
78 }

ll'y add station2 in all define service tags as shown above.
Check your cfg file.
[root@station1 ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
If no error. Then restart your nagios
[root@station1 ~]# service nagios restart
Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.
 In screenshot you can see nagios monitoring a client Pc station2.
 Your journey into monitoring is just beginning. You'll no doubt want to monitor more than just your local machine, so check out the following docs...


  1. step 6 is not working; getting
    check http.c:312 error: 'ssl version' undeclared
    and web page starts but links do not work.

    did we need to install a ssl package first

    1. How can i get those that i'm missing??

      [root@Hydra Descargas]# rpm -ivh gd-devel-2.0.35-10.el6.x86_64.rpm
      advertencia:gd-devel-2.0.35-10.el6.x86_64.rpm: CabeceraV3 RSA/SHA256 Signature, ID de clave c105b9de: NOKEY
      error: Error de dependencias:
      fontconfig-devel se necesita para gd-devel-2.0.35-10.el6.x86_64
      freetype-devel se necesita para gd-devel-2.0.35-10.el6.x86_64
      libX11-devel se necesita para gd-devel-2.0.35-10.el6.x86_64
      libXpm-devel se necesita para gd-devel-2.0.35-10.el6.x86_64
      libjpeg-devel se necesita para gd-devel-2.0.35-10.el6.x86_64
      libpng-devel se necesita para gd-devel-2.0.35-10.el6.x86_64

    2. Hi Anonymous,

      Try this

      configure yum first and type " yum install gd-devel-2.0.35-10.el6.x86_64.rpm" your dependencies will be automatically installed.

  2. fixed for my config; plugins were v 1.4.16
    1. install openssl-devel
    2. add --with-openssl=/usr/bin/openssl switch to the ./configure command
    3. Had selinux turned off, had to turn off again?

    Thanks for the write-up. Got me started.

  3. works !
    thanx !

  4. Nagios installed successfully but in browser getting the bellow error

    Not Found

    The requested URL /nagios was not found on this server.

  5. thx you goooooooooooood!