From c9acdb87e0417a36b0c25320bf8613b17e45448b Mon Sep 17 00:00:00 2001 From: 12ww1160 <12ww1160@confdroid.com> Date: Sat, 7 Mar 2026 15:01:06 +0100 Subject: [PATCH] OP#436 finish nagios.cfg --- manifests/params.pp | 76 ++++++++ templates/nagios/nagios_cfg.erb | 315 ++++---------------------------- 2 files changed, 107 insertions(+), 284 deletions(-) diff --git a/manifests/params.pp b/manifests/params.pp index accb0b5..f65b273 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -287,6 +287,55 @@ # Nagios. Default is '5.0'. # @param [String] ng_high_h_flap_threshold The high host flap threshold for # Nagios. Default is '20.0'. +# @param [String] ng_date_format The date format for Nagios. Default is 'euro'. +# @param [Boolean] ng_use_timezone_offset Whether to use timezone offset in +# Nagios. Default is false. +# @param [String] ng_use_timezone The timezone to use in Nagios if timezone +# offset is enabled. Default is 'UTC'. +# @param [String] ng_illegal_obj_name_chars A string of characters that are not +# allowed in object names in Nagios. Default is '~!$%^&*|\'"<>?,()='. +# @param [String] ng_ill_macro_output_chars A string of characters that are not +# allowed in macro output in Nagios. Default is '`~$&|\'"<>?,()='. +# @param [String] ng_use_regexp_matching Whether to use regular expression +# matching in Nagios. Default is '0'. +# @param [String] ng_true_regexp_matching Whether to use true regular expression +# matching in Nagios. Default is '0'. +# @param [String] ng_mail_user The email address for the Nagios administrator. +# Default is 'nagios@localhost'. +# @param [String] ng_page_user The pager address for the Nagios administrator. +# Default is 'nagios@localhost'. +# @param [String] ng_daemon_dumps_core Whether to allow the Nagios daemon to dump +# core files. Default is '0'. +# @param [String] ng_use_large_inst_tweaks Whether to use large instance tweaks +# in Nagios. Default is '0'. +# @param [String] ng_enable_env_macros Whether to enable environment macros in +# Nagios. Default is '0'. +# @param [String] ng_free_child_process_mem Whether to free child process memory +# after processing checks in Nagios. Default is '1'. +# @param [String] ng_child_proc_fork_twice Whether to fork child processes twice +# in Nagios. Default is '1'. +# @param [String] ng_debug_level The debug level for Nagios. Default is '0'. +# @param [String] ng_debug_verbosity The debug verbosity for Nagios. Default is '1'. +# @param [String] ng_max_debug_file_size The maximum debug file size for Nagios. +# Default is '1000000'. +# @param [String] ng_allow_empty_hostgroups Whether to allow empty hostgroup +# assignments in Nagios. Default is '1'. +# @param [String] ng_check_workers The number of check worker processes for Nagios. +# Default is '3'. +# @param [String] ng_host_down_svc_checks Whether to disable service checks when +# a host is down in Nagios. Default is '0'. +# @param [String] ng_svc_skip_chk_dep_status The status to skip for dependency checks +# in Nagios. Default is '-1'. +# @param [String] ng_svc_skip_chk_par_status The status to skip for parent checks +# in Nagios. Default is '-1'. +# @param [String] ng_svc_skip_chk_par_h_d_sts The status to skip for parent +# host down checks in Nagios. Default is '-1'. +# @param [String] ng_host_skip_chk_dep_status The status to skip for host +# dependency checks in Nagios. Default is '-1'. +# @param [Boolean] ng_enable_load_ctl_options Whether to enable load control +# options in Nagios. Default is false. +# @param [String] ng_load_ctl_options The load control options for Nagios. +# Default is 'jobs_max=100;backoff_limit=10;rampup_change=5'. ################################################################################ class confdroid_nagios::params ( @@ -414,6 +463,32 @@ class confdroid_nagios::params ( String $ng_high_svc_flap_threshold = '20.0', String $ng_low_h_flap_threshold = '5.0', String $ng_high_h_flap_threshold = '20.0', + String $ng_date_format = 'euro', + Boolean $ng_use_timezone_offset = false, + String $ng_use_timezone = 'UTC', + String $ng_illegal_obj_name_chars = '~!$%^&*|\'"<>?,()=', + String $ng_ill_macro_output_chars = '`~$&|\'"<>', + String $ng_use_regexp_matching = '0', + String $ng_true_regexp_matching = '0', + String $ng_mail_user = 'nagios@localhost', + String $ng_page_user = 'nagios@localhost', + String $ng_daemon_dumps_core = '0', + String $ng_use_large_inst_tweaks = '0', + String $ng_enable_env_macros = '0', + String $ng_free_child_process_mem = '1', + String $ng_child_proc_fork_twice = '1', + String $ng_debug_level = '0', + String $ng_debug_verbosity = '1', + String $ng_max_debug_file_size = '1000000', + String $ng_allow_empty_hostgroups = '1', + String $ng_check_workers = '3', + String $ng_host_down_svc_checks = '0', + String $ng_svc_skip_chk_dep_status = '-1', + String $ng_svc_skip_chk_par_status = '-1', + String $ng_svc_skip_chk_par_h_d_sts = '-1', + String $ng_host_skip_chk_dep_status = '-1', + Boolean $ng_enable_load_ctl_options = false, + String $ng_load_ctl_options = 'jobs_max=100;backoff_limit=10;rampup_change=5', # cgi.cfg String $ng_context_help = '1', @@ -536,6 +611,7 @@ class confdroid_nagios::params ( $ng_state_retention_file = "${ng_spool_dir}/retention.dat" $ng_host_perfdata_file = "${ng_log_dir}/host-perfdata" $ng_svc_perfdata_file = "${ng_log_dir}/service-perfdata" + $ng_debug_file = "${ng_log_dir}/nagios.debug" ## old # $ng_taccgi_erb = 'confdroid_nagios/selinux/taccgi.erb' diff --git a/templates/nagios/nagios_cfg.erb b/templates/nagios/nagios_cfg.erb index 9f8e762..9831e70 100644 --- a/templates/nagios/nagios_cfg.erb +++ b/templates/nagios/nagios_cfg.erb @@ -187,299 +187,46 @@ low_host_flap_threshold=<%= @ng_low_h_flap_threshold %> high_host_flap_threshold=<%= @ng_high_h_flap_threshold %> <% end -%> +date_format=<%= @ng_date_format %> +<% if @ng_use_timezone_offset == true -%> +use_timezone=<%= @ng_use_timezone %> +<% end -%> +illegal_object_name_chars=<%= @ng_illegal_obj_name_chars %> +illegal_macro_output_chars=<%= @ng_ill_macro_output_chars %> +use_regexp_matching=<%= @ng_use_regexp_matching %> +use_true_regexp_matching=<%= @ng_true_regexp_matching %> -# 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) -# +admin_email=<%= @ng_mail_user %> +admin_pager=<%= @ng_page_user %> -date_format=us +daemon_dumps_core=<%= @ng_daemon_dumps_core %> +use_large_installation_tweaks=<%= @ng_use_large_inst_tweaks %> +enable_environment_macros=<%= @ng_enable_env_macros %> +free_child_process_memory=<%= @ng_free_child_process_mem %> +child_processes_fork_twice=<%= @ng_child_proc_fork_twice %> +debug_level=<%= @ng_debug_level %> +debug_verbosity=<%= @ng_debug_verbosity %> +debug_file=<%= @ng_debug_file %> +max_debug_file_size=<%= @ng_max_debug_file_size %> -# 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" -# ... -# +allow_empty_hostgroup_assignment=<%= @ng_allow_empty_hostgroups %> -#use_timezone=US/Mountain -#use_timezone=Australia/Brisbane +<% unless @ng_check_workers.empty? -%> +check_workers=<%= @ng_check_workers %> +<% end -%> +host_down_disable_service_checks=<%= @ng_host_down_svc_checks %> +service_skip_check_dependency_status=<%= @ng_svc_skip_chk_dep_status %> +service_skip_check_parent_status=<%= @ng_svc_skip_chk_par_status %> +service_skip_check_host_down_status=<%= @ng_svc_skip_chk_host_down_status %> +host_skip_check_dependency_status=<%= @ng_host_skip_chk_dep_status %> - -# 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 -# 4096 = Interprocess communication -# 8192 = Scheduling -# 16384 = Workers - -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/log/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 - - - -# SET SERVICE/HOST STATUS WHEN SERVICE CHECK SKIPPED -# These options will allow you to set the status of a service when its -# service check is skipped due to one of three reasons: -# 1) failed dependency check; 2) parent's status; 3) host not up -# Number 3 can only happen if 'host_down_disable_service_checks' above -# is set to 1. -# Valid values for the service* options are: -# -1 Do not change the service status (default - same as before 4.4) -# 0 Set the service status to STATE_OK -# 1 Set the service status to STATE_WARNING -# 2 Set the service status to STATE_CRITICAL -# 3 Set the service status to STATE_UNKNOWN -# The host_skip_check_dependency_status option will allow you to set the -# status of a host when itscheck is skipped due to a failed dependency check. -# Valid values for the host_skip_check_dependency_status are: -# -1 Do not change the service status (default - same as before 4.4) -# 0 Set the host status to STATE_UP -# 1 Set the host status to STATE_DOWN -# 2 Set the host status to STATE_UNREACHABLE -# We may add one or more statuses in the future. - -#service_skip_check_dependency_status=-1 -#service_skip_check_parent_status=-1 -#service_skip_check_host_down_status=-1 -#host_skip_check_dependency_status=-1 - - - -# LOAD CONTROL OPTIONS -# To get current defaults based on your system, issue this command to -# the query handler: -# echo -e '@core loadctl\0' | nc -U /usr/local/nagios/var/rw/nagios.qh -# -# Please note that used incorrectly these options can induce enormous latency. -# -# loadctl_options: -# 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 - -#loadctl_options=jobs_max=100;backoff_limit=10;rampup_change=5 +<% if @ng_enable_load_ctl_options == true -%> +loadctl_options=<%= @ng_loadctl_options %> +<% end -%>