.. -*- mode: rst -*-
.. _server-plugins-generators-nagiosgen:
=========
NagiosGen
=========
This page describes the installation and use of the `NagiosGen`_ plugin.
.. _NagiosGen: https://github.com/Bcfg2/bcfg2/blob/maint/src/lib/Bcfg2/Server/Plugins/NagiosGen.py
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``
.. code-block:: xml
Assign clients to nagios groups in
``/var/lib/bcfg2/Metadata/groups.xml``
.. code-block:: xml
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.:
.. code-block:: xml
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.