.. -*- 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.