ONLamp.com
oreilly.comSafari Books Online.Conferences.

advertisement


Building a Self-Healing Network
Pages: 1, 2, 3

Configuring NAGIOS

Two articles by Oktay Altunergil cover NAGIOS in depth. The first, Installing Nagios, covers installing NAGIOS from source. The second, Nagios, Part 2, has an in-depth discussion of the configuration files that are at the heart of NAGIOS's behavior.



The configuration files for NAGIOS typically live in /etc/nagios. The hosts.cfg file defines which hosts NAGIOS should monitor. This file simply defines the web server and its IP address.

# Generic host definition template
define host{
    name                          generic-host ; Host template
    notifications_enabled         1
    event_handler_enabled         1
    flap_detection_enabled        1
    process_perf_data             1
    retain_status_information     1
    retain_nonstatus_information  1
    register                      0 ; DONT REGISTER THIS TEMPLATE
}

# our apache server host definition
define host{
    use                     generic-host ; template to use
    host_name               webserver

    alias                   Our apache webserver
    address                 192.168.0.20
    check_command           check-host-alive
    max_check_attempts      10
    notification_interval   120
    notification_period     24x7
    notification_options    d,u,r
}

services.cfg contains definitions of which services to monitor for each host. This file checks the reachability (via ping) and the availability of the HTTP server.

# Generic service definition template
define service{
    name             generic-service ; This is a template.
    active_checks_enabled           1
    passive_checks_enabled          1
    parallelize_check               1
    obsess_over_service             1
    check_freshness                 0
    notifications_enabled           1
    event_handler_enabled           1
    flap_detection_enabled          1
    process_perf_data               1
    retain_status_information       1
    retain_nonstatus_information    1
    register                        0       ; DONT REGISTER TEMPLATE
}

# Service definition
define service{
    use                             generic-service ; Name of template
    host_name                       webserver
    service_description             PING
    is_volatile                     0
    check_period                    24x7
    max_check_attempts              3
    normal_check_interval           2
    retry_check_interval            1
    contact_groups                  admins
    notification_interval           120
    notification_period             24x7
    notification_options            c,r
    check_command                   check_ping!100.0,20%!500.0,60%
}


# Service definition
define service{
    use                             generic-service ; Name of template
    host_name                       webserver
    service_description             HTTP
    is_volatile                     0
    check_period                    24x7
    max_check_attempts              3
    normal_check_interval           2
    retry_check_interval            1
    contact_groups                  admins
    notification_interval           120
    notification_period             24x7
    notification_options            w,u,c,r
    check_command                   check_http
    event_handler_enabled           1
    event_handler                   handle_cfrun
}

The configuration file contacts.cfg defines who to contact when a monitoring event occurs and how to make the contact. A basic configuration simply mails root.

define contact{
    contact_name                    nagios
    alias                           Nagios Admin
    service_notification_period     24x7
    host_notification_period        24x7
    service_notification_options    w,u,c,r
    host_notification_options       d,u,r
    service_notification_commands   notify-by-email,notify-by-epager
    host_notification_commands      host-notify-by-email,host-notify-by-epager
    email                           root@localhost.localdomain
    pager                           root@localhost.localdomain
}

contactgroups.cfg defines groupings of contacts.

define contactgroup{
        contactgroup_name       admins
        alias                   Apache Server Administrators
        members                 nagios
}

The hostgroups.cfg file contains a mapping of hosts to groups. You only have one host in its own group, associated with your one contact group.

define hostgroup{
        hostgroup_name  webserver
        alias           Apache Web Servers
        contact_groups  admins
        members         webserver
}

Zero out the files dependencies.cfg and escalations.cfg (for example, cp /dev/null to each of these) since you don't need these files in this configuration.

Finally, edit cgi.cfg. If you are in a lab or isolated environment, set use_authentication=0. Otherwise, set up an appropriate htaccess configuration for your /nagios/ directory with sane values. For more information on how NAGIOS manages CGI security, review the NAGIOS CGI Authentication Documentation.

Start up your NAGIOS server: service nagios start.

Go to http://monitor/nagios/ and click service checks. After a few moments, you should see an http & ping in the green. One final note: if you have just installed Apache on your web server, make sure there's a /var/www/html/index.html document so that the server returns OK. Otherwise, it will return 203/NOT AUTHORIZED, which will cause health checking to fail.

You've now created a very vanilla NAGIOS and Cfengine environment. This is something you may have already put into place in your network. But hold on to your hat--here's where I make it interesting.

Pages: 1, 2, 3

Next Pagearrow




Valuable Online Certification Training

Online Certification for Your Career
Earn a Certificate for Professional Development from the University of Illinois Office of Continuing Education upon completion of each online certificate program.

Linux/Unix System Administration Certificate Series — This course series targets both beginning and intermediate Linux/Unix users who want to acquire advanced system administration skills.

PHP/SQL Programming Certificate — The PHP/SQL Programming Certificate series is comprised of four courses covering beginning to advanced PHP programming, beginning to advanced database programming using the SQL language, database theory, and integrated Web 2.0 programming using PHP and SQL on the Unix/Linux mySQL platform.

Enroll today!


Sponsored by: