diff --git a/README.md b/README.md
index 9811da6..12c5a67 100644
--- a/README.md
+++ b/README.md
@@ -43,6 +43,7 @@ Configuration
* configure all aspects of Nagios on server
* manage directories (filesystem permissions, selinux )
* manage cgi.cfg through parameters
+* manage nagios.cfg through parameters
* manage nagios users through external Puppet rules via define
* configure NRPE on clients (optional)
* configure firewall (optional)
@@ -94,10 +95,10 @@ The following parameters must be set to make the module logic work properly:
#### Optional Parameters
* `$ng_include_nrpe` : Whether to include NRPE as means for the Nagios server to connect to clients. Defaults to `true`.
-* `$ng_include_fw` : Whether to include firewall management. Requires [puppetlabs firewall](https://github.com/puppetlabs/puppetlabs-firewall) or [cd_firewall](https://gitlab.puppetsoft.com/12WW1160/cd_firewall), which is a clone of the puppetlabs firewall but tested to be fully functioning with all our features.
+* `$ng_include_fw` : Whether to include firewall management. Requires [puppetlabs firewall](https://github.com/puppetlabs/puppetlabs-firewall) or [cd_firewall](https://gitlab.puppetsoft.com/12WW1160/cd_firewall), which is a backdated clone of the puppetlabs firewall but tested to be fully functioning with all our features.
-See the [full list of all available parameters](https://confdroid.com/2017/07/cd_nagios-parameters/)
+See the [full list of all available parameters](https://confdroid.com/2017/07/cd_nagios-parameters/).
### PuppetDB
A working instance of PuppetDBconnected to the Puppet master is required for this to work. Installation and configuration of PuppetDB is out of scope for this module, however [cd_puppetdb](https://gitlab.puppetsoft.com/12WW1160/cd_puppetdb) is available to automate this task for you as well within a few minutes.
diff --git a/manifests/params.pp b/manifests/params.pp
index 6c251fe..b1d84a8 100644
--- a/manifests/params.pp
+++ b/manifests/params.pp
@@ -212,123 +212,314 @@
# listen to, i.e. 'nagios.example.net'. Unlike `ng_nagios_server`, this
# should not be the FQDN of the nagios host, but a web server domain name.
# required for certbot and used in the web templates.
+# @param [string] ng_log_file main log file where service- and host events
+# are logged.
+# @param [string] ng_max_check_attempts maximum amount of checks done by nagios
+# @param [string] ng_object_cache_file determines where object definitions are
+# cached when # Nagios starts/restarts.
+# @param [string] ng_precached_obj_file determines the location of the
+# precached object file.
+# @param [string] optional resource file that contains $USERx$ macro definitions.
+# @param [string] ng_status_file. where the current status of all monitored
+# services and hosts is stored.
+# @param [string] ng_status_upd_interval status file update interval.
+# determines the frequency (in seconds) that # Nagios will periodically dump
+# program, host, and # service status data.
+# @param [string] ng_check_ext_commands allows you to specify whether or not
+# Nagios should check # for external commands in the command file specified
+# by `ng_command_file`.
+# @param [string] ng_command_file file that Nagios checks for external command
+# requests. It is also where the command CGI will write commands that are
+# submitted # by users, so it must be writeable by the user that the web server
+# is running as.
+# @param [boolean] ng_enable_query_handler Whether to enable the query handler
+# for running nagios in cluster mode.
+# @param [string] ng_query_socket the socket for the query handler
+# @param [string] ng_lock_file lockfile that Nagios will use to store its PID
+# number in when it is running in daemon mode.
+# @param [string] ng_temp_file temporary file that is used as scratch space
+# when Nagios # updates the status log, cleans the comment file, etc.
+# @param [string] ng_temp_path path where Nagios can create temp files for
+# service and # host check results, etc.
+# @param [string] event_broker_options Controls what (if any) data gets sent
+# to the event broker.
+# @param [string] ng_event_broker_module specify an event broker
+# (including full path) module that should # by loaded by Nagios at startup.
+# Specify multiple modules as array ['path/to/module1','/path/to/module2']
+# @param [string] ng_log_rotation_method. Valid options:
+# n = None - don't rotate the log
+# h = Hourly rotation (top of the hour)
+# d = Daily rotation (midnight every day)
+# w = Weekly rotation (midnight on Saturday evening)
+# m = Monthly rotation (midnight last day of month)
+# @param [string] ng_log_archive_path directory where archived (rotated)
+# log files should be # placed (assuming you've chosen to do log rotation).
+# @param [string] ng_use_syslog whether to log messages to the syslog
+# facility, as well as the Nagios log file. Valid options are `0` and `1`.
+# @param [string] ng_log_notifications Whether to log notifications in addition
+# to regular messages. Valid options are `0` and `1`.
+# @param [string] ng_log_service_retries Whether to log service retries.
+# Valid options are `0` and `1`.
+# @param [string] ng_log_host_retries Whether to log host retries.
+# Valid options are `0` and `1`.
+# @param [string] ng_log_event_handlers. Whether to log host and service event
+# handlers. Valid options are `0` and `1`.
+# @param [string] ng_log_initial_states Whether to log initial states.
+# Valid options are `0` and `1`.
+# @param [string] ng_log_current_states Whether to log all current host and
+# service states to the main log file after log has been rotated.
+# Valid options are `0` and `1`.
+# @param [string] ng_log_external_commands Whether to log external commands.
+# Valid options are `0` and `1`.
+# @param [string] ng_log_passive_checks Whether to log passive checks.
+# Valid options are `0` and `1`.
+# @param [string] ng_glob_host_evt_handler Specify a global host event
+# handler # command that is to be run for every host or service state change.
+# The global event handler is executed immediately prior to the event
+# handler that you have optionally specified in each host or # service
+# definition. The command argument is the short name of a # command definition
+# that you define in your host configuration file.
+# @param [string] ng_glob_svc_evt_handler Specify a global service event
+# handler # command that is to be run for every host or service state change.
+# The global event handler is executed immediately prior to the event
+# handler that you have optionally specified in each host or # service
+# definition. The command argument is the short name of a # command definition
+# that you define in your host configuration file.
+# @param [string] ng_svc_int_check_delay method that Nagios should use when
+# initially "spreading out" service checks when it starts monitoring.
+# Valid options:
+# n = None - don't use any delay between checks
+# d = Use a "dumb" delay of 1 second between checks
+# s = Use "smart" inter-check delay calculation
+# x.xx = Use an inter-check delay of x.xx seconds
+# @param [string] ng_max_service_check_spread timeframe (in minutes) from the
+# program start time that an initial check of all services should be completed
+# @param [string] ng_svc_interleave_factor determines how service checks are
+# interleaved. Valid options: s = Use "smart" interleave factor calculation
+# x = Use an interleave factor of x, where x is greater than or equal to 1.
+# @param [string] ng_host_int_check_delay method that Nagios should use when
+# initially "spreading out" host checks when it starts monitoring.
+# Valid options:
+# n = None - don't use any delay between checks
+# d = Use a "dumb" delay of 1 second between checks
+# s = Use "smart" inter-check delay calculation
+# x.xx = Use an inter-check delay of x.xx seconds
+# @param [string] ng_max_host_check_spread timeframe (in minutes) from the
+# program start time that an initial check of all hosts should # be completed.
+# @param [string] ng_max_concurrent_checks specify the maximum number of
+# service checks that can be run in parallel at any given time. A value of 0
+# will not restrict the number of concurrent checks that are being executed.
+# @param [string] ng_check_res_reaper_freq frequency (in seconds!) in which
+# Nagios will process the results of host and service checks.
+# @param [string] ng_check_result_path directory where Nagios stores the
+# results of host and service checks that have not yet been processed.
+# @param [string] ng_max_check_res_file_age maximum age (in seconds) which
+# check result files are considered to be valid.
+# @param [string] ng_cached_h_check_horizon maximum amount of time (in seconds)
+# that the state of a previous host check is considered current.
+# Cached host states (from host checks that were performed more recently
+# that the timeframe specified by this value) can immensely improve
+# performance in regards to the host check logic. Too high of a value for
+# this option may result in inaccurate host states being used by Nagios,
+# while a lower value may result in a performance hit for host checks.
+# Use a value of 0 to disable host check caching.
+# @param [string] ng_cached_s_check_horizon maximum amount of time (in seconds)
+# that the state of a previous service check is considered current.
+# Cached service states (from service checks that were performed more recently
+# that the timeframe specified by this value) can immensely improve
+# performance in regards to the service check logic. Too high of a value for
+# this option may result in inaccurate service states being used by Nagios,
+# while a lower value may result in a performance hit for service checks.
+# Use a value of 0 to disable service check caching.
+# @param [string] ng_pred_host_dep_checks Whether Nagios will attempt to execute
+# checks of hosts when it predicts that future dependency logic test may be
+# needed. Valid options are `0` and `1`.
+# @param [string] ng_pred_svc_dep_checks Whether Nagios will attempt to execute
+# checks of services when it predicts that future dependency logic test may be
+# needed. Valid options are `0` and `1`.
+# @param [string] ng_soft_state_dependencies Whether or not Nagios will use
+# soft state information when checking host and service dependencies.
+# Valid options are `0` and `1`.
+# @param [string] ng_time_change_threshold when Nagios will react to detected
+# changes in system time (either forward or backwards).
+# @param [string] ng_auto_reschedule_checks Whether Nagios will attempt to
+# automatically reschedule active host and service checks to
+# "smooth" them out over time. Experimental feature.
+# Valid options are `0` and `1`.
+# @param [string] ng_auto_reschedule_intval how often (in seconds) Nagios will
+# attempt to automatically reschedule checks. only has an effect if
+# `ng_auto_reschedule_checks` is set to `1`.
+# @param [string] ng_auto_reschedule_window determines the "window" of time
+# (in seconds) that # Nagios will look at when automatically rescheduling
+# checks. Only host and service checks that occur in the next X seconds
+# (determined by this variable) will be rescheduled.
###############################################################################
class cd_nagios::params (
-$pkg_ensure = 'latest',
+$pkg_ensure = 'latest',
-$ng_nagios_server = "nagios.${::domain}",
-$ng_nagios_ext_ip = undef,
-$ng_mail_user = "admin@${::domain}",
+$ng_nagios_server = "nagios.${::domain}",
+$ng_nagios_ext_ip = undef,
+$ng_mail_user = "admin@${::domain}",
-$ng_include_nrpe = true,
+$ng_include_nrpe = true,
# firewall
-$ng_include_fw = true,
-$ng_use_https = true,
-$ng_http_https_fw = true,
-$ng_fw_order = '50',
-$ng_http_port = '80',
-$ng_https_port = '443',
+$ng_include_fw = true,
+$ng_use_https = true,
+$ng_http_https_fw = true,
+$ng_fw_order = '50',
+$ng_http_port = '80',
+$ng_https_port = '443',
# check command parameters
## ping
-$ng_ping_warn = '100.0,20%',
-$ng_ping_crit = '500.0,60%',
-$ng_ping_ensure = 'present',
+$ng_ping_warn = '100.0,20%',
+$ng_ping_crit = '500.0,60%',
+$ng_ping_ensure = 'present',
## disk
-$ng_disk_warn = '20%',
-$ng_disk_crit = '10%' ,
-$ng_disk_ensure = 'present',
+$ng_disk_warn = '20%',
+$ng_disk_crit = '10%' ,
+$ng_disk_ensure = 'present',
# swap
-$ng_swap_warn = '20',
-$ng_swap_crit = '10',
-$ng_swap_ensure = 'present',
+$ng_swap_warn = '20',
+$ng_swap_crit = '10',
+$ng_swap_ensure = 'present',
# users
-$ng_users_warn = '20',
-$ng_users_crit = '50',
-$ng_users_ensure = 'present',
+$ng_users_warn = '20',
+$ng_users_crit = '50',
+$ng_users_ensure = 'present',
#total procs
-$ng_procs_tot_warn = '330',
-$ng_procs_tot_crit = '400',
-$ng_procs_tot_param = 'RDST',
-$ng_procs_tot_ens = 'present',
+$ng_procs_tot_warn = '330',
+$ng_procs_tot_crit = '400',
+$ng_procs_tot_param = 'RDST',
+$ng_procs_tot_ens = 'present',
# zombie procs
-$ng_procs_z_warn = '10',
-$ng_procs_z_crit = '30',
-$ng_procs_z_param = 'Z',
-$ng_procs_z_ensure = 'present',
+$ng_procs_z_warn = '10',
+$ng_procs_z_crit = '30',
+$ng_procs_z_param = 'Z',
+$ng_procs_z_ensure = 'present',
# load
-$ng_load_warn = '5.00,4.00,3.00',
-$ng_load_crit = '10.00,6.00,4.00',
-$ng_load_ensure = 'present',
+$ng_load_warn = '5.00,4.00,3.00',
+$ng_load_crit = '10.00,6.00,4.00',
+$ng_load_ensure = 'present',
# user settings
-$ng_user = 'nagios',
-$ng_u_comment = 'Nagios service user',
-$ng_u_uid = '1004',
-$ng_user_home = '/var/spool/nagios',
-$ng_u_groups = undef,
-$ng_user_shell = '/bin/bash',
+$ng_user = 'nagios',
+$ng_u_comment = 'Nagios service user',
+$ng_u_uid = '1004',
+$ng_user_home = '/var/spool/nagios',
+$ng_u_groups = undef,
+$ng_user_shell = '/bin/bash',
# cgi settings
-$ng_context_help = '1',
-$ng_pending_state = '1',
-$ng_use_auth = '1',
-$ng_use_ssl_auth = '0',
-$ng_enable_def_user = false,
-$ng_def_user_name = 'nagios_insecure',
-$ng_nagios_admin = 'nagios_sec_adm',
-$ng_sysinfo_auth = '',
-$ng_confinfo_auth = '',
-$ng_command_auth = '',
-$ng_hostview_auth = '',
-$ng_serviceview_auth = '',
-$ng_host_cmd_auth = '',
-$ng_svc_cmd_auth = '',
-$ng_readonly_auth = '' ,
-$ng_statusmap_img = 'smbackground.gd2',
-$ng_use_colormap = false,
-$ng_colormap_red = '255',
-$ng_colormap_green = '255',
-$ng_colormap_blue = '255',
-$ng_statusmap_layout = '6',
-$ng_wrl_layout = '4',
-$ng_incl_own_wrl = false,
-$ng_statuswrl_include = '',
-$ng_ping_syntax = '/bin/ping -n -U -c 5 $HOSTADDRESS$',
-$ng_refresh_rate = '90',
-$ng_result_limit = '100',
-$ng_escape_html = '1',
-$ng_use_sound = false,
-$ng_host_unreachable = 'hostdown.wav',
-$ng_host_down = 'hostdown.wav',
-$ng_svc_critical = 'critical.wav',
-$ng_svc_warn = 'warning.wav',
-$ng_svc_unknown = 'warning.wav',
-$ng_normal_sound = 'noproblem.wav',
-$ng_action_url_target = '_blank',
-$ng_notes_url_target = '_blank',
-$ng_lock_author_names = '1',
-$ng_enable_splunk = false,
-$ng_splunk_url = 'http://127.0.0.1:8000/',
-$ng_navbar_addresses = '1',
-$ng_navbar_aliases = '1',
-$ng_ack_no_sticky = '0',
-$ng_ack_no_send = '0',
+$ng_context_help = '1',
+$ng_pending_state = '1',
+$ng_use_auth = '1',
+$ng_use_ssl_auth = '0',
+$ng_enable_def_user = false,
+$ng_def_user_name = 'nagios_insecure',
+$ng_nagios_admin = 'nagios_sec_adm',
+$ng_sysinfo_auth = '',
+$ng_confinfo_auth = '',
+$ng_command_auth = '',
+$ng_hostview_auth = '',
+$ng_serviceview_auth = '',
+$ng_host_cmd_auth = '',
+$ng_svc_cmd_auth = '',
+$ng_readonly_auth = '' ,
+$ng_statusmap_img = 'smbackground.gd2',
+$ng_use_colormap = false,
+$ng_colormap_red = '255',
+$ng_colormap_green = '255',
+$ng_colormap_blue = '255',
+$ng_statusmap_layout = '6',
+$ng_wrl_layout = '4',
+$ng_incl_own_wrl = false,
+$ng_statuswrl_include = '',
+$ng_ping_syntax = '/bin/ping -n -U -c 5 $HOSTADDRESS$',
+$ng_refresh_rate = '90',
+$ng_result_limit = '100',
+$ng_escape_html = '1',
+$ng_use_sound = false,
+$ng_host_unreachable = 'hostdown.wav',
+$ng_host_down = 'hostdown.wav',
+$ng_svc_critical = 'critical.wav',
+$ng_svc_warn = 'warning.wav',
+$ng_svc_unknown = 'warning.wav',
+$ng_normal_sound = 'noproblem.wav',
+$ng_action_url_target = '_blank',
+$ng_notes_url_target = '_blank',
+$ng_lock_author_names = '1',
+$ng_enable_splunk = false,
+$ng_splunk_url = 'http://127.0.0.1:8000/',
+$ng_navbar_addresses = '1',
+$ng_navbar_aliases = '1',
+$ng_ack_no_sticky = '0',
+$ng_ack_no_send = '0',
# selinux
-$ng_use_selinux_tools = true,
+$ng_use_selinux_tools = true,
# httpd
-$ng_required_hosts = '',
-$ng_required_ips = '127.0.0.0/8',
-$ng_enable_index = true,
+$ng_required_hosts = '',
+$ng_required_ips = '127.0.0.0/8',
+$ng_enable_index = true,
# certbot
-$ng_enable_certbot = true,
-$ng_certbot_webroot = '/var/www/html',
-$ng_webserver_name = "nagios.${::domain}",
+$ng_enable_certbot = true,
+$ng_certbot_webroot = '/var/www/html',
+$ng_webserver_name = "nagios.${::domain}",
+
+# main settings
+$ng_log_file = '/var/log/nagios/nagios.log',
+$ng_max_check_attempts = '10',
+$ng_object_cache_file = '/var/spool/nagios/objects.cache',
+$ng_precached_obj_file = '/var/spool/nagios/objects.precache',
+$ng_resource_file = '/etc/nagios/private/resource.cfg',
+$ng_status_file = '/var/log/nagios/status.dat',
+$ng_status_upd_interval = '10',
+$ng_check_ext_commands = '1',
+$ng_command_file = '/var/spool/nagios/cmd/nagios.cmd',
+$ng_enable_query_handler = false,
+$ng_query_socket = '/var/spool/nagios/cmd/nagios.qh',
+$ng_lock_file = '/var/run/nagios/nagios.pid',
+$ng_temp_file = '/var/spool/nagios/nagios.tmp',
+$ng_temp_path = '/tmp',
+$ng_event_broker_options = '-1',
+$ng_event_broker_module = '',
+$ng_log_rotation_method = 'h',
+$ng_log_archive_path = '/var/log/nagios/archives',
+$ng_use_syslog = '1',
+$ng_log_notifications = '1',
+$ng_log_service_retries = '1',
+$ng_log_host_retries = '1',
+$ng_log_event_handlers = '1',
+$ng_log_initial_states = '0',
+$ng_log_current_states = '1',
+$ng_log_external_commands = '1',
+$ng_log_passive_checks = '1',
+$ng_glob_host_evt_handler = '',
+$ng_glob_svc_evt_handler = '',
+$ng_svc_int_check_delay = 's',
+$ng_max_svc_check_spread = '30',
+$ng_svc_interleave_factor = 's',
+$ng_host_int_check_delay = 's',
+$ng_max_host_check_spread = '30',
+$ng_max_concurrent_checks = '0',
+$ng_check_res_reaper_freq = '10',
+$ng_max_check_res_reap_time = '30',
+$ng_check_result_path = '/var/spool/nagios/checkresults',
+$ng_max_check_res_file_age = '3600',
+$ng_cached_h_check_horizon = '15',
+$ng_cached_s_check_horizon = '15',
+$ng_pred_host_dep_checks = '1',
+$ng_pred_svc_dep_checks = '1',
+$ng_soft_state_dependencies = '0',
+$ng_time_change_threshold = '900',
+$ng_auto_reschedule_checks = '0',
+$ng_auto_reschedule_intval = '30',
+$ng_auto_reschedule_window = '180',
) {
@@ -345,50 +536,68 @@ $ng_webserver_name = "nagios.${::domain}",
}
# service
-$ng_service = 'nagios'
-$ae_service = 'httpd'
+$ng_service = 'nagios'
+$ae_service = 'httpd'
# directories
-$ng_main_dir = '/etc/nagios'
-$ng_conf_d_dir = "${ng_main_dir}/conf.d"
-$ng_objects_dir = "${ng_main_dir}/objects"
-$ng_private_dir = "${ng_main_dir}/private"
-$ng_usr_incl = '/usr/include/nagios'
-$ng_lib_dir = '/usr/lib64/nagios'
-$ng_log_dir = '/var/log/nagios'
-$ng_log_archives = "${ng_log_dir}/archives"
-$ng_spool_dir = '/var/spool/nagios'
-$ng_usr_share = '/usr/share/nagios'
-$ng_share_html = "${ng_usr_share}/html"
+$ng_main_dir = '/etc/nagios'
+$ng_conf_d_dir = "${ng_main_dir}/conf.d"
+$ng_objects_dir = "${ng_main_dir}/objects"
+$ng_private_dir = "${ng_main_dir}/private"
+$ng_usr_incl = '/usr/include/nagios'
+$ng_lib_dir = '/usr/lib64/nagios'
+$ng_log_dir = '/var/log/nagios'
+$ng_log_archives = "${ng_log_dir}/archives"
+$ng_spool_dir = '/var/spool/nagios'
+$ng_usr_share = '/usr/share/nagios'
+$ng_share_html = "${ng_usr_share}/html"
# files
-$ng_main_config = "${ng_main_dir}/nagios.cfg"
-$ng_cgi_cfg_file = "${ng_main_dir}/cgi.cfg"
-$ng_cgi_cfg_erb = 'cd_nagios/nagios/cgi_cfg.erb'
-$ng_htpasswd_file = "${ng_main_dir}/passwd"
-$ng_htpasswd_head = 'cd_nagios/nagios/htpasswd_head.erb'
-$ng_htpasswd_rule = 'cd_nagios/nagios/htpasswd_rule.erb'
-$ng_taccgi_erb = 'cd_nagios/selinux/taccgi.erb'
-$ng_statcgi_erb = 'cd_nagios/selinux/statuscgi.erb'
-$ng_nagios_conf = '/etc/httpd/conf.d/nagios.conf'
-$ng_nagios_conf_erb = 'cd_nagios/httpd/nagios_conf.erb'
-$ng_welcome_conf = '/etc/httpd/conf.d/welcome.conf'
-$ng_welcome_conf_erb = 'cd_nagios/httpd/welcome_conf.erb'
-$ng_forward_conf = '/etc/httpd/conf.d/nagios_forward.conf'
-$ng_forward_conf_erb = 'cd_nagios/httpd/forward_conf.erb'
-$ng_get_cert_erb = 'cd_nagios/certbot/get_cert.erb'
-$ng_unless_get_cert = 'cd_nagios/certbot/unless_get_cert.erb'
-$ng_unless_renew_erb = 'cd_nagios/certbot/unless_renew_cert.erb'
-$ng_index_html_file = '/var/www/html/index.html'
-$ng_index_html_erb = 'cd_nagios/httpd/index_html.erb'
-$ng_ssl_vhost_file = '/etc/httpd/conf.d/nagios_ssl.conf'
-$ng_ssl_vhost_erb = 'cd_nagios/httpd/nagios_ssl_vhost.erb'
+$ng_main_config = "${ng_main_dir}/nagios.cfg"
+$ng_cgi_cfg_file = "${ng_main_dir}/cgi.cfg"
+$ng_cgi_cfg_erb = 'cd_nagios/nagios/cgi_cfg.erb'
+$ng_htpasswd_file = "${ng_main_dir}/passwd"
+$ng_htpasswd_head = 'cd_nagios/nagios/htpasswd_head.erb'
+$ng_htpasswd_rule = 'cd_nagios/nagios/htpasswd_rule.erb'
+$ng_taccgi_erb = 'cd_nagios/selinux/taccgi.erb'
+$ng_statcgi_erb = 'cd_nagios/selinux/statuscgi.erb'
+$ng_nagios_conf = '/etc/httpd/conf.d/nagios.conf'
+$ng_nagios_conf_erb = 'cd_nagios/httpd/nagios_conf.erb'
+$ng_welcome_conf = '/etc/httpd/conf.d/welcome.conf'
+$ng_welcome_conf_erb = 'cd_nagios/httpd/welcome_conf.erb'
+$ng_forward_conf = '/etc/httpd/conf.d/nagios_forward.conf'
+$ng_forward_conf_erb = 'cd_nagios/httpd/forward_conf.erb'
+$ng_get_cert_erb = 'cd_nagios/certbot/get_cert.erb'
+$ng_unless_get_cert = 'cd_nagios/certbot/unless_get_cert.erb'
+$ng_unless_renew_erb = 'cd_nagios/certbot/unless_renew_cert.erb'
+$ng_index_html_file = '/var/www/html/index.html'
+$ng_index_html_erb = 'cd_nagios/httpd/index_html.erb'
+$ng_ssl_vhost_file = '/etc/httpd/conf.d/nagios_ssl.conf'
+$ng_ssl_vhost_erb = 'cd_nagios/httpd/nagios_ssl_vhost.erb'
+$ng_nagios_cfg_file = "${ng_main_dir}/nagios.cfg"
+$ng_nagios_cfg_erb = 'cd_nagios/nagios/nagios_cfg.erb'
# certbot
-$ng_certbot_main_dir = '/etc/letsencrypt'
-$ng_certbot_archive = "${ng_certbot_main_dir}/archive"
-$ng_certbot_check = "${ng_certbot_archive}/${ng_webserver_name}/cert1.pem"
-$ng_certbot_live = "${ng_certbot_main_dir}/live"
+$ng_certbot_main_dir = '/etc/letsencrypt'
+$ng_certbot_archive = "${ng_certbot_main_dir}/archive"
+$ng_certbot_check = "${ng_certbot_archive}/${ng_webserver_name}/cert1.pem"
+$ng_certbot_live = "${ng_certbot_main_dir}/live"
+
+# nagios
+
+$ng_target_templates = "${ng_conf_d_dir}/templates.cfg"
+$ng_target_timeperiods = "${ng_conf_d_dir}/timeperiods.cfg"
+$ng_target_localhost = "${ng_conf_d_dir}/nagios_localhost.cfg"
+$ng_target_host = "${ng_conf_d_dir}/nagios_host.cfg"
+$ng_target_hostgroup = "${ng_conf_d_dir}/nagios_hostgroup.cfg"
+$ng_target_hostdep = "${ng_conf_d_dir}/nagios_hostdependency.cfg"
+$ng_target_hostesc = "${ng_conf_d_dir}/nagios_hostescalation.cfg"
+$ng_target_hostext = "${ng_conf_d_dir}/nagios_hostextinfo.cfg"
+$ng_target_service = "${ng_conf_d_dir}/nagios_service.cfg"
+$ng_target_servicegroup = "${ng_conf_d_dir}/nagios_servicegroup.cfg"
+$ng_target_contact = "${ng_conf_d_dir}/nagios_contact.cfg"
+$ng_target_contactgroup = "${ng_conf_d_dir}/nagios_contactgroup.cfg"
+$ng_target_command = "${ng_conf_d_dir}/nagios_command.cfg"
# includes must be last
diff --git a/manifests/server/files.pp b/manifests/server/files.pp
index 21847ac..aea971a 100644
--- a/manifests/server/files.pp
+++ b/manifests/server/files.pp
@@ -37,6 +37,20 @@ class cd_nagios::server::files (
# manage nagios.cfg
+ file { $ng_nagios_cfg_file:
+ ensure => file,
+ path => $ng_nagios_cfg_file,
+ owner => 'root',
+ group => 'root',
+ mode => '0644',
+ selrange => s0,
+ selrole => object_r,
+ seltype => nagios_etc_t,
+ seluser => system_u,
+ content => template($ng_nagios_cfg_erb),
+ notify => Service[$ng_service],
+ }
+
# manage cgi.cfg
file { $ng_cgi_cfg_file:
@@ -53,20 +67,11 @@ class cd_nagios::server::files (
notify => Service[$ng_service],
}
- # manage nagios.conf for httpd
+ # since we use vhost files, we do not want the regular file to appear
+ # after upgrades to avoid conflicts
file { $ng_nagios_conf:
ensure => absent,
-# path => $ng_nagios_conf,
-# owner => 'root',
-# group => 'root',
-# mode => '0644',
-# selrange => s0,
-# selrole => object_r,
-# seltype => httpd_config_t,
-# seluser => system_u,
-# content => template($ng_nagios_conf_erb),
-# notify => Service[$ae_service],
}
file { $ng_forward_conf:
diff --git a/manifests/server/service.pp b/manifests/server/service.pp
index 1c7b828..467e1fc 100644
--- a/manifests/server/service.pp
+++ b/manifests/server/service.pp
@@ -35,5 +35,55 @@ class cd_nagios::server::service (
hasrestart => true,
enable => true,
}
+
+ @@nagios_service { "check_nagios${::hostname}":
+ check_command => 'check_nagios!/var/log/nagios/status.dat!5!/usr/sbin/nagios',
+ use => 'generic-service',
+ host_name => $::fqdn,
+ notification_period => '24x7',
+ target => $ng_target_service,
+ owner => 'nagios',
+ group => 'nagios',
+ mode => '660',
+ contacts => 'DevOps',
+ }
+
+ resources { [ 'nagios_host',
+ 'nagios_hostgroup',
+ 'nagios_hostdependency',
+ 'nagios_hostescalation',
+ 'nagios_hostextinfo',
+ 'nagios_service',
+ 'nagios_servicegroup',
+ 'nagios_servicedependency',
+ 'nagios_serviceescalation',
+ 'nagios_serviceextinfo',
+ 'nagios_contact',
+ 'nagios_contactgroup',
+ 'nagios_command',
+ 'nagios_timeperiod' ]:
+ purge => true,
+ }
+
+
+ # collect resources and populate /etc/nagios/conf.d/nagios_*.cfg
+ Nagios_host <<||>> { notify => Service['nagios'] }
+ Nagios_hostgroup <<||>> { notify => Service['nagios'] }
+ Nagios_hostdependency <<||>> { notify => Service['nagios'] }
+ Nagios_hostescalation <<||>> { notify => Service['nagios'] }
+ Nagios_hostextinfo <<||>> { notify => Service['nagios'] }
+ Nagios_service <<||>> { notify => Service['nagios'] }
+ Nagios_servicegroup <<||>> { notify => Service['nagios'] }
+ Nagios_servicedependency <<||>> { notify => Service['nagios'] }
+ Nagios_serviceescalation <<||>> { notify => Service['nagios'] }
+ Nagios_serviceextinfo <<||>> { notify => Service['nagios'] }
+ Nagios_contact <<||>> { notify => Service['nagios'] }
+ Nagios_contactgroup <<||>> { notify => Service['nagios'] }
+ Nagios_command <<||>> { notify => Service['nagios'] }
+ Nagios_timeperiod <<||>> { notify => Service['nagios'] }
+ }
+
+
+
}
}
diff --git a/templates/httpd/nagios_conf.erb b/templates/httpd/nagios_conf.erb
deleted file mode 100644
index 3d1ad3a..0000000
--- a/templates/httpd/nagios_conf.erb
+++ /dev/null
@@ -1,87 +0,0 @@
-################################################################################
-########## /etc/httpd/conf.d/nagios.conf created by Puppet ###########
-########## manual changes will be overwritten !!! ###########
-################################################################################
-########## full reference is available at ###########
-########## https://confdroid.com/2017/07/nagios-nagios-conf/ ###########
-################################################################################
-
-ScriptAlias /nagios/cgi-bin/ "/usr/lib64/nagios/cgi-bin/"
-
-
-<% if @ng_use_https == true -%>
- SSLRequireSSL
-<% else -%>
-# SSLRequireSSL
-<% end -%>
- Options ExecCGI
- AllowOverride None
- = 2.3>
-
- Require all granted
-<% unless @ng_required_hosts.empty? -%>
- Require host <%= @ng_required_hosts %>
-<% end -%>
-<% unless @ng_required_ips.empty? -%>
- Require ip <%= @ng_required_ips %>
-<% end -%>
- AuthName "Nagios Access"
- AuthType Basic
- AuthUserFile /etc/nagios/passwd
- Require valid-user
-
-
-
- Order allow,deny
-<% unless @ng_required_hosts.empty? -%>
- Allow from <%= @ng_required_hosts %>
-<% end -%>
-<% unless @ng_required_ips.empty? -%>
- Allow from <%= @ng_required_ips %>
-<% end -%>
- AuthName "Nagios Access"
- AuthType Basic
- AuthUserFile /etc/nagios/passwd
- Require valid-user
-
-
-
-Alias /nagios "/usr/share/nagios/html"
-
-
-<% if @ng_use_https == true -%>
- SSLRequireSSL
-<% else -%>
-# SSLRequireSSL
-<% end -%>
- Options None
- AllowOverride None
- = 2.3>
-
- Require all granted
-<% unless @ng_required_hosts.empty? -%>
- Require host <%= @ng_required_hosts %>
-<% end -%>
-<% unless @ng_required_ips.empty? -%>
- Require ip <%= @ng_required_ips %>
-<% end -%>
- AuthName "Nagios Access"
- AuthType Basic
- AuthUserFile /etc/nagios/passwd
- Require valid-user
-
-
-
- Order allow,deny
-<% unless @ng_required_hosts.empty? -%>
- Allow from <%= @ng_required_hosts %>
-<% end -%>
-<% unless @ng_required_ips.empty? -%>
- Allow from <%= @ng_required_ips %>
-<% end -%>
- AuthName "Nagios Access"
- AuthType Basic
- AuthUserFile /etc/nagios/passwd
- Require valid-user
-
-
diff --git a/templates/nagios/nagios_cfg.erb b/templates/nagios/nagios_cfg.erb
new file mode 100644
index 0000000..16fe9f5
--- /dev/null
+++ b/templates/nagios/nagios_cfg.erb
@@ -0,0 +1,861 @@
+################################################################################
+##### nagios.cfg created by Puppet | manual changes will be overwritten #####
+################################################################################
+##### full reference for the original available at #####
+##### https://confdroid.com/2017/07/nagios-nagios-cfg-v-4-3-2/ #####
+################################################################################
+
+log_file=<%= @ng_log_file %>
+
+cfg_dir=<%= @ng_conf_d_dir %>
+
+object_cache_file=<%= @ng_object_cache_file %>
+
+precached_object_file=<%= @ng_precached_obj_file %>
+
+resource_file=<%= @ng_resource_file %>
+
+status_file=<%= @ng_status_file %>
+
+status_update_interval=<%= @ng_status_upd_interval %>
+
+nagios_user=<%= @ng_user %>
+nagios_group=<%= @ng_user %>
+
+check_external_commands=<%= @ng_check_ext_commands %>
+command_file=<%= @ng_command_file %>
+
+<% if @ng_enable_query_handler == true -%>
+query_socket=<%= @ng_query_socket %>
+<% end -%>
+
+lock_file=<%= @ng_lock_file %>
+temp_file=<%= @ng_temp_file %>
+temp_path=<%= @ng_temp_path %>
+
+event_broker_options=<%= @ng_event_broker_options %>
+
+<% unless @ng_event_broker_module.empty? -%>
+<% @ng_event_broker_module.each do |broker_module| -%>
+broker_module=<%= broker_module %>
+<% end end -%>
+
+log_rotation_method=<%= @ng_log_rotation_method %>
+log_archive_path=<%= @ng_log_archive_path %>
+use_syslog=<%= @ng_use_syslog %>
+log_notifications=<%= @ng_log_notifications %>
+log_service_retries=<%= @ng_log_service_retries %>
+log_host_retries=<%= @ng_log_host_retries %>
+log_event_handlers=<%= @ng_log_event_handlers %>
+log_initial_states=<%= @ng_log_initial_states %>
+log_current_states=<%= @ng_log_current_states %>
+log_external_commands=<%= @ng_log_external_commands %>
+log_passive_checks=<%= @ng_log_passive_checks %>
+
+<% unless @ng_glob_host_evt_handler.empty? -%>
+<% @ng_glob_host_evt_handler.each do |global_host_event_handler| -%>
+global_host_event_handler=<%= @ng_glob_host_evt_handler %>
+<% end end -%>
+<% unless @ng_glob_svc_evt_handler.empty? -%>
+<% @ng_glob_svc_evt_handler.each do |global_service_event_handler| -%>
+global_service_event_handler=<%= @ng_glob_svc_evt_handler %>
+<% end end -%>
+
+service_inter_check_delay_method=<%= @ng_svc_int_check_delay %>
+max_service_check_spread=<%= @ng_max_svc_check_spread %>
+service_interleave_factor=<%= @ng_svc_interleave_factor %>
+
+host_inter_check_delay_method=<%= @ng_host_int_check_delay %>
+max_host_check_spread=<%= @ng_max_host_check_spread %>
+
+max_concurrent_checks=<%= @ng_max_concurrent_checks %>
+check_result_reaper_frequency=<%= @ng_check_res_reaper_freq %>
+max_check_result_reaper_time=<%= @ng_max_check_res_reap_time %>
+
+check_result_path=<%= @ng_check_result_path %>
+max_check_result_file_age=<%= @ng_max_check_res_file_age %>
+cached_host_check_horizon=<%= @ng_cached_h_check_horizon %>
+cached_service_check_horizon=<%= @ng_cached_s_check_horizon %>
+
+enable_predictive_host_dependency_checks=<%= @ng_pred_host_dep_checks %>
+enable_predictive_service_dependency_checks=<%= @ng_pred_svc_dep_checks %>
+
+soft_state_dependencies=<%= @ng_soft_state_dependencies %>
+
+time_change_threshold=<%= @ng_time_change_threshold %>
+
+auto_reschedule_checks=<%= @ng_auto_reschedule_checks %>
+auto_rescheduling_interval=<%= @ng_auto_reschedule_intval %>
+auto_rescheduling_window=<%= @ng_auto_reschedule_window %>
+
+
+
+# TIMEOUT VALUES
+# These options control how much time Nagios will allow various
+# types of commands to execute before killing them off. Options
+# are available for controlling maximum time allotted for
+# service checks, host checks, event handlers, notifications, the
+# ocsp command, and performance data commands. All values are in
+# seconds.
+
+service_check_timeout=60
+host_check_timeout=30
+event_handler_timeout=30
+notification_timeout=30
+ocsp_timeout=5
+perfdata_timeout=5
+
+
+
+# RETAIN STATE INFORMATION
+# This setting determines whether or not Nagios will save state
+# information for services and hosts before it shuts down. Upon
+# startup Nagios will reload all saved service and host state
+# information before starting to monitor. This is useful for
+# maintaining long-term data on state statistics, etc, but will
+# slow Nagios down a bit when it (re)starts. Since its only
+# a one-time penalty, I think its well worth the additional
+# startup delay.
+
+retain_state_information=1
+
+
+
+# STATE RETENTION FILE
+# This is the file that Nagios should use to store host and
+# service state information before it shuts down. The state
+# information in this file is also read immediately prior to
+# starting to monitor the network when Nagios is restarted.
+# This file is used only if the retain_state_information
+# variable is set to 1.
+
+state_retention_file=/var/spool/nagios/retention.dat
+
+
+
+# RETENTION DATA UPDATE INTERVAL
+# This setting determines how often (in minutes) that Nagios
+# will automatically save retention data during normal operation.
+# If you set this value to 0, Nagios will not save retention
+# data at regular interval, but it will still save retention
+# data before shutting down or restarting. If you have disabled
+# state retention, this option has no effect.
+
+retention_update_interval=60
+
+
+
+# USE RETAINED PROGRAM STATE
+# This setting determines whether or not Nagios will set
+# program status variables based on the values saved in the
+# retention file. If you want to use retained program status
+# information, set this value to 1. If not, set this value
+# to 0.
+
+use_retained_program_state=1
+
+
+
+# USE RETAINED SCHEDULING INFO
+# This setting determines whether or not Nagios will retain
+# the scheduling info (next check time) for hosts and services
+# based on the values saved in the retention file. If you
+# If you want to use retained scheduling info, set this
+# value to 1. If not, set this value to 0.
+
+use_retained_scheduling_info=1
+
+
+
+# RETAINED ATTRIBUTE MASKS (ADVANCED FEATURE)
+# The following variables are used to specify specific host and
+# service attributes that should *not* be retained by Nagios during
+# program restarts.
+#
+# The values of the masks are bitwise ANDs of values specified
+# by the "MODATTR_" definitions found in include/common.h.
+# For example, if you do not want the current enabled/disabled state
+# of flap detection and event handlers for hosts to be retained, you
+# would use a value of 24 for the host attribute mask...
+# MODATTR_EVENT_HANDLER_ENABLED (8) + MODATTR_FLAP_DETECTION_ENABLED (16) = 24
+
+# This mask determines what host attributes are not retained
+retained_host_attribute_mask=0
+
+# This mask determines what service attributes are not retained
+retained_service_attribute_mask=0
+
+# These two masks determine what process attributes are not retained.
+# There are two masks, because some process attributes have host and service
+# options. For example, you can disable active host checks, but leave active
+# service checks enabled.
+retained_process_host_attribute_mask=0
+retained_process_service_attribute_mask=0
+
+# These two masks determine what contact attributes are not retained.
+# There are two masks, because some contact attributes have host and
+# service options. For example, you can disable host notifications for
+# a contact, but leave service notifications enabled for them.
+retained_contact_host_attribute_mask=0
+retained_contact_service_attribute_mask=0
+
+
+
+# INTERVAL LENGTH
+# This is the seconds per unit interval as used in the
+# host/contact/service configuration files. Setting this to 60 means
+# that each interval is one minute long (60 seconds). Other settings
+# have not been tested much, so your mileage is likely to vary...
+
+interval_length=60
+
+
+
+# CHECK FOR UPDATES
+# This option determines whether Nagios will automatically check to
+# see if new updates (releases) are available. It is recommend that you
+# enable this option to ensure that you stay on top of the latest critical
+# patches to Nagios. Nagios is critical to you - make sure you keep it in
+# good shape. Nagios will check once a day for new updates. Data collected
+# by Nagios Enterprises from the update check is processed in accordance
+# with our privacy policy - see https://api.nagios.org for details.
+
+check_for_updates=1
+
+
+
+# BARE UPDATE CHECK
+# This option determines what data Nagios will send to api.nagios.org when
+# it checks for updates. By default, Nagios will send information on the
+# current version of Nagios you have installed, as well as an indicator as
+# to whether this was a new installation or not. Nagios Enterprises uses
+# this data to determine the number of users running specific version of
+# Nagios. Enable this option if you do not want this information to be sent.
+
+bare_update_check=0
+
+
+
+# AGGRESSIVE HOST CHECKING OPTION
+# If you don't want to turn on aggressive host checking features, set
+# this value to 0 (the default). Otherwise set this value to 1 to
+# enable the aggressive check option. Read the docs for more info
+# on what aggressive host check is or check out the source code in
+# base/checks.c
+
+use_aggressive_host_checking=0
+
+
+
+# SERVICE CHECK EXECUTION OPTION
+# This determines whether or not Nagios will actively execute
+# service checks when it initially starts. If this option is
+# disabled, checks are not actively made, but Nagios can still
+# receive and process passive check results that come in. Unless
+# you're implementing redundant hosts or have a special need for
+# disabling the execution of service checks, leave this enabled!
+# Values: 1 = enable checks, 0 = disable checks
+
+execute_service_checks=1
+
+
+
+# PASSIVE SERVICE CHECK ACCEPTANCE OPTION
+# This determines whether or not Nagios will accept passive
+# service checks results when it initially (re)starts.
+# Values: 1 = accept passive checks, 0 = reject passive checks
+
+accept_passive_service_checks=1
+
+
+
+# HOST CHECK EXECUTION OPTION
+# This determines whether or not Nagios will actively execute
+# host checks when it initially starts. If this option is
+# disabled, checks are not actively made, but Nagios can still
+# receive and process passive check results that come in. Unless
+# you're implementing redundant hosts or have a special need for
+# disabling the execution of host checks, leave this enabled!
+# Values: 1 = enable checks, 0 = disable checks
+
+execute_host_checks=1
+
+
+
+# PASSIVE HOST CHECK ACCEPTANCE OPTION
+# This determines whether or not Nagios will accept passive
+# host checks results when it initially (re)starts.
+# Values: 1 = accept passive checks, 0 = reject passive checks
+
+accept_passive_host_checks=1
+
+
+
+# NOTIFICATIONS OPTION
+# This determines whether or not Nagios will sent out any host or
+# service notifications when it is initially (re)started.
+# Values: 1 = enable notifications, 0 = disable notifications
+
+enable_notifications=1
+
+
+
+# EVENT HANDLER USE OPTION
+# This determines whether or not Nagios will run any host or
+# service event handlers when it is initially (re)started. Unless
+# you're implementing redundant hosts, leave this option enabled.
+# Values: 1 = enable event handlers, 0 = disable event handlers
+
+enable_event_handlers=1
+
+
+
+# PROCESS PERFORMANCE DATA OPTION
+# This determines whether or not Nagios will process performance
+# data returned from service and host checks. If this option is
+# enabled, host performance data will be processed using the
+# host_perfdata_command (defined below) and service performance
+# data will be processed using the service_perfdata_command (also
+# defined below). Read the HTML docs for more information on
+# performance data.
+# Values: 1 = process performance data, 0 = do not process performance data
+
+process_performance_data=0
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA PROCESSING COMMANDS
+# These commands are run after every host and service check is
+# performed. These commands are executed only if the
+# enable_performance_data option (above) is set to 1. The command
+# argument is the short name of a command definition that you
+# define in your host configuration file. Read the HTML docs for
+# more information on performance data.
+
+#host_perfdata_command=process-host-perfdata
+#service_perfdata_command=process-service-perfdata
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA FILES
+# These files are used to store host and service performance data.
+# Performance data is only written to these files if the
+# enable_performance_data option (above) is set to 1.
+
+#host_perfdata_file=/var/spool/nagios/host-perfdata
+#service_perfdata_file=/var/spool/nagios/service-perfdata
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA FILE TEMPLATES
+# These options determine what data is written (and how) to the
+# performance data files. The templates may contain macros, special
+# characters (\t for tab, \r for carriage return, \n for newline)
+# and plain text. A newline is automatically added after each write
+# to the performance data file. Some examples of what you can do are
+# shown below.
+
+#host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$
+#service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA FILE MODES
+# This option determines whether or not the host and service
+# performance data files are opened in write ("w") or append ("a")
+# mode. If you want to use named pipes, you should use the special
+# pipe ("p") mode which avoid blocking at startup, otherwise you will
+# likely want the default append ("a") mode.
+
+#host_perfdata_file_mode=a
+#service_perfdata_file_mode=a
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING INTERVAL
+# These options determine how often (in seconds) the host and service
+# performance data files are processed using the commands defined
+# below. A value of 0 indicates the files should not be periodically
+# processed.
+
+#host_perfdata_file_processing_interval=0
+#service_perfdata_file_processing_interval=0
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING COMMANDS
+# These commands are used to periodically process the host and
+# service performance data files. The interval at which the
+# processing occurs is determined by the options above.
+
+#host_perfdata_file_processing_command=process-host-perfdata-file
+#service_perfdata_file_processing_command=process-service-perfdata-file
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA PROCESS EMPTY RESULTS
+# These options determine wether the core will process empty perfdata
+# results or not. This is needed for distributed monitoring, and intentionally
+# turned on by default.
+# If you don't require empty perfdata - saving some cpu cycles
+# on unwanted macro calculation - you can turn that off. Be careful!
+# Values: 1 = enable, 0 = disable
+
+#host_perfdata_process_empty_results=1
+#service_perfdata_process_empty_results=1
+
+
+# OBSESS OVER SERVICE CHECKS OPTION
+# This determines whether or not Nagios will obsess over service
+# checks and run the ocsp_command defined below. Unless you're
+# planning on implementing distributed monitoring, do not enable
+# this option. Read the HTML docs for more information on
+# implementing distributed monitoring.
+# Values: 1 = obsess over services, 0 = do not obsess (default)
+
+obsess_over_services=0
+
+
+
+# OBSESSIVE COMPULSIVE SERVICE PROCESSOR COMMAND
+# This is the command that is run for every service check that is
+# processed by Nagios. This command is executed only if the
+# obsess_over_services option (above) is set to 1. The command
+# argument is the short name of a command definition that you
+# define in your host configuration file. Read the HTML docs for
+# more information on implementing distributed monitoring.
+
+#ocsp_command=somecommand
+
+
+
+# OBSESS OVER HOST CHECKS OPTION
+# This determines whether or not Nagios will obsess over host
+# checks and run the ochp_command defined below. Unless you're
+# planning on implementing distributed monitoring, do not enable
+# this option. Read the HTML docs for more information on
+# implementing distributed monitoring.
+# Values: 1 = obsess over hosts, 0 = do not obsess (default)
+
+obsess_over_hosts=0
+
+
+
+# OBSESSIVE COMPULSIVE HOST PROCESSOR COMMAND
+# This is the command that is run for every host check that is
+# processed by Nagios. This command is executed only if the
+# obsess_over_hosts option (above) is set to 1. The command
+# argument is the short name of a command definition that you
+# define in your host configuration file. Read the HTML docs for
+# more information on implementing distributed monitoring.
+
+#ochp_command=somecommand
+
+
+
+# TRANSLATE PASSIVE HOST CHECKS OPTION
+# This determines whether or not Nagios will translate
+# DOWN/UNREACHABLE passive host check results into their proper
+# state for this instance of Nagios. This option is useful
+# if you have distributed or failover monitoring setup. In
+# these cases your other Nagios servers probably have a different
+# "view" of the network, with regards to the parent/child relationship
+# of hosts. If a distributed monitoring server thinks a host
+# is DOWN, it may actually be UNREACHABLE from the point of
+# this Nagios instance. Enabling this option will tell Nagios
+# to translate any DOWN or UNREACHABLE host states it receives
+# passively into the correct state from the view of this server.
+# Values: 1 = perform translation, 0 = do not translate (default)
+
+translate_passive_host_checks=0
+
+
+
+# PASSIVE HOST CHECKS ARE SOFT OPTION
+# This determines whether or not Nagios will treat passive host
+# checks as being HARD or SOFT. By default, a passive host check
+# result will put a host into a HARD state type. This can be changed
+# by enabling this option.
+# Values: 0 = passive checks are HARD, 1 = passive checks are SOFT
+
+passive_host_checks_are_soft=0
+
+
+
+# ORPHANED HOST/SERVICE CHECK OPTIONS
+# These options determine whether or not Nagios will periodically
+# check for orphaned host service checks. Since service checks are
+# not rescheduled until the results of their previous execution
+# instance are processed, there exists a possibility that some
+# checks may never get rescheduled. A similar situation exists for
+# host checks, although the exact scheduling details differ a bit
+# from service checks. Orphaned checks seem to be a rare
+# problem and should not happen under normal circumstances.
+# If you have problems with service checks never getting
+# rescheduled, make sure you have orphaned service checks enabled.
+# Values: 1 = enable checks, 0 = disable checks
+
+check_for_orphaned_services=1
+check_for_orphaned_hosts=1
+
+
+
+# SERVICE FRESHNESS CHECK OPTION
+# This option determines whether or not Nagios will periodically
+# check the "freshness" of service results. Enabling this option
+# is useful for ensuring passive checks are received in a timely
+# manner.
+# Values: 1 = enabled freshness checking, 0 = disable freshness checking
+
+check_service_freshness=1
+
+
+
+# SERVICE FRESHNESS CHECK INTERVAL
+# This setting determines how often (in seconds) Nagios will
+# check the "freshness" of service check results. If you have
+# disabled service freshness checking, this option has no effect.
+
+service_freshness_check_interval=60
+
+
+
+# SERVICE CHECK TIMEOUT STATE
+# This setting determines the state Nagios will report when a
+# service check times out - that is does not respond within
+# service_check_timeout seconds. This can be useful if a
+# machine is running at too high a load and you do not want
+# to consider a failed service check to be critical (the default).
+# Valid settings are:
+# c - Critical (default)
+# u - Unknown
+# w - Warning
+# o - OK
+
+service_check_timeout_state=c
+
+
+
+# HOST FRESHNESS CHECK OPTION
+# This option determines whether or not Nagios will periodically
+# check the "freshness" of host results. Enabling this option
+# is useful for ensuring passive checks are received in a timely
+# manner.
+# Values: 1 = enabled freshness checking, 0 = disable freshness checking
+
+check_host_freshness=0
+
+
+
+# HOST FRESHNESS CHECK INTERVAL
+# This setting determines how often (in seconds) Nagios will
+# check the "freshness" of host check results. If you have
+# disabled host freshness checking, this option has no effect.
+
+host_freshness_check_interval=60
+
+
+
+
+# ADDITIONAL FRESHNESS THRESHOLD LATENCY
+# This setting determines the number of seconds that Nagios
+# will add to any host and service freshness thresholds that
+# it calculates (those not explicitly specified by the user).
+
+additional_freshness_latency=15
+
+
+
+
+# FLAP DETECTION OPTION
+# This option determines whether or not Nagios will try
+# and detect hosts and services that are "flapping".
+# Flapping occurs when a host or service changes between
+# states too frequently. When Nagios detects that a
+# host or service is flapping, it will temporarily suppress
+# notifications for that host/service until it stops
+# flapping. Flap detection is very experimental, so read
+# the HTML documentation before enabling this feature!
+# Values: 1 = enable flap detection
+# 0 = disable flap detection (default)
+
+enable_flap_detection=1
+
+
+
+# FLAP DETECTION THRESHOLDS FOR HOSTS AND SERVICES
+# Read the HTML documentation on flap detection for
+# an explanation of what this option does. This option
+# has no effect if flap detection is disabled.
+
+low_service_flap_threshold=5.0
+high_service_flap_threshold=20.0
+low_host_flap_threshold=5.0
+high_host_flap_threshold=20.0
+
+
+
+# DATE FORMAT OPTION
+# This option determines how short dates are displayed. Valid options
+# include:
+# us (MM-DD-YYYY HH:MM:SS)
+# euro (DD-MM-YYYY HH:MM:SS)
+# iso8601 (YYYY-MM-DD HH:MM:SS)
+# strict-iso8601 (YYYY-MM-DDTHH:MM:SS)
+#
+
+date_format=us
+
+
+
+
+# TIMEZONE OFFSET
+# This option is used to override the default timezone that this
+# instance of Nagios runs in. If not specified, Nagios will use
+# the system configured timezone.
+#
+# NOTE: In order to display the correct timezone in the CGIs, you
+# will also need to alter the Apache directives for the CGI path
+# to include your timezone. Example:
+#
+#
+# SetEnv TZ "Australia/Brisbane"
+# ...
+#
+
+#use_timezone=US/Mountain
+#use_timezone=Australia/Brisbane
+
+
+
+# ILLEGAL OBJECT NAME CHARACTERS
+# This option allows you to specify illegal characters that cannot
+# be used in host names, service descriptions, or names of other
+# object types.
+
+illegal_object_name_chars=`~!$%^&*|'"<>?,()=
+
+
+
+# ILLEGAL MACRO OUTPUT CHARACTERS
+# This option allows you to specify illegal characters that are
+# stripped from macros before being used in notifications, event
+# handlers, etc. This DOES NOT affect macros used in service or
+# host check commands.
+# The following macros are stripped of the characters you specify:
+# $HOSTOUTPUT$
+# $LONGHOSTOUTPUT$
+# $HOSTPERFDATA$
+# $HOSTACKAUTHOR$
+# $HOSTACKCOMMENT$
+# $SERVICEOUTPUT$
+# $LONGSERVICEOUTPUT$
+# $SERVICEPERFDATA$
+# $SERVICEACKAUTHOR$
+# $SERVICEACKCOMMENT$
+
+illegal_macro_output_chars=`~$&|'"<>
+
+
+
+# REGULAR EXPRESSION MATCHING
+# This option controls whether or not regular expression matching
+# takes place in the object config files. Regular expression
+# matching is used to match host, hostgroup, service, and service
+# group names/descriptions in some fields of various object types.
+# Values: 1 = enable regexp matching, 0 = disable regexp matching
+
+use_regexp_matching=0
+
+
+
+# "TRUE" REGULAR EXPRESSION MATCHING
+# This option controls whether or not "true" regular expression
+# matching takes place in the object config files. This option
+# only has an effect if regular expression matching is enabled
+# (see above). If this option is DISABLED, regular expression
+# matching only occurs if a string contains wildcard characters
+# (* and ?). If the option is ENABLED, regexp matching occurs
+# all the time (which can be annoying).
+# Values: 1 = enable true matching, 0 = disable true matching
+
+use_true_regexp_matching=0
+
+
+
+# ADMINISTRATOR EMAIL/PAGER ADDRESSES
+# The email and pager address of a global administrator (likely you).
+# Nagios never uses these values itself, but you can access them by
+# using the $ADMINEMAIL$ and $ADMINPAGER$ macros in your notification
+# commands.
+
+admin_email=nagios@localhost
+admin_pager=pagenagios@localhost
+
+
+
+# DAEMON CORE DUMP OPTION
+# This option determines whether or not Nagios is allowed to create
+# a core dump when it runs as a daemon. Note that it is generally
+# considered bad form to allow this, but it may be useful for
+# debugging purposes. Enabling this option doesn't guarantee that
+# a core file will be produced, but that's just life...
+# Values: 1 - Allow core dumps
+# 0 - Do not allow core dumps (default)
+
+daemon_dumps_core=0
+
+
+
+# LARGE INSTALLATION TWEAKS OPTION
+# This option determines whether or not Nagios will take some shortcuts
+# which can save on memory and CPU usage in large Nagios installations.
+# Read the documentation for more information on the benefits/tradeoffs
+# of enabling this option.
+# Values: 1 - Enabled tweaks
+# 0 - Disable tweaks (default)
+
+use_large_installation_tweaks=0
+
+
+
+# ENABLE ENVIRONMENT MACROS
+# This option determines whether or not Nagios will make all standard
+# macros available as environment variables when host/service checks
+# and system commands (event handlers, notifications, etc.) are
+# executed.
+# Enabling this is a very bad idea for anything but very small setups,
+# as it means plugins, notification scripts and eventhandlers may run
+# out of environment space. It will also cause a significant increase
+# in CPU- and memory usage and drastically reduce the number of checks
+# you can run.
+# Values: 1 - Enable environment variable macros
+# 0 - Disable environment variable macros (default)
+
+enable_environment_macros=0
+
+
+
+# CHILD PROCESS MEMORY OPTION
+# This option determines whether or not Nagios will free memory in
+# child processes (processed used to execute system commands and host/
+# service checks). If you specify a value here, it will override
+# program defaults.
+# Value: 1 - Free memory in child processes
+# 0 - Do not free memory in child processes
+
+#free_child_process_memory=1
+
+
+
+# CHILD PROCESS FORKING BEHAVIOR
+# This option determines how Nagios will fork child processes
+# (used to execute system commands and host/service checks). Normally
+# child processes are fork()ed twice, which provides a very high level
+# of isolation from problems. Fork()ing once is probably enough and will
+# save a great deal on CPU usage (in large installs), so you might
+# want to consider using this. If you specify a value here, it will
+# program defaults.
+# Value: 1 - Child processes fork() twice
+# 0 - Child processes fork() just once
+
+#child_processes_fork_twice=1
+
+
+
+# DEBUG LEVEL
+# This option determines how much (if any) debugging information will
+# be written to the debug file. OR values together to log multiple
+# types of information.
+# Values:
+# -1 = Everything
+# 0 = Nothing
+# 1 = Functions
+# 2 = Configuration
+# 4 = Process information
+# 8 = Scheduled events
+# 16 = Host/service checks
+# 32 = Notifications
+# 64 = Event broker
+# 128 = External commands
+# 256 = Commands
+# 512 = Scheduled downtime
+# 1024 = Comments
+# 2048 = Macros
+
+debug_level=0
+
+
+
+# DEBUG VERBOSITY
+# This option determines how verbose the debug log out will be.
+# Values: 0 = Brief output
+# 1 = More detailed
+# 2 = Very detailed
+
+debug_verbosity=1
+
+
+
+# DEBUG FILE
+# This option determines where Nagios should write debugging information.
+
+debug_file=/var/spool/nagios/nagios.debug
+
+
+
+# MAX DEBUG FILE SIZE
+# This option determines the maximum size (in bytes) of the debug file. If
+# the file grows larger than this size, it will be renamed with a .old
+# extension. If a file already exists with a .old extension it will
+# automatically be deleted. This helps ensure your disk space usage doesn't
+# get out of control when debugging Nagios.
+
+max_debug_file_size=1000000
+
+
+
+# Should we allow hostgroups to have no hosts, we default this to off since
+# that was the old behavior
+
+allow_empty_hostgroup_assignment=0
+
+
+
+# Normally worker count is dynamically allocated based on 1.5 * number of cpu's
+# with a minimum of 4 workers. This value will override the defaults
+
+#check_workers=3
+
+
+
+# DISABLE SERVICE CHECKS WHEN HOST DOWN
+# This option will disable all service checks if the host is not in an UP state
+#
+# While desirable in some environments, enabling this value can distort report
+# values as the expected quantity of checks will not have been performed
+
+#host_down_disable_service_checks=0
+
+
+
+# EXPERIMENTAL load controlling options
+# To get current defaults based on your system issue a command to
+# the query handler. Please note that this is an experimental feature
+# and not meant for production use. Used incorrectly it can induce
+# enormous latency.
+# #core loadctl
+# jobs_max - The maximum amount of jobs to run at one time
+# jobs_min - The minimum amount of jobs to run at one time
+# jobs_limit - The maximum amount of jobs the current load lets us run
+# backoff_limit - The minimum backoff_change
+# backoff_change - # of jobs to remove from jobs_limit when backing off
+# rampup_limit - Minimum rampup_change
+# rampup_change - # of jobs to add to jobs_limit when ramping up
+# NOTE: The backoff_limit and rampup_limit are NOT used by anything currently,
+# so if your system is under load nothing will actively modify the jobs
+# even if you have these options enabled, they are for external
+# connector information only. However, if you change the jobs_max or
+# jobs_min manually here or through the query handler interface that
+# WILL affect your system
+#loadctl_options=jobs_max=100;backoff_limit=10;rampup_change=5