There is a new revision of this tutorial available for Ubuntu 15.04 (Vivid Vervet).

How to Install Nagios 4.0.8 on Ubuntu 15.04 (Vivid Vervet)

Nagios is an open source software for system and network monitoring. Nagios can see the activity of a host and its services, and provides a warning/alert if something bad happens on the server. Nagios can run on Linux operating systems. At this time we are using Ubuntu 15.04 for the installation.

Prerequisites

  • Ubuntu 15.04 - 64bit
  • Root/Sudo access

What we will do in this tutorial:

  1. Installing package is needed - LAMP etc.
  2. User and group configuration
  3. Installing Nagios
  4. Configuring Apache
  5. Testing Nagios Server
  6. Adding a Host to Monitor

Installing package

Nagios requires gcc / build-essential for the compilation, LAMP (Apache, PHP, MySQL) for Nagios web base and Sendmail to send alerts from the server. To install all those packages and some additional packages:

apt-get install apache2 libapache2-mod-php5 build-essential libgd2-xpm-dev libssl-dev sendmail-bin sendmail heirloom-mailx wget apache2-utils curl daemon apt-file libnet-snmp-perl libpq5 libsensors4 libsnmp-base libtalloc2 libtdb1 libwbclient0 samba-common samba-common-bin smbclient snmp whois mrtg libcgi-pm-perl librrds-perl libgd-gd2-perl libmysqlclient-dev libperl5.20 libmysqlclient18 libradiusclient-ng2

User and group configuration

For Nagios to run, you have to create a new user for Nagios. We will name the user "nagios" and additionally create a group named "nagcmd". Now we add the new user to the group as shown below:

useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios

Add a user and group for Nagios

Installing Nagios

Step 1 - Download and extract

cd ~
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.8.tar.gz
tar -xzf nagios*.tar.gz
cd nagios-4.0.8/

Step 2 - Compile Nagios

Before you build Nagios, you need to configure it with the user and the group you have created earlier.

./configure --with-nagios-group=nagios --with-command-group=nagcmd

For more information please use: ./configure --help .

Now to install Nagios:

make all
sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config
/usr/bin/install -c -m 644 sample-config/httpd.conf
/etc/apache2/sites-available/nagios.conf

Step 3 - Installing Nagios Plugin

Download and extract the nagios plugin:

cd ~
wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
tar -xzf nagios-plugins*.tar.gz
cd nagios-plugin*/

Please do as above:

./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
make && make install

Step 4 - Configure Nagios

After the installation phase is complete, you can find the default configuration of Nagios in /usr/local/nagios/.

Now to configure nagios contact with your email.

vim /usr/local/nagios/etc/nagios.cfg

Uncomment the line cfg_dir=/usr/local/nagios/etc/servers

Shows the line to uncomment

and add a new folder named servers:

mkdir -p /usr/local/nagios/etc/servers

The Nagios contact can be configured in the contact.cfg file. To open it use:

vim /usr/local/nagios/etc/objects/contacts.cfg

Then replace the default email with your own email.

Configuring Apache

Step 1 - enable Apache modules

sudo a2enmod rewrite
sudo a2enmod cgi

You can use htpasswd to configure a user nagiosadmin for the nagios web interface

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

and type your password.

Step 2 - enable Nagios virtualhost

sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/

Step 3 - Start Apache and Nagios

/etc/init.d/apache2 restart
/etc/init.d/nagios start

When Nagios starts, you may see the following error :

Starting nagios (via systemctl): nagios.serviceFailed

And this is how to fix it:

cd /etc/init.d/
cp /etc/init.d/skeleton /etc/init.d/nagios

Now edit the Nagios file:

vim /etc/init.d/nagios

... and add the following code:

DESC="Nagios"
NAME=nagios
DAEMON=/usr/local/nagios/bin/$NAME
DAEMON_ARGS="-d /usr/local/nagios/etc/nagios.cfg"
PIDFILE=/usr/local/nagios/var/$NAME.lock

Make it executable and start Nagios:

