Saturday, August 30, 2014

CentOS 7 : Install And Configure Nagios

Install And Configure Nagios 

Nagios is an open source software that can be used for network and infrastructure monitoring. Nagios will monitor servers, switches, applications and services. It alerts the System Administrator when something went wrong and also alerts back when the issues has been rectified.
With Nagios you can:
  • Monitor your entire IT infrastructure.;
  • Identify problems before they occur;
  • Know immediately when problems arise;
  • Share availability data with stakeholders.hypothetical question;
  • Detect security breaches;
  • Plan and budget for IT upgrades;
  • Reduce downtime and business losses.

Scenario

In this tutorial i am going to use two systems as mentioned below.

Nagios server:

Operating system : CentOS 7 minimal installation
IP Address       : 192.168.1.101/24

Nagios client:

Operating System : Ubuntu 14.04
IP Address       : 192.168.1.102/24

Prerequisites

Before installing Nagios, make sure that you’ve a properly installed and configured LAMP stack in your server. To install and configure LAMP server, refer the following link.
Also install the following prerequisites too. All commands should be run as root user.
yum install gd gd-devel gcc glibc glibc-common

Install Nagios

I tested this how-to on CentOS 7 minimal server, although it should work on all RHEL 7 and its clones like Scientific Linux 7 too.
Nagios is not available in CentOS official repositories, so let us add the EPEL repository to install nagios. To add and enable EPEL repository, refer the following link.
Next install nagios with all plug-ins and nagios agents(nrpe-agent) using command:
yum install nagios*

Configure Nagios

Add the admin mail address in the nagios contact file to receive alerts from nagios server.
To do that edit file /etc/nagios/objects/contacts.cfg,
vi /etc/nagios/objects/contacts.cfg
Find the following line and enter the email id:
[...]
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                           sk@unixmen.com  ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }
[...]
Save and close the file.
Then, Edit file /etc/httpd/conf.d/nagios.conf,
vi /etc/httpd/conf.d/nagios.conf
And edit the following lines if you want to access nagios administrative console from a particular IP series. Here, I want to allow nagios administrative access from 192.168.1.0/24 series only.
[...]
## Comment the following lines ##
#   Order allow,deny
#   Allow from all

## Uncomment and Change lines as shown below ##
Order deny,allow
Deny from all
Allow from 127.0.0.1 192.168.1.0/24
[...]
Set nagiosadmin password:
htpasswd /etc/nagios/passwd nagiosadmin
New password:
Re-type new password:
Updating password for user nagiosadmin
Start nagios and httpd services and let them to start automatically on every boot.
systemctl start nagios
systemctl restart httpd
chkconfig nagios on

Access Nagios admin console

Open nagios administrator console with URL http://nagios-server-ip/nagios and enter the username asnagiosadmin and its password which we created in the earlier steps.
New Tab - Mozilla Firefox_001
This is how Nagios administrative console looks:
Nagios Core - Mozilla Firefox_002
Click on the “Hosts” section in the left pane of the console. You will see there the no of hosts to be monitored by Nagios server. Initially, the nagios server (localhost) itself will only be monitored.
Nagios Core - Mozilla Firefox_003
Click on the monitoring host to display more details:
Nagios Core - Mozilla Firefox_004

Add Monitoring targets to Nagios server

Now, let us add some clients to monitor by Nagios server. To do that we have to install nrpe and nagios-plugins in our monitoring targets.
On CentOS/RHEL/Scientifc Linux clients:
As I mentioned before, you have to add EPEL repository in your CentOS/RHEL/Scientific Linux 6.x or 7 clients to install nrpe package.
Install “nrpe” and “nagios-plugins” packages in client systems to be monitored.
yum install nrpe nagios-plugins-all openssl
On Debian/Ubuntu clients:
sudo apt-get install nagios-nrpe-server nagios-plugins

Configure Monitoring targets

Edit /etc/nagios/nrpe.cfg file,
sudo vi /etc/nagios/nrpe.cfg
Add your Nagios server ip address:
[...]
## Find the following line and add the Nagios server IP ##
allowed_hosts=127.0.0.1 192.168.1.101
[...]
Start nrpe service on CentOS clients:
service nrpe start
chkconfig nrpe on
For Debian/Ubuntu Clients, start nrpe service as shown below.
sudo /etc/init.d/nagios-nrpe-server restart
Now, go back to your Nagios server to add the clients to be monitored through nagios server.
To do that, Edit “/etc/nagios/nagios.cfg” file,
vi /etc/nagios/nagios.cfg
and uncomment the following lines.
## Find and uncomment the following line ##
cfg_dir=/etc/nagios/servers
Create a directory called “servers” under “/etc/nagios/”.
mkdir /etc/nagios/servers
Create config file to the client to be monitored:
vi /etc/nagios/servers/clients.cfg
Add the following lines:
define host{

use                             linux-server

host_name                       client

alias                           client

address                         192.168.1.102

max_check_attempts              5

check_period                    24x7

notification_interval           30

notification_period             24x7

}
Finally restart nagios service.
systemctl restart nagios
Now, open the nagios admin console in the browser and navigate to “Hosts” section in the left pane. You will see the newly added client will be visible there. Click on the host to see if there is anything wrong or any alerts it has.
Nagios Core - Mozilla Firefox_005
Click on the monitoring target to view the detailed output:
Nagios Core - Mozilla Firefox_006
By this way, you can define more clients by creating a separate config files “/etc/nagios/servers” directory for each client.

Define services

We just defined the monitoring host before. Now, let us add some services of the monitoring host. For example, to monitor the ssh service, add the following lines shown in bold in the /etc/nagios/servers/clients.cfg file.
vi /etc/nagios/servers/clients.cfg
Add the following lines:
define host{

use                             linux-server

host_name                       client

alias                           client

address                         192.168.1.102

max_check_attempts              5

check_period                    24x7

notification_interval           30

notification_period             24x7

}

define service {
        use                             generic-service
        host_name                       client
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
        }
Save and close the file. Restart Nagios.
systemctl restart nagios
Now log in to Nagios web console and check for the added services. Navigate to Services section on the left side bar, you’ll see the ssh service there.
Nagios Core - Mozilla Firefox_007
To know more about object definitions such as Host definitions, service definitions, contact definitions, please dovisit here. This page will explain you the description and format of all object definitions.
Thats it. Cheers!
Reference Links:

No comments: