Monday, September 14, 2015

Step by Step Nagios Installation and Configuration


Nagios is an awesome Open Source monitoring tool, its provides you more comprehensive monitoring environment to always keep an eye on your all machines / networks whether you are in  your data center or just your small labs.

With Nagios, you can monitor your remote hosts and their services remotely on a single window. It shows warnings and indicates if something goes wrong in your servers which eventually helps us to detect some problems before they occur. It helps us to reducedowntime and business losses.

This tutorial explains how to install and configure the Nagios tool on Linux. I am using RHEL 5.8 for installation Nagios.
Before installation of Nagios some prerequisites are required to resolve the dependencies of Nagios.
1.    Install required dependencies:
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 RHEL5.8 installation before continuing installation of Nagios 4.0.1.
  • Apache
  • PHP
  • GCC compiler
  • GD development libraries
You can use yum default package installer to install these packages by running the following commands (as root):
[root@RHEL5 ~]#yum install httpd php
[root@RHEL5 ~]#yum install gcc glibc glibc-common
[root@RHEL5 ~]#yum install gd gd-devel
[root@RHEL5 ~]#yum install make net-snmp

2.    Create Nagios user and Group:

[root@RHEL5 ~]# useradd nagios
[root@RHEL5 ~]# passwd nagios
Changing password for user nagios.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

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.

[root@RHEL5 ~]# groupadd nagcmd
[root@RHEL5 ~]# /usr/sbin/usermod -a -G nagcmd nagios
[root@RHEL5 ~]# /usr/sbin/usermod -a -G nagcmd apache

3.    Download Nagios Core 4.0.1 and Nagios Plugin 1.5
Create a directory for your Nagios installation and all its future downloads.
[root@RHEL5 ~]# mkdir /root/downloads
[root@RHEL5 ~]# cd /root/downloads

Now download latest Nagios Core 4.0.1 and Nagios plugins 1.5 packages with wget command.


4.    Extract Nagios Core and its Plugins:

We need to extract the downloaded packages with tar command.

[root@RHEL5 downloads]# tar -xzvf nagios-4.0.1.tar.gz
[root@RHEL5 downloads]# tar -xzvf nagios-plugins-1.5.tar.gz

When you extract these tarballs with tar command, two new folders will appear in that directory.

[root@RHEL5 downloads]# ls -ltr
total 4060
drwxr-xr-x 15 root root    4096 Oct  2 20:57 nagios-plugins-1.5
drwxrwxr-x 18  root root    4096 Oct 16 05:06 nagios-4.0.1
-rw-r--r--  1   root root 1695367 Oct 16 05:19 nagios-4.0.1.tar.gz
-rw-r--r--  1    root root 2428258 Jan 16  2014 nagios-plugins-1.5.tar.gz

5.    Configure Nagios Core:

i)                  Now, first we will configure Nagios Core and to do so we need to go to Nagios directory and run configure file and if everything goes fine, it will show the output in the end as sample output. Please see below

[root@RHEL5 downloads]# cd nagios-4.0.1
[root@RHEL5 nagios-4.0.1]# ./configure --with-command-group=nagcmd


Sample Output:

*** Configuration summary for nagios 4.0.1 10-15-2013 ***:

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagios,nagcmd
             Event Broker:  yes
        Install ${prefix}:  /usr/local/nagios
    Install ${includedir}:  /usr/local/nagios/include/nagios
                Lock file:  ${prefix}/var/nagios.lock
   Check result directory:  ${prefix}/var/spool/checkresults
           Init directory:  /etc/rc.d/init.d
  Apache conf.d directory:  /etc/httpd/conf.d
             Mail program:  /bin/mail
                  Host OS:  linux-gnu

 Web Interface Options:
 ------------------------
                 HTML URL:  http://localhost/nagios/
                  CGI URL:  http://localhost/nagios/cgi-bin/
 Traceroute (used by WAP):  /bin/traceroute

Review the options above for accuracy.  If they look okay,
type 'make all' to compile the main program and CGIs.


ii)           Now, after configuring we need to Compile and install all the binaries with make command and make install command will install all the needed libraries in your machine and we can proceed further.

[root@RHEL5 nagios-4.0.1]# make all
[root@RHEL5 nagios-4.0.1]# make install

Sample Output:

*** Main program, CGIs and HTML files installed ***

You can continue with installing Nagios as follows (type 'make'
without any arguments for a list of all possible options):

  make install-init
     - This installs the init script in /etc/rc.d/init.d

  make install-commandmode
     - This installs and configures permissions on the
       directory for holding the external command file

  make install-config
     - This installs sample config files in /usr/local/nagios/etc

