Showing posts with label NMS. Show all posts
Showing posts with label NMS. Show all posts

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.


Sunday, 9 June 2013

Nagios server setup on Linux


1. Download the source code tarballs of both Nagios and the Nagios plugins (visit http://www.nagios.org/download/ for links to the latest versions).
wget http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.3.tar.gz
wget http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz

2. Login to the server as root user


3. Create a new nagios user account and assign it a password.
# useradd -m nagios
# passwd nagios

4. 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 -G nagcmd nagios
# /usr/sbin/usermod -G nagcmd apache

5. Extract the Nagios source code tarball.
# cd ~/downloads
# tar xzf nagios-3.0.3.tar.gz
# cd nagios-3.0.3

Run the Nagios configure script, with the name of the group nagcmd created earlier :
# ./configure --with-command-group=nagcmd

6. Compile the Nagios source code.
# make all
Install binaries, init script, sample config files and set permissions on the external command directory as shown in the below steps
# make install
# make install-init
# make install-config
# make install-commandmode

7. 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 using vi editor and change the email address associated with the nagiosadmin contact definition to your email address 
# vi /usr/local/nagios/etc/objects/contacts.cfg

8. Configure the Web Interface
Install the Nagios web config file in the Apache conf.d directory.
make install-webconf
# make install-webconf
/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf

8. Create a nagiosadmin account for logging into the Nagios web interface.
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Restart Apache to make the new settings take effect.
# service httpd restart

9. Compile and Install the Nagios Plugins

# cd ~/downloads
# tar xzf nagios-plugins-1.4.11.tar.gz
# cd nagios-plugins-1.4.11
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install




10. Object configuration files
As mentioned, when the configuration files are split up, Nagios reads the data from these files in order for it to process host and service checks across the network. The templates for all these files are provided in localhosts.cfg file and we need to copy the definitions to separate files as shown below.

10.1 Create the configuration files

# cd /usr/local/nagios/etc/objects/
# touch hostgroup.cfg hosts.cfg services.cfg

10.2 Copy the Services Definitions

# vi localhost.cfg

# vi services.cfg
Paste the Services Definitions

#vi localhost.cfg
Copy the Host Definitions
#vi hosts.cfg
Paste the Host Definitions

#vi localhost.cfg
Copy the Host Definitions
# vi hostgroup.cfg
Paste the hostgroup Definitions

Setting up nagios.cfg
# cd /etc/nagios
# mv localhost.cfg localhost.cfg_org

Next configure the main nagios.cfg file .
# vi nagios.cfg
and make the changes shown below

# OBJECT CONFIGURATION FILE(S)
cfg_file=/etc/nagios/contacts.cfg
cfg_file=/etc/nagios/hostgroups.cfg
cfg_file=/etc/nagios/hosts.cfg
cfg_file=/etc/nagios/services.cfg
cfg_file=/etc/nagios/timeperiods.cfg

# EXTERNAL COMMAND OPTION
check_external_commands=1

# EXTERNAL COMMAND CHECK INTERVAL
command_check_interval=1


11. Starting Nagios

# chkconfig nagios on
# nagios -v nagios.cfg

Nagios 2.4
Copyright (c) 1999-2006 Ethan Galstad (http://www.nagios.org)
Last Modified: 05-31-2006
License: GPL

Reading configuration data...

Running pre-flight check on configuration data...

Total Warnings: 85
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

# service nagios start

Starting network monitor: nagios