sampledoc

NagiosGen

This page describes the installation and use of the NagiosGen plugin.

Update /etc/bcfg2.conf, adding NagiosGen to plugins:

plugins = Bundler,Cfg,...,NagiosGen

Create the NagiosGen directory:

$ mkdir /var/lib/bcfg2/NagiosGen

Create default host, and group specs in:

/var/lib/bcfg2/NagiosGen/default-host.cfg:

define host{
        name                            default
        check_command                   check-host-alive
        check_interval                  5
        check_period                    24x7
        contact_groups                  admins
        event_handler_enabled           1
        flap_detection_enabled          1
        initial_state                   o
        max_check_attempts              10
        notification_interval           0
        notification_options            d,u,r
        notification_period             workhours
        notifications_enabled           1
        process_perf_data               0
        register                        0
        retain_nonstatus_information    1
        retain_status_information       1
        retry_interval                  1
        }

/var/lib/bcfg2/NagiosGen/default-group.cfg:

define service{
        name                            default-service
        active_checks_enabled           1
        passive_checks_enabled          1
        obsess_over_service             0
        check_freshness                 0
        notifications_enabled           1
        event_handler_enabled           1
        flap_detection_enabled          1
        process_perf_data               0
        retain_status_information       1
        retain_nonstatus_information    1
        is_volatile                     0

        check_period                    24x7
        max_check_attempts              4
        check_interval                  5
        retry_interval                  1
        contact_groups                  admins
        notification_options            w,u,c,r
        notification_interval           0
        notification_period             workhours
        }

Create group configuration files (Named identical to Bcfg2 groups) and add services, and commands specific to the hostgroup (Bcfg2 group) in

/var/lib/bcfg2/NagiosGen/base-group.cfg:

define hostgroup{
        hostgroup_name  base
        alias           base
        notes           Notes
}

define service{
        service_description             NTP
        check_command                   check_ntp!
        use                             default-service
        hostgroup_name                  base
        }

define command{
        command_name    check_ssh
        command_line    $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
        }

define service{
        service_description             SSH
        check_command                   check_ssh!
        use                             default-service
        hostgroup_name                  base
        }

/var/lib/bcfg2/NagiosGen/web-server-group.cfg:

define hostgroup{
        hostgroup_name  web-server
        alias           Port 80 Web Servers
        notes           UC/ANL Teragrid Web Servers Running on Port 80
}

define command{
        command_name    check_http_80
        command_line    $USER1$/check_http $HOSTADDRESS$
        }

define service{
        service_description             HTTP:80
        check_command                   check_http_80!
        use                             default-service
        hostgroup_name                  web-server
        }

Create a nagios Bcfg2 bundle /var/lib/bcfg2/Bundler/nagios.xml

<Bundle>
  <Path name='/etc/nagiosgen.status'/>
  <Group name='redhat'>
    <Group name='nagios-server'>
      <Path name='/etc/nagios/conf.d/bcfg2.cfg'/>
      <Package name='libtool-libs'/>
      <Package name='nagios'/>
      <Package name='nagios-www'/>
      <Service name='nagios'/>
    </Group>
  </Group>
  <Group name='debian-wheezy'>
    <Group name='nagios-server'>
      <Path name='/etc/nagios3/conf.d/bcfg2.cfg'
                  altsrc='/etc/nagios/conf.d/bcfg2.cfg'/>
      <Package name='nagios3'/>
      <Package name='nagios3-common'/>
      <Package name='nagios3-doc'/>
      <Package name='nagios-images'/>
      <Service name='nagios3'/>
    </Group>
  </Group>
</Bundle>

Assign clients to nagios groups in /var/lib/bcfg2/Metadata/groups.xml

<Group name='nagios'>
  <Bundle name='nagios'/>
</Group>

<Group name='nagios-server'>
  <Bundle name='nagios'/>
</Group>

Note that some of these files are built on demand, each time a client in group “nagios-server” checks in with the Bcfg2 server. Local nagios instances can be configured to use the NagiosGen directory in the Bcfg2 repository directly.

Fine-Grained Configuration

NagiosGen can be configured in excruciating detail by editing NagiosGen/config.xml, which will let you set individual Nagios options for hosts or groups. E.g.:

<NagiosGen>
   <Group name="datacenter-2">
      <Option name="parents">dc-2-switch</Option>
   </Group>
   <Group name="non-production">
      <Option name="notification_period">workhours</Option>
      <Option name="notification_options">d</Option>
   </Group>
   <Client name="foo.example.com">
      <Option name="max_check_attempts">10</Option>
   </Client>
</NagiosGen>

Obviously the sort of fine-grained control you get from this overlaps to some degree with Nagios’ own templating, so use it wisely and in moderation.

NagiosGen/config.xml replaces the files Properties/NagiosGen.xml and NagiosGen/parents.xml in older versions of Bcfg2; your old configs can be migrated using the nagiosgen-convert.py tool. The plugin does contain a backwards-compatibility layer for those older config files, but NagiosGen/config.xml must exist (even if empty) for the plugin to function.

Table Of Contents

Previous topic

Decisions

Next topic

Packages

This Page