Tag/tag.png

Unsupported Version
This article applies to an unsupported version of Ubuntu. More info...

This page describes how to install and configure Nagios2 on Gutsy Gibbon. It is intended for those who have never used Nagios before and gives a basic functional configuration. Readers are encouraged to experiment on their own for a more advanced configuration.

Note that this information is no longer accurate for nagios3 (the latest version distributed with Karmic, etc.). See Nagios3.

Introduction

Nagios is an open source host, service and network monitoring program. It is composed by the main service and a set of plugins which makes it very flexible as they can be developed by anyone. Nagios provides a web interface for the user to monitor but it also is capable of sending emails or even messages to a pager in case of problems. There is also a very useful extension for Firefox which highlights problems. Nagios' official homepage is http://nagios.org/

Installation

This installation assume that there is a web server configured and running. For this tutorial Apache will be used.

  • Activate the Universe repository and install nagios from it (or download the source from the official website and follow the instructions attached with it).

  sudo apt-get update
  sudo apt-get install nagios2 nagios-plugins nagios-images

Initial Configuration

This is the basic configuration to get Nagios2 running before you add your site specific tests.

  • Setup htpasswd file for web access

The configuration for authentication is in /etc/nagios2/apache2.conf. The default htpasswd file is /etc/nagios2/htpasswd.users, which does not exist upon installation.

  cd /etc/nagios2/
  sudo htpasswd -c htpasswd.users nagiosadmin
  • If you want to use something other then nagiosadmin as your user, that is fine, just make the necessary adjustments to /etc/nagios2/cgi.cfg. Wherever it says nagiosadmin change it.

That's all you to get it running! Navigate to http://nagios_server/nagios2 and log in to see your systems monitor. By default it monitors the machine it runs on and its gateway to the Internet.

Further Configuration

  • Add a custom directory for your *.cfg files

  sudo mkdir /etc/nagios2/mysite
  • By default, nagios creates an /etc/nagios2/conf.d directory where it puts some configuration files for the services it has detected. But now, you will need to tell Nagios that your configuration files are located in other path. Do that by editing the following line in /etc/nagios2/nagios.cfg:

  cfg_dir=/etc/nagios2/mysite
  • Now is time that you create your own configurations files inside the defined directory. It is possible to use the files in the conf.d directory as templates. You will need:
    • contacts.cfg: defines the people who will receive the alerts in case of a problem.
    • hosts.cfg: defines the hosts that will be monitored.
    • hostgroups.cfg: arrange the hosts defined in the hosts.cfg file into groups (e.g. servers, wireless, switches).
    • services.cfg: defines the services that will be monitored for each host.
    • templates.cfg: defines some templates like the generic host, generic service and a lot of others custom templates.
    • timeperiods.cfg: defines timeperiods which are valid for checks, notifications, etc.

Note that everything could be put into a single file, but is better to split things to have them organized.

The following example assume a small net with:

  • Three Unix machines (all with SSH):
    • 192.168.1.1: NAT and monitoring server.
    • 192.168.1.2: web and ftp server.
    • 192.168.1.3: mail server.

contacts.cfg

define contact{
  contact_name                    administrator
  alias                           Administrator Name
  service_notification_period     24x7
  host_notification_period        24x7
  service_notification_options    w,u,c,r
  host_notification_options       d,r
  service_notification_commands   notify-by-email
  host_notification_commands      host-notify-by-email
  email                           administrator@domain.com
}

define contactgroup{
  contactgroup_name       admins
  alias                   Nagios Administrators
  members                 administrator
}

hosts.cfg

Each host has the following basic properties:

  • host_name: an unique name to identify the host.
  • alias: a very short description.
  • address: the IP address or domain name of the host.
  • parents: a comma separated list where the parents of the host are enumerated. This is useful to see the distribution of the hosts on the map drawn by Nagios.
  • use: the name of the template to use.

# To ping an external, always on line server is useful to check if the internet link is OK.
define host{
  host_name  google
  alias      Internet Connection
  address    www.google.com
  use        generic-host
}

define host{
  host_name  mywangateway
  alias      ISP Gateway
  address    190.2.53.193
  parents    google
  use        generic-host
}

define host{
  host_name  mylangateway
  alias      My LAN Internet Gateway
  address    192.168.1.1
  parents    mywangateway
  use        generic-host
}

define host{
  host_name  webserver
  alias      Web Server
  address    192.168.1.2
  parents    mylangateway
  use        generic-host
}

