Thursday, 20 March 2014

Nagios Remote Host Configuration



Nagios, as you might be knowing is an open source Host monitoring solution. The Nagios core is free and open source. If you need professional services and support you can go for Nagios XI.  You can check more details at 
Nagios website . 

The Basic Architecture is like this, we have a Nagios Remote Host and a Nagios Server. The Remote host has some services running on it which are to be centrally monitored from Nagios server and alert generated in case of any failure or impending failure. The Remote Host ( also known as Nagios Client) sends its service status to the Nagios Server via NRPE.(Nagios Remote Plugin Executer). NRPE lets you monitor variety of services like status of Oracle, HTTP website URL status, free disk space, CPU load among others.

Here i describe the method for setting up a Nagios Remote Host to be monitored from a Nagios Host. I assume you already have a running setup with Nagios Server properly configured and want to monitor the different services running on your Nagios Remote Hosts.

Lets begin .....

Steps to be performed on Nagios server:-

1. Go to the Nagios configuration directory and edit hosts.cfg file and enter the hostname and ip address of nagios remote host. This will make an entry for the particular host and is used to identify the remote host.

2. Most Nagios Administrators classify their Remote Hosts in various groups based on OS type (i.e Solaris, Linux,Windows etc) or based on Datacenter location name (i.e DC-US, DC-EU, DC-APAC). For this purpose, we need to edit hostgroup.cfg file and enter the hostname of the remote host (declared in previous step) in a particular hostgroup we want it to be (e.g Solaris-Group, Linux-Group or DC-APAC )

3. For the purpose of monitoring the various services, we need to edit services.cfg file and input the hostname of remote host to the corresponding service type. For example to monitor Oracle instance on a Database server, we need to enter the hostname of the server in Oracle-check service type definitions as shown below:-

define service{
        use                             generic-service
        host_name                       ggndb01, chndb02, hydoradb
        service_description             Oracle-Check
        is_volatile                     0
        check_period                    24x7
        max_check_attempts              10
        normal_check_interval           5
        retry_check_interval            3
        contact_groups                  nagios-admins,nagios-sms
        notification_interval           3600
        notification_period             24x7
        notification_options            w,u,c
        check_command                   check_nrpe!check_oracle



4. After making all required changes in the three files mentioned above, we need to reload the nagios service for the changes to take effect.

   #/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
   #/etc/rc.d/init.d/nagios reload

The new configuration will be active on web interface now. Login to nagios and verify that the changes are reflected.

Steps to be performed on Remote Host (for NRPE)


Installation and configuration of NRPE on Nagios client (also called remote host) is a little tricky and involved procedure. Before proceeding further with the steps, please download nrpe and nagios plugins source code from Nagios website.

1. Create a nagios user who will communicate with Nagios server for sending service status details

 # useradd -c “nagios system user” -d /usr/local/nagios -m nagios
 # chown nagios:nagios /usr/local/nagios/

2. Extract the plugin and nrpe source code.

 # gunzip nagios-plugins-1.3.8.tar.gz
 # tar -xvf nagios-plugins-1.3.8.tar
 # gunzip nrpe-2.12.tar.gz
 # tar -xvf nrpe-2.12.tar

3. Compile the nagios plugins. These plugins can also be executed locally to check service status

 # cd nagios-plugins-1.3.8
 # ./configure
 # make
 # make install

4. Check whether the plugin are working fine or not. Remember this is a local check only and at this point of time, communication with Nagios server is not yet established.

 # /usr/local/nagios/libexec/check_disk -w 10 -c 5 -p /var

5. Compile the NRPE

 # cd nrpe-2.12
 # ./configure
 # make
 # make install

6. After compilation of NRPE on remote host is completed, nrpe.cfg file be generated. Modify the nrpe.cfg  file as per your needs. Remember this needs to located on the remote host and not on the Nagios server. All the checks which will be performed from Nagios server need to be entered into the remote host nrpe.cfg file. Example below:-

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
    
Enter all the checks to be performed like for check_disk, check_load, check_http and check_users into this file. Also we need to allow the nagios server to communicate with remore host in this file.
To enable the remote execution of NRPE add the IP address of Nagios server in nrpe.cfg :-
  
allowed_hosts=127.0.0.1,10.237.93.68

7. Configure the NRPE as a service in normal framework so that it can be started or stopped like other Unix services. Add the below line in /etc/services

 nrpe 5666/tcp # NRPE

8. Add the following line in /etc/inet/inetd.conf

   On Solaris
   nrpe stream tcp nowait nagios /usr/sfw/sbin/tcpd /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -i
   On Linux
   nrpe stream tcp nowait nagios /usr/sbin/tcpd /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg --inetd

9. On Linux systems we can start the nrpe service as follows
   # service nrpe start
   On Solaris systems
   # svcadm enable svc:/network/nrpe
   # svcadm restart svc:/network/nrpe


That's it. You can start monitoring your Remote hosts services from Nagios Server.


No comments:

Post a Comment