Share, , Google Plus, Pinterest,


Posted in:

Nagios configuration – How to configure Nagios

About Nagios Configuration

This is a quick manual on Nagios configuration files. We will be explaining which configuration files you need to edit to add hosts, services, contacts and groups. Learn how to configure your Nagios from Linux console and check the configuration for errors.

In this Nagios configuration How To guide we will explain most of the files that are needed for Nagios to monitor your hosts and services and send alerts.

Nagios Configuration
Nagios Configuration


Nagios main configuration files:

  • nagios.cfg

Nagios.cfg is the main configuration file for your Nagios Core. This is where the location of Nagios log file, status.dat file, lock file and host and services state update interval is defined. It also defines Nagios user and group under which Nagios instance is running. By default you do not need to change any of the lines in this file and Nagios should be working perfectly. But this is the file you should add a line to, if you have a separate configuration file for monitoring Linux (or other) hosts (cfg_file=/usr/local/nagios/etc/objects/linux.cfg). If you have installed MK Livestatus, this is where you will have to define a “broker_module” – broker_module=/usr/local/lib/mk-livestatus/livestatus.o /usr/local/nagios/var/rw/live.

  • cgi.cfg

This configuration file defines Nagios access for people or groups. It focuses on Nagios web frontend configuration. You can define exactly what kind of rights certain users or groups have – authorized_for_all_services, authorized_for_all_hosts, authorized_for_read_only, … This is also where the main configuration file is defined and physical path to Nagios HTML files is configured. It also defines the URL Html path – if url_html_path=/nagios this means that Nagios is available at http://hostname.domainname/nagios. You can also define sound actions for certain alerts. By default this fileonly needs editing on user access rights.

Nagios Host and Services configuration files:

You can keep all of the hosts and services in one configuration file if you like, but i prefer you separate hosts and services based on operating systems. Host and services configuration files are usually located at /usr/local/nagios/etc/objects. Every host and services configuration file must also be defined in nagios.cfg file!

I will show you how to configure a separate .cfg file for Linux hosts. When creating a new linux.cfg file we first have to define host and service templates – and if needed hostgroup and service group templates.

Below is and example of linux.cfg file with defined host, service, host group and service group templates and a Linux host with defined services for PING, SWAP usage and Current Logged in Users.

  • linux.cfg