define host{
  host_name  mailserver
  alias      Mail Server
  address    192.168.1.3
  parents    mylangateway
  use        generic-host
}

hostgroups.cfg

# A simple wildcard hostgroup
define hostgroup {
  hostgroup_name  all
    alias           All Servers
    members         *
}

# A list of your servers
define hostgroup {
  hostgroup_name    servers
    alias           Servers
    members         mylangateway, webserver, mailserver
}

# A list of your web servers
define hostgroup {
  hostgroup_name    http-servers
    alias           HTTP servers
    members         mylangateway, webserver
}

# A list of your ssh-accessible servers
define hostgroup {
  hostgroup_name    ssh-servers
    alias           SSH servers
    members         mylangateway, webserver, mailserver
}

define hostgroup {
  hostgroup_name    ping-servers
    alias           Pingable servers
    members         google, mywangateway, mylangateway, webserver, mailserver
}

services.cfg

Each service has the following basic properties:

  • host_name: the host that runs the service.
  • hostgroup_name: instead of host_name this could be used with the name of a group. In this case, all the hosts within that group will be checked.
  • service_description: a very short description.
  • check_command: the command to execute in order to check the service. Each command will need an available plugin (they're located in /usr/lib/nagios/plugins).
  • use: the name of the template to use.
  • notification_interval: a period of time to resend a change on the hosts state. If set to 0 Nagios will notify just once.

To add new services you can explore the /usr/lib/nagios/plugins (or whichever directory the plugins are installed in) and look for the plugin wich checks the service you need. If none is available you could always search on the net. An excellent place to start your search is the official website of the project at http://nagiosplugins.org. Once you have the plugin you need execute it with --help as parameter to see what parameters it expect. The example gives you some basic services. Note that each parameter pass to the command is separated from the others with an exclamation mark (!).

## Hostgroups services ##

# Check that web services are running
define service {
  hostgroup_name                  http-servers
  service_description             HTTP
  check_command                   check_http
  use                             generic-service
  notification_interval           0
}

# Check that ssh services are running
define service {
  hostgroup_name                  ssh-servers
  service_description             SSH
  check_command                   check_ssh
  use                             generic-service
  notification_interval           0
}

# Check that ping-only hosts are up
define service {
  hostgroup_name                  ping-servers
  service_description             PING
  check_command                   check_ping!100.0,20%!500.0,60%
  use                             generic-service
  notification_interval           0
}

## Individual hosts services ##

# To show how to monitor a service in a single host, the ftp service and the mail service are written for each individual host.
define service {
  hostgroup_name                  webserver ; remember that this host is also an ftp server.
  service_description             FTP
  check_command                   check_ftp
  use                             generic-service
  notification_interval           0
}

# Services for the mail server (check: pop, imap, pops, imaps and smtp).
define service {
  hostgroup_name                  mailserver
  service_description             POP
  check_command                   check_pop
  use                             generic-service
  notification_interval           0
}

define service {
  hostgroup_name                  mailserver
  service_description             IMAP
  check_command                   check_imap
  use                             generic-service
  notification_interval           0
}

define service {
  hostgroup_name                  mailserver
  service_description             Secure POP
  check_command                   check_spop
  use                             generic-service
  notification_interval           0
}

define service {
  hostgroup_name                  mailserver
  service_description             Secure IMAP
  check_command                   check_simap
  use                             generic-service
  notification_interval           0
}

define service {
  hostgroup_name                  mailserver
  service_description             SMTP
  check_command                   check_smtp
  use                             generic-service
  notification_interval           0
}

For more information, refer to http://nagios.sourceforge.net/docs/2_0/xodtemplate.html

templates.cfg

In the default installation you will find files named generic-host_nagios2.cfg, generic-service_nagios2.cfg and there might be others. Just with copy and paste them into /etc/nagios2/mysite directory it will work OK. Anyway, I prefer to put the definitions on each of them into a single file called templates.cfg, but that's a personal preference.

timeperiods.cfg

The default configuration file is OK, so just copy and paste it from /etc/nagios2/conf.d/timeperiods_nagios2.cfg to /etc/nagios2/mysite/timeperiods.cfg.

Testing the new configuration

If there is any configuration error Nagios will tell you where it is when you attemp to restart the service.

See also


CategoryInternet CategoryNetworking

Nagios2 (last edited 2011-05-22 13:00:51 by dynamic-adsl-78-12-253-231)