Nagios Installation and Configuration

Nagios Installation in Ubuntu

Required Packages

Install the following packages on  Ubuntu before continuing.

  • Apache 2
  • PHP
  • GCC compiler and development libraries
  • GD development libraries

If not installed, using apt-get the above packages can be installed as follows

  • sudo apt-get install apache2
  • sudo apt-get install libapache2-mod-php5
  • sudo apt-get install build-essential
  • sudo apt-get install libgd2-xpm-dev

Create Account Information

  • Become the root user.
    sudo -s
  • Create a new nagios user account and give it a password.

/usr/sbin/useradd -m -s /bin/bash nagios

passwd nagios

  • 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 -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd www-data

Download Nagios and the Plugins

Create a directory for storing the downloads.

  • mkdir /opt/downloads
  • cd /opt/downloads

Download the source code tarballs of both Nagios and the Nagios plugins (visit for links to the latest versions).

  • wget -c
  • wget -c

Compile and Install Nagios

Extract the Nagios source code tarball.

  • cd /opt/downloads
  • tar xzvf nagios-3.2.0.tar.gz
  • cd nagios-3.2.0

Run the Nagios configure script, passing the name of the group you created earlier like so:

  • ./configure –with-command-group=nagcmd

General Options:
Nagios executable:  nagios
Nagios user/group:  nagios,nagios
Command user/group:  nagios,nagcmd
Embedded Perl:  no
Event Broker:  yes
Install ${prefix}:  /usr/local/nagios
Lock file:  ${prefix}/var/nagios.lock
Check result directory:  ${prefix}/var/spool/checkresults
Init directory:  /etc/init.d
Apache conf.d directory:  /etc/apache2/conf.d
Mail program:  /usr/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):

Compile the Nagios source code.

  • make all

Install binaries, init script, sample config files, and set permissions on the external command directory.

  • sudo make install

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/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

  • sudo make install-init

/usr/bin/install -c -m 755 -d -o root -g root /etc/init.d
/usr/bin/install -c -m 755 -o root -g root daemon-init /etc/init.d/nagios

*** Init script installed ***

  • sudo make install-config

/usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/etc
/usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/etc/objects
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/nagios.cfg /usr/local/nagios/etc/nagios.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/cgi.cfg /usr/local/nagios/etc/cgi.cfg
/usr/bin/install -c -b -m 660 -o nagios -g nagios sample-config/resource.cfg /usr/local/nagios/etc/resource.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/templates.cfg /usr/local/nagios/etc/objects/templates.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/commands.cfg /usr/local/nagios/etc/objects/commands.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/contacts.cfg /usr/local/nagios/etc/objects/contacts.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/timeperiods.cfg /usr/local/nagios/etc/objects/timeperiods.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/localhost.cfg /usr/local/nagios/etc/objects/localhost.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/windows.cfg /usr/local/nagios/etc/objects/windows.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/printer.cfg /usr/local/nagios/etc/objects/printer.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/switch.cfg /usr/local/nagios/etc/objects/switch.cfg

*** Config files installed ***

Remember, these are *SAMPLE* config files.  You’ll need to read
the documentation for more information on how to actually define
services, hosts, etc. to fit your particular needs.

  • sudo 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 ***

Don’t start Nagios yet – there’s still more that needs to be done…

Nagios Configuration

Sample Configuration files are available in the path

  • /usr/local/nagios/etc/
  • /usr/local/nagios/etc/objects/

a)  Configuration1: Basic Contact Info

The first components to set up are contacts and contact groups.
Contacts are people who receive notifications when a host or service is down. Nagios offers pager and e-mail notifications by default.

Contacts are stored in the /usr/local/nagios/etc/objects/contacts.cfg file and are defined as follows:
define contact{
contact_name                    gama            ; Short name of user
use                             generic-contact         ; Inherit default values from generic-contact template (defined in templates.cfg) – Commented out
alias                           Nagios Admin           ; Full name of user

email                    ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******

define contactgroup{
contactgroup_name       admins
alias                   Nagios Administrators
members                 rama

Create the following files – hosts.cfg and hostgroups.cfg. From the templates.cfg file, we shall get he template definitions for server “linux-server”

b) sudo vi /usr/local/nagios/etc/objects/hosts.cfg (new config file)

For every host added for monitoring, an entry needs to be put in the hosts.cfg file. An example is illustrated below, for host


define host{
host_name              EastColo-TestWeb
use                    linux-server
alias                  East Colo Test Web

c) sudo vi /usr/local/nagios/etc/objects/hostgroups.cfg

The host added in hosts.cfg must be made part of a hostgroup. For example, the host, is being made part of hostgroup, TestWeb. We can add as many hosts we want in a hostgroup. Each hostgroup member need to be seperated by a comma(,).

define hostgroup {
hostgroup_name TestWeb
alias          Test Web Servers
members        EastColo-TestWeb,WestColo-TestWeb

d) Now according to the service to be monitored for each host, an entry for each host or hostgroup need to be made in /usr/local/nagios/etc/objects/localhost.cfg.

define service{
use                             local-service         ; Name of service template to use
host_name                       localhost
hostgroup_name                  TestWeb
service_description             PING
check_command           check_ping!100.0,20%!500.0,60%

e) Edit the main configuration file, “nagios.cfg” under the directory /usr/local/nagios/etc/

Add the  lines


f)  Check if the Nagios Configuration files are ok, using the command
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Configure the Web Interface – Apache Configuration

a)  cd /opt/downloads/nagios-3.2.0

b)  Install the Nagios web config file in the Apache conf.d directory.
sudo make install-webconf

/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/conf.d/nagios.conf

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

c) Create a nagiosadmin account for logging into the Nagios web interface. Remember the password you assign to this account – you’ll need it later.
$ htpasswd -c /usr/local/nagios/etc/htpasswd.users nagadmin

d) Restart Apache
$ sudo /etc/init.d/apache2 reload

Compile and Install the Nagios Plugins

  • cd /opt/downloads/nagios-3.2.0
  • tar xzvf nagios-plugins-1.4.11.tar.gz
  • cd nagios-plugins-1.4.11
  • ./configure –with-nagios-user=nagios –with-nagios-group=nagios
  • make
  • sudo make install

This will install all the nagios plugin scripts under the path “/usr/local/nagios/libexec

Configure Nagios to automatically start when the system boots

  • ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Start Nagios

a) Verify the configuration files of Nagios

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

b) If there are no errors, start Nagios.

  • sudo /etc/init.d/nagios start

If you feel this is tricky and you can’t take any risk, our Web Hosting experts can assist you in getting this fixed at a pocket-friendly price. All you need to do is to contact us and we’ll take care of the rest.

To get more updates you can follow us on Facebook, Twitter, LinkedIn

Subscribe to get free blog content to your Inbox