make[1]: Leaving directory `/root/downloads/nagios-4.0.1'

iii)          Following command will install the init scripts for Nagios.

[root@RHEL5 nagios-4.0.1]# make install-init
/usr/bin/install -c -m 755 -d -o root -g root /etc/rc.d/init.d
/usr/bin/install -c -m 755 -o root -g root daemon-init /etc/rc.d/init.d/nagios

*** Init script installed ***

iv)          To make nagios work from command line we need to install command-mode.

[root@RHEL5 nagios-4.0.1]# make install-commandmode
/usr/bin/install -c -m 775 -o nagios -g nagcmd -d /usr/local/nagios/var/rw
chmod g+s /usr/local/nagios/var/rw

*** External command directory configured ***

v)           Next, install sample nagios files, please run following command.

[root@RHEL5 nagios-4.0.1]# make install-config

6.    Customizing Nagios Configuration:

Open the “contacts.cfg” file with your choice of editor and set the email addressassociated with the nagiosadmin contact definition to receiving email alerts.

[root@RHEL5 ~]# vi /usr/local/nagios/etc/objects/contacts.cfg

##############################################################################
 CONTACTS
##############################################################################

# Just one contact defined by default - the Nagios admin (that's you)
# This contact definition inherits a lot of default values from the 'generic-contact'
# template which is defined elsewhere.

define contact{
        contact_name          nagiosadmin             ; Short name of user
        use          generic-contact    ; Inherit default values from generic-contact template (defined above)
        alias        Nagios Admin            ; Full name of user

        email  jitendrakumaryogi@gmail.com    ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }

7.    Install and configure Web Interface for Nagios:

We are done with all configuration in the backend, now we will configure Web Interface for Nagios with following command. The below command will Configure Web interface for Nagios and a web admin user will be created “nagiosadmin”.

[root@RHEL5 nagios-4.0.1]# make install-webconf
/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf

*** Nagios/Apache conf file installed ***

In this step, we will be creating a password for “nagiosadmin”. After executing this command, please provide a password twice and keep it remember because this password will be used when you login in the Nagios Web interface.

[root@RHEL5 nagios-4.0.1]# htpasswd -s -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Restart Apache to make the new settings take effect.

[root@RHEL5 nagios-4.0.1]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

8.    Compile and Install Nagios Plugin:

We have downloaded nagios plugins in /root/downloads, Go there and configure and install it as directed below.

[root@RHEL5 nagios-4.0.1]# cd /root/downloads/
[root@RHEL5 downloads]# cd nagios-plugins-1.5
[root@RHEL5 nagios-plugins-1.5]#./configure --with-nagios-user=nagios --with-nagios-group=nagios
[root@RHEL5 nagios-plugins-1.5]# make
[root@RHEL5 nagios-plugins-1.5]# make install

9.    Verify Nagios configuration file:

Now we are all done with Nagios configuration and its time to verify it and to do so please insert following command. If everything goes smooth it will show up similar to below output.

[root@RHEL5 nagios-plugins-1.5]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

10.  Add Nagios Services to System Startup:

To make Nagios work across reboots, we need to add nagios and https with chkconfig command.

[root@RHEL5 nagios-plugins-1.5]# chkconfig --add nagios
[root@RHEL5 nagios-plugins-1.5]# chkconfig --level 35 nagios on
[root@RHEL5 nagios-plugins-1.5]#  chkconfig --add httpd
[root@RHEL5 nagios-plugins-1.5]# chkconfig --level 35 httpd on

Restart Nagios to make the new settings take effect.

[root@RHEL5 nagios-plugins-1.5]# service nagios start
nagios is stopped
Starting nagios:                                           [  OK  ]

11.  Modify SELinux Settings:
RedHat 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.
            [root@RHEL5 nagios-4.0.1]# getenforce
Put SELinux into Permissive mode.
            [root@RHEL5 nagios-4.0.1]# 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:

[root@RHEL5 nagios-4.0.1]# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
[root@RHEL5 nagios-4.0.1]# chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

12. Login to Nagios Web Interface:


Your nagios is ready to work, please open it in your browser with “http://Your-server-IP-address/nagios” or “http://FQDN/nagios” and provide the username “nagiosadmin” and password.

Nagios Login



No comments:

Post a Comment

Linux Tables: Block All Incoming Traffic But Allow SSH

  This is very common scenario. You want to permit access to a remote machine only by SSH. You would like to block all incoming traffic to y...