chmod +x /etc/init.d/nagios
/etc/init.d/apache2 restart
/etc/init.d/nagios start

Testing the Nagios Server

Please open your browser and access the Nagios server ip that has been installed. http://192.168.1.101/nagios.

Adding a Host to Monitor

In this tutorial you will add an Ubuntu host to monitor to the Nagios server we have made above.

Nagios Server IP : 192.168.1.101
Ubuntu Host IP : 192.168.1.102

Step 1 - Connect to ubuntu host

ssh [email protected]

Step 2 - Install NRPE Service

sudo apt-get install nagios-nrpe-server nagios-plugins

Step 3 - Configure NRPE

After the installation is complete, edit the nrpe file /etc/nagios/nrpe.cfg:

vim /etc/nagios/nrpe.cfg

... and add Nagios Server IP 192.168.1.101 to the server_address.

Step 4 - Restart NRPE

/etc/init.d/nagios-nrpe-server restart

Step 5 - Add Ubuntu Host to Nagios Server

Please connect to the Nagios server:

ssh [email protected]

Then create a new file for the host configuration in /usr/local/nagios/etc/servers/.

vim /usr/local/nagios/etc/servers/ubuntu_host.cfg

Add the following lines:

# Ubuntu Host configuration file

define host {
        use                          linux-server
        host_name                    ubuntu_host
        alias                        Ubuntu Host
        address                      192.168.1.102 #Ubuntu host IP
        register                     1
}

define service {
      host_name                       ubuntu_host
      service_description             PING
      check_command                   check_ping!100.0,20%!500.0,60%
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       ubuntu_host
      service_description             Check Users
      check_command		      check_local_users!20!50
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       ubuntu_host
      service_description             Local Disk
      check_command                   check_local_disk!20%!10%!/
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       ubuntu_host
      service_description             Check SSH
      check_command                   check_ssh
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

You can find many check_command in /usr/local/nagios/etc/objects/commands.cfg file. See there if you want to add more services like DHCP, POP etc.

And now check the configuration:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

... to see if the configuration is correct.

Step 6 - Restart all services

On the Ubuntu Host start NRPE Service:

/etc/init.d/nagios-nrpe-server restart

... and on the Nagios server, start Apache and Nagios:

/etc/init.d/apache2 restart
/etc/init.d/nagios restart

Step 7 - Testing Ubuntu Host

Open the Nagios server from the browser and see the ubuntu_host being monitored.

Conclusion

Nagios is an open source application for monitoring a system. Nagios has been widely used because of the ease of configuration. Nagios in support by various plugins, and you can even create your own plugins. Look here for more informations.

Share this page:

7 Comment(s)

Add comment

Comments

From: Chris

I keep getting the following error:

 

start-stop-daemon: unable to start /usr/local/nagios/bin/ (Permission denied)

From: Narin

[email protected]:~/nagios-4.0.8# /usr/bin/install -c -m 644/ sample-config/httpd.conf

/usr/bin/install: missing destination file operand after ‘sample-config/httpd.conf’

Try '/usr/bin/install --help' for more information.

-------------------------------------------------------

Any idea ?

 

From: Kumaran

Execute it manually with the correct paths.

 

/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/conf-available/nagios.conf ln -s /etc/apache2/conf-available/nagios.conf /etc/apache2/conf-enabled/nagios.confLet me know if its working..always happy to help ;-)Kumaran-R

 

From: Frank

Man, thanks a lot, excellent tutorial for Ubuntu 15.04, it works fine.

Best regards,

Frank

From: kamlesh

iam unable to access the nagios from webbrowser getting error.plz help me

403 - Forbidden: Access is denied. You do not have permission to view this directory or page using the credentials that you supplied.

From: idropedro

this is not working for me, can you help?

im having the same error of Narin

From: Marcel

Not sure where the problem were after logon to system i got internal server error.. log said couldnt access htpasswd.users. but after using sudo htpasswd -cs /usr/local/nagios/etc/htpasswd.users nagiosadmin  it works like a charm. Thanks :)