define host {
    name                     linuxsrv-server    ; The name of this host template
    use                      generic-host       ; Inherit default values from the generic-host template
    check_period             24x7               ; By default, Windows servers are monitored round the clock
    check_interval           1                  ; Actively check the server every 5 minutes
    retry_interval           1                  ; Schedule host check retries at 1 minute intervals
    max_check_attempts       10                 ; Check each server 10 times (max)
    check_command            check-host-alive   ; Default command to check if servers are "alive"
    notification_period      24x7               ; Send notification out at any time - day or night
    notification_interval    30                 ; Resend notifications every 30 minutes
    notification_options     d,r                ; Only send notifications for specific host states
    contact_groups           admins             ; Notifications get sent to the admins
    hostgroups               linuxsrv-servers   ; Host groups that Windows servers should be a member of
    register                 1                  ; DONT REGISTER THIS - ITS JUST A TEMPLATE
define service {
    name                          linuxsrv-service   ; The 'name' of this service template
    active_checks_enabled         1                  ; Active service checks are enabled
    passive_checks_enabled        1                  ; Passive service checks are enabled/accepted
    parallelize_check             1                  ; Active service checks should be parallelized (disabling this can lead to major performance problems)
    obsess_over_service           1                  ; We should obsess over this service (if necessary)
    check_freshness               0                  ; Default is to NOT check service 'freshness'
    notifications_enabled         1                  ; Service notifications are enabled
    event_handler_enabled         1                  ; Service event handler is enabled
    flap_detection_enabled        1                  ; Flap detection is enabled
    failure_prediction_enabled    1                  ; Failure prediction is enabled
    process_perf_data             1                  ; Process performance data
    retain_status_information     1                  ; Retain status information across program restarts
    retain_nonstatus_information  1                  ; Retain non-status information across program restarts
    is_volatile                   0                  ; The service is not volatile
    check_period                  24x7               ; The service can be checked at any time of the day
    max_check_attempts            3                  ; Re-check the service up to 3 times in order to determine its final (hard) state
    normal_check_interval         5                  ; Check the service every 10 minutes under normal conditions
    retry_check_interval          2                  ; Re-check the service every two minutes until a hard state can be determined
    contact_groups                hpunix-servers     ; Notifications get sent out to everyone in the 'admins' group
    notification_options          w,u,c,r            ; Send notifications about warning, unknown, critical, and recovery events
    notification_interval         60                 ; Re-notify about service problems every hour
    notification_period           24x7               ; Notifications can be sent out at any time
    register                      1                  ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
define hostgroup {
    hostgroup_name    linux-servers
    alias             My Linux Servers
define servicegroup {
    servicegroup_name MyServiceGroup
    alias             My Services
    members           Host1, Host2, Host3, Service1, Service2, Service3
define host {
    use                     linuxsrv-server            
    alias                   Linux Server
    contact_groups          admins,linuxadm,aplicat
define service {
    use                     linuxsrv-service
    service_description     PING
    check_command           check_ping!100.0,20%!500.0,60%
    contact_groups          admins,linuxadm,aplicat
define service{
    use                     linuxsrv-service
    service_description     SWAP usage
    check_command           check_nrpe!check_swap
    contact_groups          admins,linuxadm,aplicat
define service{        
    use                     linuxsrv-service
    service_description     Current Logged in Users
    check_command           check_nrpe!check_users
    contact_groups          admins,linuxadm,aplicat
##### END #####

With this linux.cfg file we have defined a host in Nagios. This host is now visible in Nagios web frontend and Nagios is actively checking the state of the host and defined services. Of course client also has to have Nagios plugins and Nrpe service installed and properly configured.

Nagios Commands and Contacts configuration files:

  • commands.cfg

Command definitions for Nagios are defined in commands.cfg file. With these commands Nagios checks for hosts and services. Nagios locally runs a defined command, which responds back with the state of a host or a service. You can test these commands by running them from Linux console manually and checking their output.

define command {
    command_name        check_nrpe
    command_line        $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
define command {
    command_name check_telnet
    command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 23
##### END #####
  • contacts.cfg

Contacts and groups are defined in contacts.cfg file. Just one contact is defined in Nagios by default – this is the Nagios admin. All of the other contacts need to be defined additionally. Below is a sample of defined contacts.

define contact {
    contact_name                    concact1                 ; Short name of user
    use                             generic-contact          ; Inherit default values from generic-contact template (defined above)
    alias                           My Contact1              ; Full name of user
    service_notification_commands   notify-service-by-email
    host_notification_commands      notify-host-by-email
    email                     ; Contacts email address
define contact {
    contact_name                    concact2                 ; Short name of user
    use                             generic-contact          ; Inherit default values from generic-contact template (defined above)
    alias                           My Contact2              ; Full name of user
    service_notification_commands   notify-service-by-email
    host_notification_commands      notify-host-by-email
    email                     ; Contacts email address
define contactgroup {
    contactgroup_name       admins
    alias                   Nagios Administrators
    members                 contact1,contact2
define contactgroup{
    contactgroup_name       sys_admins
    alias                   System Administrators
    members                 user1,user2,user3,user4
##### END #####

Nagios configuration check:

There is a simple way to test the Nagios configuration for errors. You should do this everytime you change any of the nagios configuration files to make sure, that the next time you will stop and start Nagios service the service will start and not fail because of some syntax error.

This is the way to check Nagios configuration for errors:

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

The output should be something like this:

 Nagios Core 3.5.0
Copyright (c) 2009-2011 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 03-15-2013
License: GPL

Reading configuration data...
   Read main config file okay...
Processing object config file '/usr/local/nagios/etc/objects/commands.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/contacts.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/timeperiods.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/templates.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/mail.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/backup.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/windows.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/linux.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/networking.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/aix.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/hpux.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/localhost.cfg'...
   Read object config files okay...

Running pre-flight check on configuration data...

Checking services...
        Checked 1259 services.
Checking hosts...
        Checked 119 hosts.
Checking host groups...
        Checked 10 host groups.
Checking service groups...
        Checked 3 service groups.
Checking contacts...
        Checked 27 contacts.
Checking contact groups...
        Checked 10 contact groups.
Checking service escalations...
        Checked 0 service escalations.
Checking service dependencies...
        Checked 0 service dependencies.
Checking host escalations...
        Checked 0 host escalations.
Checking host dependencies...
        Checked 0 host dependencies.
Checking commands...
        Checked 82 commands.
Checking time periods...
        Checked 5 time periods.
Checking for circular paths between hosts...
Checking for circular host and service dependencies...
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

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