OP#407 initial commit with reset

This commit is contained in:
12ww1160
2026-02-02 23:38:50 +01:00
parent 9998e83e79
commit e35b61e131
115 changed files with 67 additions and 20933 deletions

View File

@@ -1,48 +0,0 @@
## cd_nagios::certbot::certs.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages all configuration files required for cd_nagios.
##############################################################################
class cd_nagios::certbot::certs (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
if $ng_use_https == true {
if $ng_enable_certbot == true {
require cd_certbot
require cd_apache
if $ng_include_fw == true {
require cd_nagios::firewall::iptables
}
# create cert
exec { 'create_cert':
command => template($ng_get_cert_erb),
cwd => '/tmp',
path => ['/bin','/usr/bin'],
provider => 'shell',
unless => template('cd_nagios/certbot/unless_get_cert.erb'),
notify => Service['httpd'],
creates => $ng_certbot_check,
}
# renew certs
exec { 'renew_cert':
command => 'certbot renew',
cwd => '/tmp',
path => ['/bin','/usr/bin','/opt/'],
provider => 'shell',
notify => Service['httpd'],
unless => template($ng_unless_renew_erb),
}
}
}
else {
# do nothing as we are not using https and certbot is not required then
}
}
}

View File

@@ -1,124 +0,0 @@
## cd_nagios::client::target.pp
# Module name: nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary CLass manages Nagios targets for cd_nagios.
###############################################################################
class cd_nagios::client::target (
) inherits cd_nagios::params {
if $::fqdn != $ng_nagios_server {
if $ng_include_nrpe == true {
require cd_nagios::main::user
require cd_nrpe
@@nagios_host { $::fqdn:
ensure => $ng_ping_ensure,
alias => $::hostname,
address => $::fqdn,
use => 'linux-server',
target => $ng_target_host,
hostgroups => 'linux-servers',
contacts => 'ops',
max_check_attempts => $ng_max_check_attempts,
notification_period => '24x7',
owner => $ng_user,
group => $ng_user,
mode => '0640',
check_command => "check_ping!${ng_ping_warn}!${ng_ping_crit}",
notify => Service[$ng_user],
}
@@nagios_service { "root_partition_${::hostname}":
ensure => $ng_disk_ensure,
check_command => "check_nrpe!check_disk!${ng_disk_warn}!${ng_disk_crit}!/",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_root_partition",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
if $ng_enable_swap_check == true {
@@nagios_service { "Swap_Usage_${::hostname}":
ensure => $ng_swap_ensure,
check_command => "check_nrpe!check_swap!${ng_swap_warn}!${ng_swap_crit}",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_swap_usage",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
}
@@nagios_service { "Local_Users_${::hostname}":
ensure => $ng_users_ensure,
check_command => "check_nrpe!check_users!${ng_users_warn}!${ng_users_crit}",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_local_users",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
@@nagios_service { "Total Processes_${::hostname}":
ensure => $ng_procs_tot_ens,
check_command => "check_nrpe!check_procs!${ng_procs_tot_warn}!${ng_procs_tot_crit}!${ng_procs_tot_param}",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_total_processes",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
@@nagios_service { "Zombie Processes_${::hostname}":
ensure => $ng_procs_z_ensure,
check_command => "check_nrpe!check_procs!${ng_procs_z_warn}!${ng_procs_z_crit}!${ng_procs_z_param}",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_zombie_processes",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
@@nagios_service { "Current_Load_${::hostname}":
ensure => $ng_load_ensure,
check_command => "check_nrpe!check_load!${ng_load_warn}!${ng_load_crit}",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_current_load",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
}
}
}

View File

@@ -1,21 +0,0 @@
## cd_nagios::firewall::iptables.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary manage firewall settings through cd_firewall or puppetlabs-firewall
###############################################################################
class cd_nagios::firewall::iptables (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
if $ng_use_https != true {
include confdroid_infrastructure::firewall::http
if $ng_use_https == true {
include confdroid_infrastructure::firewall::https
if $ng_http_https_fw == true {
include confdroid_infrastructure::firewall::http
}
}
}
}
}

View File

@@ -1,8 +1,8 @@
## cd_nagios::init.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@confdroid.com)
# @summary Class initializes the cd_nagios Module.
## confdroid_nagios::init.pp
# Module name: confdroid_nagios
# Author: 12ww1160 (12ww1160@confdroid.com)
# @summary Class initializes the confdroid_nagios Module.
##############################################################################
class cd_nagios {
include cd_nagios::params
class confdroid_nagios {
include confdroid_nagios::params
}

View File

@@ -1,32 +0,0 @@
## cd_nagios::main::config.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages all aspects of configuring the module logic for
# cd_nagios.
##############################################################################
class cd_nagios::main::config (
) inherits cd_nagios::params {
# manage server configuration
if $::fqdn == $ng_nagios_server {
include cd_nagios::server::service
if $ng_include_fw == true {
include cd_nagios::firewall::iptables
}
if $ng_use_selinux_tools == true {
include cd_nagios::selinux::config
}
if $ng_enable_certbot == true {
require cd_nagios::certbot::certs
}
}
if $::fqdn != $ng_nagios_server {
include cd_nagios::client::target
}
}

View File

@@ -1,208 +0,0 @@
## cd_nagios::main::dirs.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages all directories required for cd_nagios.
###############################################################################
class cd_nagios::main::dirs (
) inherits cd_nagios::params {
require cd_nagios::main::user
# main directory
file { $ng_main_dir:
ensure => directory,
path => $ng_main_dir,
owner => 'root',
group => 'root',
mode => '0755',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
}
# /usr/lib64/nagios dir required for plugins
file { $ng_lib_dir:
ensure => directory,
path => $ng_lib_dir,
owner => 'root',
group => 'root',
mode => '0755',
selrange => s0,
selrole => object_r,
seltype => lib_t,
seluser => system_u,
}
# /var/spool/nagios
file { $ng_spool_dir:
ensure => directory,
path => $ng_spool_dir,
owner => $ng_user,
group => $ng_user,
mode => '0755',
selrange => s0,
selrole => object_r,
seltype => nagios_spool_t,
seluser => system_u,
}
if $::fqdn == $ng_nagios_server {
# /etc/nagios/conf.d
file { $ng_conf_d_dir:
ensure => directory,
path => $ng_conf_d_dir,
owner => 'root',
group => $ng_user,
mode => '0750',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
}
# /etc/nagios/objects
file { $ng_objects_dir:
ensure => directory,
path => $ng_objects_dir,
owner => 'root',
group => $ng_user,
mode => '0750',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
}
# /etc/nagios/private
file { $ng_private_dir:
ensure => directory,
path => $ng_private_dir,
owner => 'root',
group => $ng_user,
mode => '0750',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
}
# include dir
file { $ng_usr_incl:
ensure => directory,
path => $ng_usr_incl,
owner => 'root',
group => 'root',
mode => '0755',
selrange => s0,
selrole => object_r,
seltype => usr_t,
seluser => system_u,
}
# log dir
file { $ng_log_dir:
ensure => directory,
path => $ng_log_dir,
owner => $ng_user,
group => $ng_user,
mode => '0750',
selrange => s0,
selrole => object_r,
seltype => nagios_log_t,
seluser => system_u,
}
# log archives
file { $ng_log_archives:
ensure => directory,
path => $ng_log_archives,
owner => $ng_user,
group => $ng_user,
mode => '0750',
selrange => s0,
selrole => object_r,
seltype => nagios_log_t,
seluser => system_u,
}
# /usr/share/nagios
file { $ng_usr_share:
ensure => directory,
path => $ng_usr_share,
owner => 'root',
group => 'root',
mode => '0755',
selrange => s0,
selrole => object_r,
seltype => usr_t,
seluser => system_u,
}
# /usr/share/nagios/html
file { $ng_share_html:
ensure => directory,
path => $ng_share_html,
owner => 'root',
group => 'root',
mode => '0755',
selrange => s0,
selrole => object_r,
seltype => usr_t,
seluser => system_u,
}
# run dir for pid file
file { $ng_run_dir:
ensure => directory,
path => $ng_run_dir,
owner => 'nagios',
group => 'nagios',
mode => '0750',
selrange => s0,
selrole => object_r,
seltype => nagios_var_run_t,
seluser => system_u,
}
# cmd dir
file { $ng_cmd_dir:
ensure => directory,
path => $ng_cmd_dir,
owner => 'nagios',
group => 'nagios',
mode => '0775',
selrange => s0,
selrole => object_r,
seltype => nagios_spool_t,
seluser => system_u,
}
# checkresults dir
file { $ng_checkresults_dir:
ensure => directory,
path => $ng_checkresults_dir,
owner => 'nagios',
group => 'nagios',
mode => '0770',
selrange => s0,
selrole => object_r,
seltype => nagios_spool_t,
seluser => system_u,
}
}
}

View File

@@ -1,42 +0,0 @@
## cd_nagios::main::install.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manage all aspects of installing binaries required for
# cd_nagios
###############################################################################
class cd_nagios::main::install (
) inherits cd_nagios::params {
require cd_resources
# if our FQDN matches the configured Nagios server FQDN, install both server-
# and client packages.
if $::fqdn == $ng_nagios_server {
# we'll need httpd installed
require cd_apache
package {$reqpackages_server:
ensure => $pkg_ensure,
}
package {$reqpackages_client:
ensure => $pkg_ensure,
}
}
# if we are not the nagios server, install client packages
if $::fqdn != $ng_nagios_server {
package {$reqpackages_client:
ensure => $pkg_ensure,
}
# if we want to use NRPE, install it
if $ng_include_nrpe == true {
require cd_nrpe
}
}
}

View File

@@ -1,31 +0,0 @@
## cd_nagios::main::user.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages service users for cd_nagios.
#############################################################################
class cd_nagios::main::user (
) inherits cd_nagios::params {
require cd_nagios::main::install
group { $ng_user:
ensure => present,
name => $ng_user,
gid => $ng_u_uid,
allowdupe => false,
}
user { $ng_user:
ensure => present,
name => $ng_user,
allowdupe => false,
comment => $ng_u_comment,
uid => $ng_u_uid,
gid => $ng_user,
groups => $ng_u_groups,
managehome => true,
home => $ng_user_home,
shell => $ng_user_shell,
require => Group[$ng_user],
}
}

View File

@@ -1,38 +0,0 @@
## cd_nagios::nagios::objects::add_contact.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Define manages additional contacts known to NAGIOS through external
# Puppet rules, and populates /etc/nagios/conf.d/nagios_add_contact.cfg.
# @example
# cd_nagios::nagios::objects::add_contact { 'example_user':
# ng_contact_name => 'example_user',
# ng_contact_alias => 'Example User',
# ng_contact_groups => 'admins',
# ng_contact_email => 'example@example.net',
# }
# @param [string] ng_contact_name Specify the contact short name.
# @param [string] ng_contact_use which contact template to use
# @param [string] ng_contact_alias Specify the contact alias (long name).
# @param [string] ng_contact_email Specify the contact email address.
# @param [string] ng_contact_groups specify the contact group for the contact.
################################################################################
define cd_nagios::nagios::objects::add_contact (
Optional[String] $ng_contact_name = undef,
String $ng_contact_use = 'generic-contact',
Optional[String] $ng_contact_alias = undef,
Optional[String] $ng_contact_email = undef,
Optional[String] $ng_contact_groups = undef,
) {
$ng_nagios_server = $::cd_nagios::params::ng_nagios_server
$ng_target_add_contact = $::cd_nagios::params::ng_target_add_contact
$ng_contacts_rule_erb = $::cd_nagios::params::ng_contacts_rule_erb
if $::fqdn == $ng_nagios_server {
concat::fragment { $name:
target => $ng_target_add_contact,
content => template($ng_contacts_rule_erb),
}
}
}

View File

@@ -1,40 +0,0 @@
## cd_nagios::nagios::objects::add_contact_rules.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages /etc/nagios/conf.d/nagios_add_contact.cfg through
# concat.
# @example cd_nagios::nagios::objects::add_contact { 'example_user':
# ng_contact_name => 'example_user',
# ng_contact_alias => 'Example User',
# ng_contact_groups => 'admins',
# ng_contact_email => 'example@example.net',
# }
################################################################################
class cd_nagios::nagios::objects::add_contact_rules (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
# manage /etc/nagios/conf.d/nagios_add_contacts.cfg
concat { $ng_target_add_contact:
ensure => present,
path => $ng_target_add_contact,
owner => $ng_user,
group => $ng_user,
mode => '0640',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
notify => Service[$ng_service],
}
# manage file header
concat::fragment { 'contact_header':
target => $ng_target_add_contact,
content => template($ng_contacts_head_erb),
order => '000',
}
}
}

View File

@@ -1,30 +0,0 @@
## cd_nagios::nagios::objects::add_contactgroups.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Define populates /etc/nagios/conf.d/nagios_add_contactgroups through
# external puppet rules.
# @param [string] ng_contactgroup_name Specify the short name of the
# contact group.
# @param [string] ng_contactgroup_alias Specify the alias (long name) of the
# contact group
# @param [string] ng_contactgroup_register Specify whether the contact group
# should be registered in Nagios.
################################################################################
define cd_nagios::nagios::objects::add_contactgroups (
Optional[String] $ng_contactgroup_name = undef,
Optional[String] $ng_contactgroup_alias = undef,
String $ng_contactgroup_register = '1',
) {
$ng_nagios_server = $cd_nagios::params::ng_nagios_server
$ng_tgt_contactgroup_add = $cd_nagios::params::ng_tgt_contactgroup_add
$ng_cntctgrps_rule_erb = $cd_nagios::params::ng_cntctgrps_rule_erb
if $::fqdn == $ng_nagios_server {
concat::fragment { $name:
target => $ng_tgt_contactgroup_add,
content => template($ng_cntctgrps_rule_erb),
}
}
}

View File

@@ -1,40 +0,0 @@
## cd_nagios::nagios::objects::add_contactgroups_rules.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages /etc/nagios/conf.d/nagios_add_contactgroups.cfg file
# and populates through define and external puppet rules
# @example
# cd_nagios::nagios::objects::add_contactgroups { 'example_group':
# ng_contactgroup_name => 'example_group',
# ng_contactgroup_alias => 'Example Group',
# ng_contactgroup_register => '1',
# }
################################################################################
class cd_nagios::nagios::objects::add_contactgroups_rules (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
# manage /etc/nagios/conf.d/nagios_add_contactgroups.cfg
concat { $ng_tgt_contactgroup_add:
ensure => present,
path => $ng_tgt_contactgroup_add,
owner => $ng_user,
group => $ng_user,
mode => '0640',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
notify => Service[$ng_service],
}
# manage file header
concat::fragment { 'contactgroups_header':
target => $ng_tgt_contactgroup_add,
content => template($ng_cntctgrps_head_erb),
order => '000',
}
}
}

View File

@@ -1,39 +0,0 @@
## cd_nagios::nagios::objects::add_hostgroup_rules.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages /etc/nagios_conf.d/nagios_hostgroups_add.cfg and
# additional hostgroups through external Puppet rules via define.
# @example
# cd_nagios::nagios::objects::add_hostgroups { 'example_hostgroup':
# ng_hostgroup_name => 'example_hostgroup',
# ng_hostgroup_alias => 'Example Hostgroup',
# }
################################################################################
class cd_nagios::nagios::objects::add_hostgroup_rules (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
# manage /etc/nagios_conf.d/nagios_hostgroups_add.cfg
concat { $ng_tgt_hostgroup_add:
ensure => present,
path => $ng_tgt_hostgroup_add,
owner => $ng_user,
group => $ng_user,
mode => '0640',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
notify => Service[$ng_service],
}
# manage file header
concat::fragment { 'hostgroups_header':
target => $ng_tgt_hostgroup_add,
content => template($ng_tgt_hostgrp_head_erb),
order => '000',
}
}
}

View File

@@ -1,32 +0,0 @@
## cd_nagios::nagios::objects::add_hostgroups.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary define populates /etc/nagios/conf.d/nagios_hostgroups_add through
# external Puppet rules.
# @example
# cd_nagios::nagios::objects::add_hostgroups { 'example_hostgroup':
# ng_hostgroup_name => 'example_hostgroup',
# ng_hostgroup_alias => 'Example Hostgroup',
# }
# @param [string] ng_hostgroup_name Specify the hostgroup short name.
# @param [string] ng_hostgroup_alias Specify the hostgroup alias (long name).
# @param [string] ng_hostgroup_register Whether to register the hostgroup.
###############################################################################
define cd_nagios::nagios::objects::add_hostgroups (
Optional[String] $ng_hostgroup_name = undef,
Optional[String] $ng_hostgroup_alias = undef,
String $ng_hostgroup_register = '1',
) {
$ng_nagios_server = $cd_nagios::params::ng_nagios_server
$ng_tgt_hostgroup_add = $cd_nagios::params::ng_tgt_hostgroup_add
$ng_tgt_hostgrp_rule_erb = $cd_nagios::params::ng_tgt_hostgrp_rule_erb
if $::fqdn == $ng_nagios_server {
concat::fragment { $name:
target => $ng_tgt_hostgroup_add,
content => template($ng_tgt_hostgrp_rule_erb),
}
}
}

View File

@@ -1,39 +0,0 @@
## cd_nagios::nagios::objects::add_servicegroup_rules.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages /etc/nagios_conf.d/nagios_servicegroups_add.cfg and
# additional servicegroups through external Puppet rules via define.
# @example
# cd_nagios::nagios::objects::add_servicegroups { 'example_servicegroup':
# ng_servicegroup_name => 'example_servicegroup',
# ng_servicegroup_alias => 'Example Servicegroup',
# }
################################################################################
class cd_nagios::nagios::objects::add_servicegroup_rules (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
# manage /etc/nagios_conf.d/nagios_servicegroups_add.cfg
concat { $ng_tgt_servicegroup_add:
ensure => present,
path => $ng_tgt_servicegroup_add,
owner => $ng_user,
group => $ng_user,
mode => '0640',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
notify => Service[$ng_service],
}
# manage file header
concat::fragment { 'servicegroups_header':
target => $ng_tgt_servicegroup_add,
content => template($ng_tgt_svcgrp_head_erb),
order => '000',
}
}
}

View File

@@ -1,35 +0,0 @@
## cd_nagios::nagios::objects::add_servicegroups.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# # License:
# @summary define populates /etc/nagios/conf.d/nagios_servicegroups_add through
# external Puppet rules.
# @example
# cd_nagios::nagios::objects::add_servicegroups { 'example_servicegroup':
# ng_servicegroup_name => 'example_servicegroup',
# ng_servicegroup_alias => 'Example servicegroup',
# }
# @param [string] ng_servicegroup_name Specify the servicegroup short name
# @param [string] ng_servicegroup_alias Specify the servicegroup alias
# (long name).
# @param [string] ng_servicegroup_register Whether you want to register the
# servicegroup
###############################################################################
define cd_nagios::nagios::objects::add_servicegroups (
Optional[String] $ng_servicegroup_name = undef,
Optional[String] $ng_servicegroup_alias = undef,
String $ng_servicegroup_register = '1',
) {
$ng_nagios_server = $cd_nagios::params::ng_nagios_server
$ng_tgt_servicegroup_add = $cd_nagios::params::ng_tgt_servicegroup_add
$ng_tgt_svcgrp_rule_erb = $cd_nagios::params::ng_tgt_svcgrp_rule_erb
if $::fqdn == $ng_nagios_server {
concat::fragment { $name:
target => $ng_tgt_servicegroup_add,
content => template($ng_tgt_svcgrp_rule_erb),
}
}
}

View File

@@ -1,45 +0,0 @@
# cd_nagios::nagios::objects::add_timeperiod_rules.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages /etc/nagios_conf.d/nagios_timeperiods_add.cfg and
# add. hostgroups through external Puppet rules via define.
# @example cd_nagios::nagios::objects::add_timeperiods { 'example_timeperiod':
# ng_timep_name => 'example_timeperiod',
# ng_timep_alias => 'Example timeperiod',
# ng_timep_monday => '00:00-00:00',
# ng_timep_tuesday => '00:00-00:00',
# ng_timep_wednesday => '00:00-00:00',
# ng_timep_thursday => '00:00-00:00',
# ng_timep_friday => '00:00-00:00',
# ng_timep_saturday => '00:00-00:00',
# ng_timep_sunday => '00:00-00:00',
# }
################################################################################
class cd_nagios::nagios::objects::add_timeperiod_rules (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
# manage /etc/nagios/conf.d/nagios_timeperiods_add.cfg
concat { $ng_tgt_timep_add:
ensure => present,
path => $ng_tgt_timep_add,
owner => $ng_user,
group => $ng_user,
mode => '0640',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
notify => Service[$ng_service],
}
# manage file header
concat::fragment { 'timeperiods_header':
target => $ng_tgt_timep_add,
content => template($ng_tgt_timep_head_erb),
order => '000',
}
}
}

View File

@@ -1,51 +0,0 @@
## cd_nagios::nagios::objects::add_timeperiods.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary define populates /etc/nagios/conf.d/nagios_timeperiods_add through
# extermal Puppet rules.
# @example
# cd_nagios::nagios::objects::add_timeperiods { 'example_timeperiod':
# ng_timeperiod_name => 'example_timeperiod',
# ng_timeperiod_alias => 'Example timeperiod',
# ng_timep_monday => '00:00-00:00',
# ng_timep_tuesday => '00:00-00:00',
# ng_timep_wednesday => '00:00-00:00',
# ng_timep_thursday => '00:00-00:00',
# ng_timep_friday => '00:00-00:00',
# ng_timep_saturday => '00:00-00:00',
# ng_timep_sunday => '00:00-00:00',
# }
# @param [string] ng_timep_name Specify the timeperiod short name.
# @param [string] ng_timep_alias Specify the timeperiod alias (long name)
# @param [string] ng_timep_monday Specify the desired hours for Monday
# @param [string] ng_timep_tuesday Specify the desired hours for Tuesday
# @param [string] ng_timep_wednesday Specify the desired hours for Wednesday.
# @param [string] ng_timep_thursday Specify the desired hours for Thursday
# @param [string] ng_timep_friday Specify the desired hours for Friday
# @param [string] ng_timep_saturday Specify the desired hours for Saturday
# @param [string] ng_timep_sunday Specify the desired hours for Sunday.
###############################################################################
define cd_nagios::nagios::objects::add_timeperiods (
Optional[String] $ng_timep_name = undef,
Optional[String] $ng_timep_alias = undef,
String $ng_timep_monday = '00:00-00:00',
String $ng_timep_tuesday = '00:00-00:00',
String $ng_timep_wednesday = '00:00-00:00',
String $ng_timep_thursday = '00:00-00:00',
String $ng_timep_friday = '00:00-00:00',
String $ng_timep_saturday = '00:00-00:00',
String $ng_timep_sunday = '00:00-00:00',
) {
$ng_nagios_server = $cd_nagios::params::ng_nagios_server
$ng_tgt_timep_add = $cd_nagios::params::ng_tgt_timep_add
$ng_tgt_timep_rule_erb = $cd_nagios::params::ng_tgt_timep_rule_erb
if $::fqdn == $ng_nagios_server {
concat::fragment { $name:
target => $ng_tgt_timep_add,
content => template($ng_tgt_timep_rule_erb),
}
}
}

View File

@@ -1,222 +0,0 @@
## cd_nagios::nagios::objects::commands.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages all commands known to NAGIOS through Puppet exports,
# and populates /etc/nagios/conf.d/nagios_commands.cfg.
################################################################################
class cd_nagios::nagios::objects::commands (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
@@nagios_command { 'notify-host-by-email':
ensure => present,
command_name => 'notify-host-by-email',
command_line => '/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTADDRESS$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTADDRESS$ is $HOSTSTATE$ **" $CONTACTEMAIL$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'notify-service-by-email':
ensure => present,
command_name => 'notify-service-by-email',
command_line => '/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check-host-alive':
ensure => present,
command_name => 'check-host-alive',
command_line => '$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_disk':
ensure => present,
command_name => 'check_disk',
command_line => '$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_local_load':
ensure => present,
command_name => 'check_local_load',
command_line => '$USER1$/check_load -w $ARG1$ -c $ARG2$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_local_procs':
ensure => present,
command_name => 'check_local_procs',
command_line => '$USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_local_users':
ensure => present,
command_name => 'check_local_users',
command_line => '$USER1$/check_users -w $ARG1$ -c $ARG2$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_local_swap':
ensure => present,
command_name => 'check_local_swap',
command_line => '$USER1$/check_swap -w $ARG1$ -c $ARG2$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_ftp':
ensure => present,
command_name => 'check_ftp',
command_line => '$USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_snmp':
ensure => present,
command_name => 'check_snmp',
command_line => '$USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_http':
ensure => present,
command_name => 'check_http',
command_line => '$USER1$/check_http -I $HOSTADDRESS$ $ARG1$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_ssh':
ensure => present,
command_name => 'check_ssh',
command_line => '$USER1$/check_ssh $ARG1$ $HOSTADDRESS$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_ping':
ensure => present,
command_name => 'check_ping',
command_line => '$USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_tcp':
ensure => present,
command_name => 'check_tcp',
command_line => '$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_udp':
ensure => present,
command_name => 'check_udp',
command_line => '$USER1$/check_udp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_nrpe':
ensure => present,
command_name => 'check_nrpe',
command_line => '$USER1$/check_nrpe -t 30 -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ $ARG3$ $ARG4$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_nagios':
ensure => present,
command_name => 'check_nagios',
command_line => '$USER1$/check_nagios -F $ARG1$ -e $ARG2$ -C $ARG3$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_bandwidth':
ensure => present,
command_name => 'check_bandwidth',
command_line => '$USER1$/check_bandwidth.sh -t 30 -H $HOSTADDRESS$ linux $ARG1$ $ARG2$ $ARG3$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'process-service-perfdata-file':
ensure => present,
command_name => 'process-service-perfdata-file',
command_line => '/bin/mv /var/log/pnp4nagios/service-perfdata /var/spool/pnp4nagios/service-perfdata.$TIMET$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'process-host-perfdata-file':
ensure => present,
command_name => 'process-host-perfdata-file',
command_line => '/bin/mv /var/log/pnp4nagios/host-perfdata /var/spool/pnp4nagios/host-perfdata.$TIMET$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
@@nagios_command { 'check_ntp_time':
ensure => present,
command_name => 'check_ntp_time',
command_line => '$USER1$/check_ntp_time -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$',
owner => 'nagios',
group => 'nagios',
mode => '0640',
target => $ng_target_command,
}
}
}

View File

@@ -1,24 +0,0 @@
## cd_nagios::server::nagios::objects::config.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages the nagios objects definitions.
#############################################################################
class cd_nagios::nagios::objects::config (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
require cd_nagios::nagios::objects::commands
require cd_nagios::nagios::objects::template_rules
require cd_nagios::nagios::objects::contacts
require cd_nagios::nagios::objects::add_contact_rules
require cd_nagios::nagios::objects::contactgroups
require cd_nagios::nagios::objects::add_contactgroups_rules
require cd_nagios::nagios::objects::hostgroups
require cd_nagios::nagios::objects::add_hostgroup_rules
require cd_nagios::nagios::objects::servicegroups
require cd_nagios::nagios::objects::add_servicegroup_rules
require cd_nagios::nagios::objects::timeperiods
require cd_nagios::nagios::objects::add_timeperiod_rules
}
}

View File

@@ -1,54 +0,0 @@
## cd_nagios::nagios::objects::contactgroups.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages base contactgroups which always should be there.
# @example
# @@nagios_contactgroup { 'admins':
# ensure => present,
# alias => 'Nagios Administrators',
# contactgroup_name => 'admins',
# owner => $ng_user,
# group => $ng_user,
# mode => '0640',
# register => '1',
# target => $ng_tgt_contactgroup_base,
# }
################################################################################
class cd_nagios::nagios::objects::contactgroups (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
@@nagios_contactgroup { 'admins':
ensure => present,
alias => 'Nagios Administrators',
contactgroup_name => 'admins',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_tgt_contactgroup_base,
}
@@nagios_contactgroup { 'operations':
ensure => present,
alias => 'Operations Team',
contactgroup_name => 'operations',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_tgt_contactgroup_base,
}
@@nagios_contactgroup { 'support':
ensure => present,
alias => 'Support Team',
contactgroup_name => 'support',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_tgt_contactgroup_base,
}
}
}

View File

@@ -1,80 +0,0 @@
## cd_nagios::nagios::objects::contacts.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages basic contacts known to NAGIOS through Puppet exports,
# and populates /etc/nagios/conf.d/nagios_base_contacts.cfg.
# @example
# @@nagios_contact { 'admin':
# ensure => present,
# alias => 'Nagios Admin',
# contact_name => 'admin',
# contactgroups => 'admins',
# email => "admin@${::domain}",
# can_submit_commands => '1',
# register => '1',
# use => 'generic-contact',
# target => $ng_target_base_contact,
# owner => 'root',
# group => 'nagios',
# mode => '0664',
# }
################################################################################
class cd_nagios::nagios::objects::contacts (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
# admin contact
@@nagios_contact { 'admin':
ensure => present,
alias => 'Nagios Admin',
contact_name => 'admin',
contactgroups => 'admins',
email => "admin@${::domain}",
can_submit_commands => '1',
register => '1',
use => 'generic-contact',
target => $ng_target_base_contact,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
# ops contact
@@nagios_contact { 'ops':
ensure => present,
alias => 'Operations',
contact_name => 'ops',
contactgroups => 'operations',
email => "ops@${::domain}",
can_submit_commands => '1',
register => '1',
use => 'generic-contact',
target => $ng_target_base_contact,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
# support contact
@@nagios_contact { 'support':
ensure => present,
alias => 'support',
contact_name => 'support',
contactgroups => 'support',
email => "support@${::domain}",
can_submit_commands => '1',
register => '1',
use => 'generic-contact',
target => $ng_target_base_contact,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
}
}

View File

@@ -1,208 +0,0 @@
## cd_nagios::nagios::objects::hostgroups.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages basic hostgroups known to NAGIOS through Puppet
# exports, and populates /etc/nagios/conf.d/nagios_base_hostgroups.cfg.
################################################################################
class cd_nagios::nagios::objects::hostgroups (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
# linux servers
@@nagios_hostgroup { 'linux-servers':
ensure => present,
hostgroup_name => 'linux-servers',
alias => 'Linux Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# RHEL servers
@@nagios_hostgroup { 'rhel-servers':
ensure => present,
hostgroup_name => 'rhel-servers',
alias => 'RHEL Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# CentOS servers
@@nagios_hostgroup { 'centos-servers':
ensure => present,
hostgroup_name => 'centos-servers',
alias => 'CentOS Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# SuSE servers
@@nagios_hostgroup { 'suse-servers':
ensure => present,
hostgroup_name => 'suse-servers',
alias => 'SuSE Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# Unix servers
@@nagios_hostgroup { 'unix-servers':
ensure => present,
hostgroup_name => 'unix-servers',
alias => 'Unix Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# Solaris servers
@@nagios_hostgroup { 'solaris-servers':
ensure => present,
hostgroup_name => 'solaris-servers',
alias => 'Solaris Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# AIX servers
@@nagios_hostgroup { 'aix-servers':
ensure => present,
hostgroup_name => 'aix-servers',
alias => 'AIX Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# Windows servers
@@nagios_hostgroup { 'windows-servers':
ensure => present,
hostgroup_name => 'windows-servers',
alias => 'Windows Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# Netware servers
@@nagios_hostgroup { 'netware-servers':
ensure => present,
hostgroup_name => 'netware-servers',
alias => 'Netware Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# DB servers
@@nagios_hostgroup { 'db-servers':
ensure => present,
hostgroup_name => 'db-servers',
alias => 'DB Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# Oracle servers
@@nagios_hostgroup { 'oracle-servers':
ensure => present,
hostgroup_name => 'oracle-servers',
alias => 'Oracle Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# MySQL servers
@@nagios_hostgroup { 'mysql-servers':
ensure => present,
hostgroup_name => 'mysql-servers',
alias => 'MySQL Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# MSSQL servers
@@nagios_hostgroup { 'mssql-servers':
ensure => present,
hostgroup_name => 'mssql-servers',
alias => 'MSSQL Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# NOSQL servers
@@nagios_hostgroup { 'nosql-servers':
ensure => present,
hostgroup_name => 'nosql-servers',
alias => 'NOSQL Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
# Hadoop servers
@@nagios_hostgroup { 'hadoop-servers':
ensure => present,
hostgroup_name => 'hadoop-servers',
alias => 'HADOOP Servers',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_hostgroup_base,
}
}
}

View File

@@ -1,50 +0,0 @@
## cd_nagios::nagios::objects::servicegroups.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages basic hostgroups known to NAGIOS through Puppet
# exports, and populates /etc/nagios/conf.d/nagios_base_hostgroups.cfg.
################################################################################
class cd_nagios::nagios::objects::servicegroups (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
# network services
@@nagios_servicegroup { 'network-services':
ensure => present,
servicegroup_name => 'network-services',
alias => 'Network Services',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_svcgrp_base,
}
# linux services
@@nagios_servicegroup { 'linux-services':
ensure => present,
servicegroup_name => 'linux-services',
alias => 'Linux Services',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_svcgrp_base,
}
# database services
@@nagios_servicegroup { 'database-services':
ensure => present,
servicegroup_name => 'database-services',
alias => 'Database Services',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_target_svcgrp_base,
}
}
}

View File

@@ -1,82 +0,0 @@
## cd_nagios::nagios::objects::template_rules.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages /etc/nagios/conf.d/nagios_templates.cfg through
# concat.
# @example cd_nagios::nagios::objects::templates { 'generic contact':
# ng_template_object => 'contact',
# ng_template_object_name => 'generic-contact',
# }
################################################################################
class cd_nagios::nagios::objects::template_rules (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
# create the templates.cfg file
concat { $ng_target_templates:
ensure => present,
path => $ng_target_templates,
owner => $ng_user,
group => $ng_user,
mode => '0640',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
notify => Service[$ng_service],
}
concat::fragment { 'template_header':
target => $ng_target_templates,
content => template($ng_templates_head_erb),
order => '000',
}
# basic templates
cd_nagios::nagios::objects::templates { 'generic contact':
ng_template_object => 'contact',
ng_template_object_name => 'generic-contact',
}
cd_nagios::nagios::objects::templates { 'generic-host':
ng_template_object => 'host',
ng_template_object_name => 'generic-host',
}
cd_nagios::nagios::objects::templates { 'linux-server':
ng_template_object => 'host',
ng_template_object_name => 'linux-server',
ng_template_object_use => 'generic-host',
ng_notification_options => 'd,u,r',
}
cd_nagios::nagios::objects::templates { 'windows-server':
ng_template_object => 'host',
ng_template_object_name => 'windows-server',
ng_template_object_use => 'generic-host',
ng_notification_options => 'd,u,r',
}
cd_nagios::nagios::objects::templates { 'generic-switch':
ng_template_object => 'host',
ng_template_object_name => 'generic-switch',
ng_template_object_use => 'generic-host',
ng_notification_options => 'd,u,r',
}
cd_nagios::nagios::objects::templates { 'generic-printer':
ng_template_object => 'host',
ng_template_object_name => 'generic-printer',
ng_template_object_use => 'generic-host',
ng_notification_options => 'd,u,r',
}
cd_nagios::nagios::objects::templates { 'generic-service':
ng_template_object => 'service',
ng_template_object_name => 'generic-service',
ng_max_check_attempts => '3',
ng_notification_options => 'w,u,c,r',
}
cd_nagios::nagios::objects::templates { 'local-service':
ng_template_object => 'service',
ng_template_object_name => 'local-service',
ng_max_check_attempts => '4',
ng_template_object_use => 'generic-service',
}
}
}

View File

@@ -1,123 +0,0 @@
## cd_nagios::nagios::objects::templates.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Define manages populates /etc/nagios/conf.d/templates.cfg.
# @param [String] ng_template_object the object type for the templates.
# Valid options are `contact`, `host` and `service`.
# @param [String] ng_template_object_name populates the name field,
# i.e. `generic-contact`, `generic-host`, `generic-service`.
# @param [String] ng_svc_notification_period Period in which to send out
# notifications for service events, i.e. `24x7`.
# @param [String] ng_host_notification_period Period in which to send out
# notifications for host events , i.e. `24x7`.
# @param [String] ng_service_notification_options What service events to send
# out notifications for:
# w = notify on WARNING service states,
# u = notify on UNKNOWN service states,
# c = notify on CRITICAL service states,
# r = notify on service recoveries (OK states),
# f = notify when the service starts and stops flapping.
# n = none (the contact will not receive any type of service notifications).
# @param [String] ng_host_notification_options What host events to send
# out notifications for:
# d = notify on DOWN host states,
# u = notify on UNREACHABLE host states,
# r = notify on host recoveries (UP states),
# f = notify when the host starts and stops flapping,
# s = notify when host or service scheduled downtime starts and ends.
# n = none (the contact will not receive any type of host notifications).
# @param [String] ng_service_notification_commands Command to use for
# service event notification. Command must be defined in commands.cfg
# @param [String] ng_host_notification_commands Command to use for
# host event notification. Command must be defined in commands.cfg.
# @param [String] ng_object_register Whether to register the object to Nagios.
# Since this is a template definition, we do not want to register those.
# @param [String] ng_template_object_use Which template to use for a given
# host or service definition, i.e. `generic-host`, `generic-service` etc.
# @param [String] ng_notifications_enabled Whether notifications are enabled.
# Valid options are `0` and `1`.
# @param [String] ng_event_handler_enabled Whether event handlers are enabled.
# Valid options are `0` and `1`.
# @param [String] ng_flap_detection_enabled Whether flap detection is enabled.
# Valid options are `0` and `1`.
# @param [String] ng_process_perf_data Whether to process performance data.
# Valid options are `0` and `1`.
# @param [String] ng_retain_status_information Whether to retain status
# information. Valid options are `0` and `1`.
# @param [String] ng_retain_nonstatus_information Whether to retain non-status
# information. Valid options are `0` and `1`.
# @param [String] ng_notification_period Which period in to send out
# notifications. for the defined service or host.
# @param [String] ng_notification_interval how often (in minutes) we should
# resend notifications for the current status.
# @param [String] ng_check_period Which period in to run checks for the defined
# object.
# @param [String] ng_max_check_attempts how often to check the defined object
# maximal.
# @param [String] ng_notification_options see `ng_service_notification_options`
# and `ng_host_notification_options`.
# @param [String] ng_contact_groups contact groups for the defined object.
# Specified contact group must exit in contact_groups
# @param [String] ng_active_checks_enabled Whether to enable active checks.
# Valid options are `0` and `1`.
# @param [String] ng_passive_checks_enabled Whether to enable passive checks.
# Valid options are `0` and `1`.
# @param [String] ng_parallelize_check Whether to parallelize checks
# Valid options are `0` and `1`.
# @param [String] ng_obsess_over_service Whether to obsess over the service.
# Valid options are `0` and `1`.
# @param [String] ng_check_freshness Whether to check freshness.
# Valid options are `0` and `1`.
# @param [String] ng_is_volatile Whether the service is volatile.
# Valid options are `0` and `1`.
# @param [String] ng_check_interval How often to check the service
# under normal conditions.
# @param [String] ng_retry_interval Re-check the service every x minutes
# until a hard state can be determined.
# @param [String] ng_host_check_command the check command for host checks
################################################################################
define cd_nagios::nagios::objects::templates (
Optional[String] $ng_template_object = undef,
Optional[String] $ng_template_object_name = undef,
String $ng_svc_notification_period = '24x7',
String $ng_host_notification_period = '24x7',
String $ng_service_notification_options = 'w,u,c,r,f,s',
String $ng_host_notification_options = 'd,u,r,f,s',
String $ng_service_notification_commands = 'notify-service-by-email',
String $ng_host_notification_commands = 'notify-host-by-email',
String $ng_object_register = '0',
Optional[String] $ng_template_object_use = undef,
String $ng_notifications_enabled = '1',
String $ng_event_handler_enabled = '1',
String $ng_flap_detection_enabled = '1',
String $ng_process_perf_data = '1',
String $ng_retain_status_information = '1',
String $ng_retain_nonstatus_information = '1',
String $ng_notification_period = '24x7',
String $ng_notification_interval = '30',
String $ng_check_period = '24x7',
String $ng_check_interval = '5',
String $ng_retry_interval = '1',
String $ng_max_check_attempts = '10',
String $ng_host_check_command = 'check-host-alive',
Optional[String] $ng_notification_options = undef,
String $ng_contact_groups = 'admins',
String $ng_active_checks_enabled = '1',
String $ng_passive_checks_enabled = '1',
String $ng_parallelize_check = '1',
String $ng_obsess_over_service = '1',
String $ng_check_freshness = '0',
String $ng_is_volatile = '0',
) {
$ng_nagios_server = $cd_nagios::params::ng_nagios_server
$ng_target_templates = $cd_nagios::params::ng_target_templates
$ng_templates_rule_erb = $cd_nagios::params::ng_templates_rule_erb
if $::fqdn == $ng_nagios_server {
concat::fragment { $name:
target => $ng_target_templates,
content => template($ng_templates_rule_erb),
}
}
}

View File

@@ -1,76 +0,0 @@
# cd_nagios::nagios::objects::timeperiods.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages main timeperiods for NAGIOS through Puppet exports,
# and populates /etc/nagios/conf.d/nagios_timeperiods_base.cfg.
################################################################################
class cd_nagios::nagios::objects::timeperiods (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
@@nagios_timeperiod { '24x7':
ensure => present,
timeperiod_name => '24x7',
alias => '24 Hours A Day, 7 Days A Week',
monday => '00:00-24:00',
tuesday => '00:00-24:00',
wednesday => '00:00-24:00',
thursday => '00:00-24:00',
friday => '00:00-24:00',
saturday => '00:00-24:00',
sunday => '00:00-24:00',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_tgt_timeperiods_base,
}
@@nagios_timeperiod { 'office_hours':
ensure => present,
timeperiod_name => 'office_hours',
alias => 'Office hours only, 5 Days A Week 09-05',
monday => '09:00-17:00',
tuesday => '09:00-17:00',
wednesday => '09:00-17:00',
thursday => '09:00-17:00',
friday => '09:00-17:00',
saturday => '00:00-00:00',
sunday => '00:00-00:00',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_tgt_timeperiods_base,
}
@@nagios_timeperiod { 'out_of_hours':
ensure => present,
timeperiod_name => 'out_of_hours',
alias => 'Outside Office hours only',
monday => '17:00-09:00',
tuesday => '17:00-09:00',
wednesday => '17:00-09:00',
thursday => '17:00-09:00',
friday => '17:00-09:00',
saturday => '00:00-24:00',
sunday => '00:00-24:00',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_tgt_timeperiods_base,
}
@@nagios_timeperiod { 'none':
ensure => present,
timeperiod_name => 'none',
alias => 'No Time Is A Good Time',
owner => $ng_user,
group => $ng_user,
mode => '0640',
register => '1',
target => $ng_tgt_timeperiods_base,
}
}
}

View File

@@ -1,65 +0,0 @@
## cd_nagios::nagios::resources::resource.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# # License:
# This file is part of cd_nagios.
#
# cd_nagios is used for providing automatic configuration of Nagios
# Copyright (C) 2016 ConfDroid (copyright@ConfDroid.com)
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# @summary Class manages the resource config file header.
# @example concat::fragment { "user_rule_plugins":
# ng_user_arg_name => "$user1$",
# ng_user_arg_value => '/usr/lib64/nagios/plugins',
# ng_user_arg_comment => "Sets $USER1$ to be the path to the plugins",
# }
#############################################################################
class cd_nagios::nagios::resources::resource (
) inherits cd_nagios::params {
if $fqdn == $ng_nagios_server {
concat { $ng_resource_file:
ensure => present,
owner => 'root',
group => $ng_user,
mode => '0640',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
notify => Service[$ng_service],
}
concat::fragment { 'header':
target => $ng_resource_file,
content => template($ng_resource_erb),
order => '000',
}
# plugins rule
cd_nagios::nagios::resources::resource_df { 'user_rule_plugins':
ng_user_arg_name => 'USER1',
ng_user_arg_value => '/usr/lib64/nagios/plugins/',
ng_user_arg_comment => 'Sets user1 to be the path to the plugins',
}
# eventhandlers rule
cd_nagios::nagios::resources::resource_df { 'user_rule_eventhandlers':
ng_user_arg_name => 'USER2',
ng_user_arg_value => '/usr/lib64/nagios/plugins/eventhandlers/',
ng_user_arg_comment => 'Sets user2 to be the path to the eventhandlers',
}
}
}

View File

@@ -1,28 +0,0 @@
## cd_nagios::nagios::resources::resource_df.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary define manages the resources in/etc/nagios/private/resources.cfg
# @param [String] ng_user_arg_name the name of user argument i.e. $user1$
# @param [String] ng_user_arg_value the value of t user argument i.e. $user1$
# @param [String] ng_user_arg_comment the argument i.e. $user1$
# @param [String] ng_resource_rule_erb resource rule #
#############################################################################
define cd_nagios::nagios::resources::resource_df (
Optional[String] $ng_user_arg_name = undef,
Optional[String] $ng_user_arg_value = undef,
Optional[String] $ng_user_arg_comment = undef,
String $ng_resource_rule_erb = 'cd_nagios/nagios/resource_cfg_rule.erb',
) {
$ng_nagios_server = $cd_nagios::params::ng_nagios_server
$ng_resource_file = $cd_nagios::params::ng_resource_file
if $fqdn == $ng_nagios_server {
concat::fragment { "rule_${name}":
target => $ng_resource_file,
content => template($ng_resource_rule_erb),
order => '000',
}
}
}

View File

@@ -1,988 +1,18 @@
## cd_nagios::params.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class holds all parameters for the cd_nagios module and is
## confdroid_nagios::params.pp
# Module name: confdroid_nagios
# Author: 12ww1160 (12ww1160@confdroid.com)
# @summary Class holds all parameters for the confdroid_nagios module and is
# inherited by all classes except defines.
# @see https://confdroid.com/2017/07/nagios-cgi-cfg/
# @param [String] pkg_ensure
# which [package type](https://confdroid.com/2017/05/puppet-type-package/)
# to choose, i.e. `latest` or `present`.
# @param [String] ng_nagios_server Specify the FQDN of the nagios server host.
# Must be a proper A-name, no CNAME i.e. on Loadbalancer. When the FQDN
# matches the configured value, Nagios server components will be installed
# and the clients will allow to be connected by that host. Impacts also
# firewall ports (optional).
# @param [String] ng_nagios_ext_ip Specify the IP address of the
# nagios server. Required for NRPE configuration to allow the Nagios server
# to connect to NRPE, which as of now does not trust DNS names. Must be the
# public interface in case of NAT environments.
# @param [Boolean] ng_include_nrpe Whether to include NRPE to allow
# Nagios to connect to clients
# @param [String] ng_ping_warn Default value for ping warning check. Can be
# overridden on host level.
# @param [String] ng_ping_crit Default value for ping critical check. Can be
# overridden on host level.
# @param [Boolean] ng_ping_ensure Whether to include or exclude the check.
# Can be overridden on host level.
# @param [String] ng_disk_warn Default value for disk space warning check.
# Can be overridden on host level.
# @param [String] ng_disk_crit Default value for disk space critical check
# Can be overridden on host level.
# @param [Boolean] ng_disk_ensure Whether to include or exclude the check.
# Can be overridden on host level.
# @param [String] ng_swap_warn Default value for swap space warning check.
# Can be overridden on host level.
# @param [String] ng_swap_crit Default value for swap space critical check.
# Can be overridden on host level.
# @param [Boolean] ng_swap_ensure Whether to include or exclude the check.
# Can be overridden on host level.
# @param [String] ng_users_warn Default value for user logins warning check.
# Can be overridden on host level.
# @param [String] ng_users_crit Default value for user logins critical check
# Can be overridden on host level.
# @param [Boolean] ng_users_ensure Whether to include or exclude the check.
# Can be overridden on host level.
# @param [String] ng_procs_tot_warn Default warning for the total processes
# warning check. Can be overridden on host level.
# @param [String] ng_procs_tot_crit Default warning for the total processes
# critical check. Can be overridden on host level.
# @param [String] ng_procs_tot_param Default value for the process flags to be
# checked. Can be overridden on host level.
# @param [Boolean] ng_procs_tot_ens Whether to include or exclude the check.
# Can be overridden on host level.
# @param [String] ng_procs_z_warn Default value for the zombie processes
# warning check. Can be overridden on host level.
# @param [String] ng_procs_z_crit Default value for the zombie processes
# critical check. Can be overridden on host level.
# @param [String] ng_procs_z_param Default value for the zombie processes flag.
# Can be overridden on host level.
# @param [Boolean] ng_procs_z_ensure Whether to include or exclude the check.
# Can be overridden on host level.
# @param [String] ng_load_warn Default value for the load warning check.
# Can be overridden on host level.
# @param [String] ng_load_crit Default value for the load critical check.
# Can be overridden on host level.
# @param [Boolean] ng_load_ensure Whether to include or exclude the load check.
# Can be overridden on host level.
# @param [Boolean] ng_include_fw Whether to include firewall management.
# requires cd_firewall or puppetlabs-firewall module.
# @param [String] ng_fw_order Prefix for the port number to establish proper
# firewall rule ordering.
# @param [Boolean] ng_use_https Whether to use https.
# @param [Boolean] ng_http_https_fw Whether we want to forward http to https.
# only active if `ng_use_https` is set to `true`.
# @param [String] ng_http_port Specify the port to use for httpd. Used in
# templates and for firewall (Optional)
# @param [String] ng_https_port Specify the port to use for httpd. Used in
# templates and for firewall (Optional)
# @param [String] ng_user The name of the Nagios service user.
# @param [String] ng_user_home The home directory for the Nagios service user
# @param [String] ng_user_shell The shell for the Nagios service user, which
# never should be allowed to login.
# @param [String] ng_u_comment The comment for the Nagios service user for
# /etc/passwd. Shows up in email notifications from the Nagios daemon.
# @param [String] ng_u_uid The UID for the Nagios service user. Important when
# using shared environments like NFS.
# @param [String] ng_u_groups The secondary groups for the Nagios service user.
# Must not contain the primary group.
# @param [String] ng_context_help whether or not a context-sensitive
# help icon will be displayed for most of the CGIs.
# @param [String] ng_pending_state what states should be displayed in the web
# interface for hosts/services that have not yet been checked
# @param [String] ng_use_auth whether or not the CGIs will use any
# authentication when displaying host and service information, as
# well as committing commands to Nagios for processing. This should
# **__not__** be set to 0.
# @param [String] ng_use_ssl_auth allows you to use x509 cert (SSL)
# authentication in the CGIs. This is an advanced option and should
# not be enabled unless you know what you're doing.
# @param [Boolean] ng_enable_def_user Whether to enable a default user
# (**__not recommended__**).
# @param [String] ng_def_user_name default user name that can
# access pages without authentication. This allows people within a
# secure domain (i.e., behind a firewall) to see the current status
# without authenticating. Only active if `ng_enable_def_user` is set to `true`
# @param [String] ng_nagios_admin Specify the name of a nagios administration
# user here. Value will be used in cgi.cfg for all authorized commands and
# info,i.e. nagiosadmin. however, its strongly suggested to use a different
# name. Can be overridden per host / hostgroups to allow flexibility and
# increased security. You can also add a comma-separated list of people in
# here instead, which then would function like a group instead a single user.
# @param [String] ng_sysinfo_auth comma-delimited list of all usernames that
# have access to viewing the Nagios process information as
# provided by the Extended Information CGI (extinfo.cgi).
# @param [String] ng_confinfo_auth comma-delimited list of all usernames that
# can view ALL configuration information (hosts, commands, etc).
# @param [String] ng_command_auth comma-delimited list of all usernames that
# can issue shutdown and restart commands to Nagios via the
# command CGI (cmd.cgi).
# @param [String] ng_hostview_auth comma-delimited lists of all usernames that
# can view information for all hosts
# @param [String] ng_serviceview_auth comma-delimited lists of all usernames
# that can view information for all services.
# @param [String] ng_host_cmd_auth comma-delimited lists of all usernames that
# can issue host related commands.
# @param [String] ng_svc_cmd_auth comma-delimited lists of all usernames that
# can issue service related commands.
# @param [String] ng_readonly_auth comma-delimited list of usernames that have
# read-only rights in the CGIs.
# @param [String] ng_statusmap_img specify an image to be used as a
# background in the statusmap CGI.
# @param [Boolean] ng_use_colormap Whether to set values of background colors.
# @param [String] ng_colormap_red value for the `red` area of the color map.
# @param [String] ng_colormap_green value for the `green` area of the color map
# @param [String] ng_colormap_blue value for the `blue` area of the color map.
# @param [String] ng_statusmap_layout Value for the default statusmap layout.
# @param [String] ng_wrl_layout Value for the default statuswrl layout.
# @param [Boolean] ng_incl_own_wrl Whether to include your own objects in the
# generated VRML world.
# @param [String] ng_statuswrl_include Specify your own wrl object to be
# included in the generated VRML world. Only active if `ng_incl_own_wrl`
# is set to `true`.
# @param [String] ng_ping_syntax what syntax should be used when
# attempting to ping a host from the WAP interface
# @param [String] ng_refresh_rate specify the refresh rate in seconds
# of various CGIs
# @param [String] ng_result_limit specify the default number of results
# displayed on the status.cgi.
# @param [String] ng_escape_html whether HTML tags in host and service
# status output is escaped in the web interface. If enabled,
# your plugin output will not be able to contain clickable links.
# @param [Boolean] ng_use_sound whether to enable sound usage.
# @param [String] ng_host_unreachable sound file for `host unreachable`
# Only active if `ng_use_sound` is set to `true`.
# @param [String] ng_host_down sound file for `host down`
# Only active if `ng_use_sound` is set to `true`.
# @param [String] ng_svc_critical sound file for `service critical`.
# Only active if `ng_use_sound` is set to `true`.
# @param [String] ng_svc_warn sound file for `service warning`
# Only active if `ng_use_sound` is set to `true`.
# @param [String] ng_svc_unknown sound file for `service unknown`
# Only active if `ng_use_sound` is set to `true`.
# @param [String] ng_normal_sound sound file for `normal`
# Only active if `ng_use_sound` is set to `true`.
# @param [String] ng_action_url_target Specify target frames in which
# action URLs will open
# @param [String] ng_notes_url_target Specify target frames in which
# notes URLs will open
# @param [String] ng_lock_author_names whether users can change the author
# name when submitting comments, scheduling downtime.
# @param [Boolean] ng_enable_splunk Whether to enable splunk integration.
# @param [String] ng_splunk_url the URL for your Splunk URL
# @param [String] ng_navbar_addresses allow navbar search queries IP addresses
# @param [String] ng_navbar_aliases allow navbar search for aliases
# @param [String] ng_ack_no_sticky Enabling ack_no_sticky will default the
# "Sticky Acknowledgement" to be unchecked.
# @param [String] ng_ack_no_send Enabling ack_no_send will default the
# "Send Notification" to be unchecked.
# @param [Boolean] ng_use_selinux_tools Whether to enable selinux tools and
# policies. only effective if selinux is enabled.
# @param [String] ng_required_hosts String of **__FQDNs__** for hosts which
# should be allowed/required. Requires format
# 'host1.example.com host2.example.com'. If you want no restriction, chose
# 'all'.
# @param [String] ng_required_ips String of **__Ip addresses __** for hosts
# which should be allowed/required. Requires format 'ipaddress ip address
# range'. If you want no restriction, choose '0.0.0.0/0'.
# @param [Boolean] ng_enable_certbot Whether to use certbot for automated TLS
# certificate management
# @param [String] ng_certbot_webroot the path for certbot to place
# challenges for the certification process.
# @param [String] ng_mail_user email address to receive administrative mail.
# used for nagios itself as well as for certbot. Mail environment must be
# configured separately, i.e. through `cd_postfix`.
# @param [String] ng_page_user pager address to be used by Nagios for
# notifications. Paging environment must be configured separately.
# @param [Boolean] ng_enable_index Whether to create an index file to allow
# httpd checks with nagios on the nagios server.
# @param [String] ng_webserver_name the name of the web server nagios should
# 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] ng_resource_file 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] ng_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_svc_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_max_check_res_reap_time max amount of time (in seconds)
# that a single # check result reaper event will be allowed to run before
# returning control back to Nagios so it can perform other duties.
# @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.
# @param [String] ng_service_check_timeout how much time Nagios will allow
# service check commands to execute before killing them off.
# @param [String] ng_host_check_timeout how much time Nagios will allow
# host check commands to execute before killing them off.
# @param [String] ng_event_handler_timeout how much time Nagios will allow
# event handler commands to execute before killing them off.
# @param [String] ng_notification_timeout how much time Nagios will allow
# notification commands to execute before killing them off.
# @param [String] ng_ocsp_timeout how much time Nagios will allow
# ocsp commands to execute before killing them off.
# @param [String] ng_perfdata_timeout how much time Nagios will allow
# performance data commands to execute before killing them off.
# @param [String] ng_retain_state_inf Whether 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. Valid options are `0` and `1`.
# @param [String] ng_state_retention_file Where 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 `ng_retain_state_inf` variable is set to 1.
# @param [String] ng_retention_update_intval 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.
# @param [String] ng_use_ret_program_state Whether Nagios will set
# program status variables based on the values saved in the retention file.
# Valid options are `0` and `1`.
# @param [String] ng_use_ret_scheduling_info Whether Nagios will retain
# the scheduling info (next check time) for hosts and services based on the
# values saved in the retention file. Valid options are `0` and `1`.
# @param [String] ng_ret_host_attr_mask mask determines what host
# attributes are not retained
# @param [String] ng_ret_service_attr_mask mask determines what service
# attributes are not retained
# @param [String] ng_ret_proc_host_attr_mask what host process attributes
# are not retained.
# @param [String] ng_ret_proc_svc_attr_mask what service process attributes
# are not retained
# @param [String] ng_ret_contact_h_attr_mask what host contact attributes are
# not retained.
# @param [String] ng_ret_contact_s_attr_mask what service contact attributes
# are not retained.
# @param [String] ng_interval_length seconds per unit interval as used in the
# host/contact/service configuration files.
# @param [String] ng_check_for_updates whether Nagios will automatically check
# to see if new updates (releases) are available. Effectively, setting
# `$pkg_ensure` to `latest` will have Puppet take care for that automatically
# though through the packages available in the yum repos.
# Valid options are `0` and `1`.
# @param [String] ng_bare_update_check what data Nagios will send to
# api.nagios.org when it checks for updates. Valid options are `0` and `1`.
# @param [String] ng_use_aggr_host_checking Whether to enable aggressive host
# checking. Read Nagios documentation for more infos aggressive host checking.
# @param [String] ng_execute_service_checks Whether Nagios will actively
# execute service checks when it initially starts.
# Valid options are `0` and `1`.
# @param [String] ng_accept_pass_svc_checks Whether or not Nagios will accept
# passive # service checks results when it initially (re)starts.
# Valid options are `0` and `1`.
# @param [String] ng_execute_host_checks whether or not Nagios will actively
# execute host checks when it initially starts.
# Valid options are `0` and `1`.
# @param [String] ng_accept_pass_host_checks Whether or not Nagios will accept
# passive # host checks results when it initially (re)starts.
# Valid options are `0` and `1`.
# @param [String] ng_enable_notifications Whether Nagios will sent out any host
# or service notifications when it is initially (re)started.
# Valid options are `0` and `1`.
# @param [String] ng_enable_event_handlers Whether Nagios will run any host or
# service event handlers when it is initially (re)started.
# Valid options are `0` and `1`.
# @param [String] ng_process_perf_data Whether Nagios will process performance
# data returned from service and host checks.
# Valid options are `0` and `1`.
# @param [String] ng_host_perfdata_command Short name of a command definition
# defined in your host configuration file. Only active if
# `ng_process_perf_data` is set to `1`
# @param [String] ng_svc_perfdata_command Short name of a command definition
# defined in your service configuration file. Only active if
# `ng_process_perf_data` is set to `1`
# @param [String] ng_host_perfdata_file used to store host performance data.
# Only active if `ng_process_perf_data` is set to `1`
# @param [String] ng_service_perfdata_file used to store service performance
# data. Only active if `ng_process_perf_data` is set to `1`
# @param [String] ng_host_perfdata_template 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. Only active if `ng_process_perf_data` is set to `1`
# @param [String] ng_svc_perfdata_template 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. Only active if `ng_process_perf_data` is set to `1`
# @param [String] ng_host_perfdata_file_mode Whether the host performance data
# files are opened in write ("w"), append ("a") or named pipe ("p") mode.
# Only active if `ng_process_perf_data` is set to `1`.
# @param [String] ng_svc_perfdata_file_mode Whether the service performance
# data files are opened in write ("w"), append ("a") or named pipe ("p") mode.
# Only active if `ng_process_perf_data` is set to `1`.
# @param [String] ng_h_perfdata_proc_intval How often (in seconds) the host
# performance data files are processed using the commands defined below.
# `0` indicates that the files should not be periodically processed.
# Only active if `ng_process_perf_data` is set to `1`.
# @param [String] ng_s_perfdata_proc_intval How often (in seconds) the service
# performance data files are processed using the commands defined below.
# `0` indicates that the files should not be periodically processed.
# Only active if `ng_process_perf_data` is set to `1`.
# @param [String] ng_h_perfdata_proc_cmd Commands used to periodically process
# the host performance data files.
# Only active if `ng_process_perf_data` is set to `1`.
# @param [String] ng_s_perfdata_proc_cmd Commands used to periodically process
# the service performance data files.
# Only active if `ng_process_perf_data` is set to `1`.
# @param [String] ng_h_perfdata_proc_e_res Whether the core will process empty
# host perfdata results. Valid options are `0` and `1`.
# Only active if `ng_process_perf_data` is set to `1`.
# @param [String] ng_s_perfdata_proc_e_res Whether the core will process empty
# service perfdata results. Valid options are `0` and `1`.
# Only active if `ng_process_perf_data` is set to `1`.
# @param [String] ng_obsess_over_services Whether Nagios will obsess over
# service checks and run the ocsp_command defined. Unless you are
# planning on implementing distributed monitoring, do not enable this option.
# @param [String] ng_ocsp_command Command that is run for every service check
# that is processed by Nagios. This command is executed only if the
# `ng_obsess_over_services` option is set to 1. The command argument is the
# short name of a command definition defined in your service configuration
# file. Read the HTML docs for # more information on implementing distributed
# monitoring.
# @param [String] ng_obsess_over_hosts Whether Nagios will obsess over
# host checks and run the ocsp_command defined. Unless you are
# planning on implementing distributed monitoring, do not enable this option.
# @param [String] ng_ochp_command Command that is run for every service check
# that is processed by Nagios. This command is executed only if the
# `ng_obsess_over_hosts` option is set to 1. The command argument is the
# short name of a command definition defined in your host configuration file.
# Read the HTML docs for # more information on implementing distributed
# monitoring.
# @param [String] ng_translate_pass_h_checks 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 only if you have
# distributed or failover monitoring setup. Valid options are `0` and `1`.
# @param [String] ng_pass_h_checks_are_soft Whether Nagios will treat passive
# host checks as being HARD or SOFT. Valid options are `0` and `1`.
# @param [String] ng_check_orphaned_svc Whether Nagios will periodically check
# for orphaned service checks.Valid options are `0` and `1`.
# @param [String] ng_check_orphaned_hosts Whether Nagios will periodically
# check for orphaned host checks.Valid options are `0` and `1`.
# @param [String] ng_check_service_freshness Whether Nagios will periodically
# check the "freshness" of service results. Valid options are `0` and `1`.
# @param [String] ng_svc_fresh_check_intval how often (in seconds) Nagios will
# check the "freshness" of service check results. Only active if
# `ng_check_service_freshness` is set to `1`.
# @param [String] ng_svc_check_timeout_state The state Nagios will report when
# a service check times out - that is does not respond within
# `ng_service_check_timeout` seconds. Valid settings are:
# c - Critical (default)
# u - Unknown
# w - Warning
# o - OK
# @param [String] ng_check_host_freshness Whether Nagios will periodically
# check the "freshness" of host check results. Valid options are `0` and `1`.
# @param [String] ng_host_fresh_check_intval how often (in seconds) Nagios
# will check the "freshness" of host check results. Only active if
# `ng_check_service_freshness` is set to `1`.
# @param [String] ng_add_freshness_latency number of seconds that Nagios will
# add to any host and service freshness thresholds that it calculates
# (those not explicitly specified by the user).
# @param [String] ng_enable_flap_detection 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.
# @param [String] ng_low_svc_flap_threshold Low threshold for service flapping.
# only active if `ng_enable_flap_detection` is set to `1`.
# @param [String] ng_high_svc_flap_threshold High threshold for service
# flapping. Only active if `ng_enable_flap_detection` is set to `1`.
# @param [String] ng_low_h_flap_threshold Low threshold for host flapping.
# only active if `ng_enable_flap_detection` is set to `1`.
# @param [String] ng_high_h_flap_threshold High threshold for host
# flapping. Only active if `ng_enable_flap_detection` is set to `1`.
# @param [String] ng_date_format 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)
# @param [Boolean] ng_use_timezone_offset Whether to use timezone offsets.
# if set to `false`, the system configured timezone will be used.
# @param [String] ng_use_timezone 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. It is highly recommended to configure
# the timezone correctly at system level anyway. Only active if
# `ng_use_timezone_offset` is set to `true`.
# @param [String] ng_illegal_obj_name_chars specify illegal characters that
# cannot # be used in host names, service descriptions, or names of other
# object types.
# @param [String] ng_ill_macro_output_chars 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$
# $HOSTPERFDATA$
# $HOSTACKAUTHOR$
# $HOSTACKCOMMENT$
# $SERVICEOUTPUT$
# $SERVICEPERFDATA$
# $SERVICEACKAUTHOR$
# $SERVICEACKCOMMENT$
# @param [String] ng_use_regexp_matching Whether 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.
# Valid options are `0` and `1`.
# @param [String] ng_true_regexp_matching Whether or not "true" regular
# expression # matching takes place in the object config files. Only active if
# `ng_use_regexp_matching` is set to true.
# @param [String] ng_daemon_dumps_core Whether Nagios is allowed to create
# a core dump when it runs as a daemon.
# @param [String] ng_use_large_inst_tweaks Whether or not Nagios will take some
# shortcuts # which can save on memory and CPU usage in large Nagios
# installations. Valid options are `0` or `1`.
# @param [String] ng_enable_env_macros Whether Nagios will make all standard
# macros available as environment variables when host/service checks and
# system commands (event handlers, notifications, etc.) are executed. Can
# cause performance problems in large installations if enabled.
# Valid options are `0` or `1`.
# @param [String] ng_free_child_process_mem Whether Nagios should free up
# memory on child processes. Valid options are `0` and `1`.
# @param [String] ng_child_proc_fork_twice ow Nagios will fork child processes.
# Valid options are `0` or `1`.
# @param [String] ng_debug_level how much (if any) debugging information will
# be written to the debug file. Valid options are:
# -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
# @param [String] ng_debug_verbosity How verbose the debug log out will be.
# Valid options:
# 0 = Brief output
# 1 = More detailed
# 2 = Very detailed
# @param [String] ng_debug_file FQDN where Nagios should write debug
# information.
# @param [String] ng_max_debug_file_size 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.
# @param [String] ng_allow_empty_hostgroups Should we allow hostgroups to have
# no hosts, we default this to off since that was the old behavior.
# @param [String] ng_check_workers 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.
# @param [String] ng_host_down_svc_checks 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. Valid options are `0` and
# `1`.
# @param [Boolean] ng_enable_load_ctl_options Whether to enable loadctl_options
# To get current defaults based on your system issue a command to
# the query handler. Experimental feature and not recommended for production.
# @param [String] ng_loadctl_options load controlling 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
# @param [String] ng_nrpe_port the port for NRPE. used by firewall and in
# configuration file.
# @param [Boolean] ng_enable_swap_check Whether to enable the declaration of
# the swap check. Disabling this makes sense when you use the `cd_swap`
# Puppet module and have enabled the check declaration from there, so the
# Nagios check is properly aligned to the Puppet module controlling the
# particular item.
# @param [Array] reqpackages_server the packages for the server
# @param [Array] reqpackages_client the packages for the clients
###############################################################################
class cd_nagios::params (
String $pkg_ensure = 'latest',
String $ng_nagios_server = "nagios.${::domain}",
String $ng_nagios_ext_ip = undef,
String $ng_mail_user = "admin@${::domain}",
String $ng_page_user = "pageadmin@${::domain}",
Boolean $ng_include_nrpe = true,
# firewall
Boolean $ng_include_fw = true,
Boolean $ng_use_https = true,
Boolean $ng_http_https_fw = true,
String $ng_fw_order = '50',
String $ng_http_port = '80',
String $ng_https_port = '443',
String $ng_nrpe_port = '5666',
# check command parameters
## ping
String $ng_ping_warn = '100.0,20%',
String $ng_ping_crit = '500.0,60%',
String $ng_ping_ensure = 'present',
## disk
String $ng_disk_warn = '20%',
String $ng_disk_crit = '10%' ,
String $ng_disk_ensure = 'present',
# swap
String $ng_swap_warn = '20',
String $ng_swap_crit = '10',
String $ng_swap_ensure = 'present',
# users
String $ng_users_warn = '20',
String $ng_users_crit = '50',
String $ng_users_ensure = 'present',
#total procs
String $ng_procs_tot_warn = '330',
String $ng_procs_tot_crit = '400',
String $ng_procs_tot_param = 'RDST',
String $ng_procs_tot_ens = 'present',
# zombie procs
String $ng_procs_z_warn = '10',
String $ng_procs_z_crit = '30',
String $ng_procs_z_param = 'Z',
String $ng_procs_z_ensure = 'present',
# load
String $ng_load_warn = '5.00,4.00,3.00',
String $ng_load_crit = '10.00,6.00,4.00',
String $ng_load_ensure = 'present',
# user settings
String $ng_user = 'nagios',
String $ng_u_comment = 'Nagios service user',
String $ng_u_uid = '1004',
String $ng_user_home = '/var/spool/nagios',
Optional[String] $ng_u_groups = undef,
String $ng_user_shell = '/bin/bash',
# cgi settings
String $ng_context_help = '1',
String $ng_pending_state = '1',
String $ng_use_auth = '1',
String $ng_use_ssl_auth = '0',
Boolean $ng_enable_def_user = false,
String $ng_def_user_name = 'nagios_insecure',
String $ng_nagios_admin = 'nagios_sec_adm',
String $ng_sysinfo_auth = '',
String $ng_confinfo_auth = '',
String $ng_command_auth = '',
String $ng_hostview_auth = '',
String $ng_serviceview_auth = '',
String $ng_host_cmd_auth = '',
String $ng_svc_cmd_auth = '',
String $ng_readonly_auth = '' ,
String $ng_statusmap_img = 'smbackground.gd2',
Boolean $ng_use_colormap = false,
String $ng_colormap_red = '255',
String $ng_colormap_green = '255',
String $ng_colormap_blue = '255',
String $ng_statusmap_layout = '6',
String $ng_wrl_layout = '4',
Boolean $ng_incl_own_wrl = false,
String $ng_statuswrl_include = '',
String $ng_ping_syntax = '/bin/ping -n -U -c 5 $HOSTADDRESS$',
String $ng_refresh_rate = '90',
String $ng_result_limit = '100',
String $ng_escape_html = '1',
Boolean $ng_use_sound = false,
String $ng_host_unreachable = 'hostdown.wav',
String $ng_host_down = 'hostdown.wav',
String $ng_svc_critical = 'critical.wav',
String $ng_svc_warn = 'warning.wav',
String $ng_svc_unknown = 'warning.wav',
String $ng_normal_sound = 'noproblem.wav',
String $ng_action_url_target = '_blank',
String $ng_notes_url_target = '_blank',
String $ng_lock_author_names = '1',
Boolean $ng_enable_splunk = false,
String $ng_splunk_url = 'http://127.0.0.1:8000/',
String $ng_navbar_addresses = '1',
String $ng_navbar_aliases = '1',
String $ng_ack_no_sticky = '0',
String $ng_ack_no_send = '0',
# selinux
Boolean $ng_use_selinux_tools = true,
# httpd
String $ng_required_hosts = '',
String $ng_required_ips = '127.0.0.0/8',
Boolean $ng_enable_index = true,
# certbot
Boolean $ng_enable_certbot = true,
String $ng_certbot_webroot = '/var/www/html',
String $ng_webserver_name = "nagios.${::domain}",
# main settings
String $ng_log_file = '/var/log/nagios/nagios.log',
String $ng_max_check_attempts = '10',
String $ng_object_cache_file = '/var/spool/nagios/objects.cache',
String $ng_precached_obj_file = '/var/spool/nagios/objects.precache',
String $ng_resource_file = '/etc/nagios/private/resource.cfg',
String $ng_status_file = '/var/log/nagios/status.dat',
String $ng_status_upd_interval = '10',
String $ng_check_ext_commands = '1',
String $ng_command_file = '/var/spool/nagios/cmd/nagios.cmd',
Boolean $ng_enable_query_handler = false,
String $ng_query_socket = '/var/spool/nagios/cmd/nagios.qh',
String $ng_lock_file = '/var/run/nagios/nagios.pid',
String $ng_temp_file = '/var/spool/nagios/nagios.tmp',
String $ng_temp_path = '/tmp',
String $ng_event_broker_options = '-1',
String $ng_event_broker_module = '',
String $ng_log_rotation_method = 'h',
String $ng_log_archive_path = '/var/log/nagios/archives',
String $ng_use_syslog = '1',
String $ng_log_notifications = '1',
String $ng_log_service_retries = '1',
String $ng_log_host_retries = '1',
String $ng_log_event_handlers = '1',
String $ng_log_initial_states = '0',
String $ng_log_current_states = '1',
String $ng_log_external_commands = '1',
String $ng_log_passive_checks = '1',
String $ng_glob_host_evt_handler = '',
String $ng_glob_svc_evt_handler = '',
String $ng_svc_int_check_delay = 's',
String $ng_max_svc_check_spread = '30',
String $ng_svc_interleave_factor = 's',
String $ng_host_int_check_delay = 's',
String $ng_max_host_check_spread = '30',
String $ng_max_concurrent_checks = '0',
String $ng_check_res_reaper_freq = '10',
String $ng_max_check_res_reap_time = '30',
String $ng_check_result_path = '/var/spool/nagios/checkresults',
String $ng_max_check_res_file_age = '3600',
String $ng_cached_h_check_horizon = '15',
String $ng_cached_s_check_horizon = '15',
String $ng_pred_host_dep_checks = '1',
String $ng_pred_svc_dep_checks = '1',
String $ng_soft_state_dependencies = '0',
String $ng_time_change_threshold = '900',
String $ng_auto_reschedule_checks = '0',
String $ng_auto_reschedule_intval = '30',
String $ng_auto_reschedule_window = '180',
String $ng_service_check_timeout = '60',
String $ng_host_check_timeout = '30',
String $ng_event_handler_timeout = '30',
String $ng_notification_timeout = '30',
String $ng_ocsp_timeout = '5',
String $ng_perfdata_timeout = '5',
String $ng_retain_state_inf = '1',
String $ng_state_retention_file = '/var/spool/nagios/retention.dat',
String $ng_retention_update_intval = '60',
String $ng_use_ret_program_state = '1',
String $ng_use_ret_scheduling_info = '1',
String $ng_ret_host_attr_mask = '0',
String $ng_ret_service_attr_mask = '0',
String $ng_ret_proc_host_attr_mask = '0',
String $ng_ret_proc_svc_attr_mask = '0',
String $ng_ret_contact_h_attr_mask = '0',
String $ng_ret_contact_s_attr_mask = '0',
String $ng_interval_length = '60',
String $ng_check_for_updates = '1',
String $ng_bare_update_check = '0',
String $ng_use_aggr_host_checking = '0',
String $ng_execute_service_checks = '1',
String $ng_accept_pass_svc_checks = '1',
String $ng_execute_host_checks = '1',
String $ng_accept_pass_host_checks = '1',
String $ng_enable_notifications = '1',
String $ng_enable_event_handlers = '1',
String $ng_process_perf_data = '0',
String $ng_host_perfdata_command = 'process-host-perfdata',
String $ng_svc_perfdata_command = 'process-service-perfdata',
String $ng_host_perfdata_file = '/var/spool/nagios/host-perfdata',
String $ng_service_perfdata_file = '/var/spool/nagios/service-perfdata',
String $ng_host_perfdata_template = '[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$',
String $ng_svc_perfdata_template = '[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$',
String $ng_host_perfdata_file_mode = 'a',
String $ng_svc_perfdata_file_mode = 'a',
String $ng_h_perfdata_proc_intval = '0',
String $ng_s_perfdata_proc_intval = '0',
String $ng_h_perfdata_proc_cmd = 'process-host-perfdata-file',
String $ng_s_perfdata_proc_cmd = 'process-service-perfdata-file',
String $ng_h_perfdata_proc_e_res = '1',
String $ng_s_perfdata_proc_e_res = '1',
String $ng_obsess_over_services = '0',
String $ng_ocsp_command = '',
String $ng_obsess_over_hosts = '0',
String $ng_ochp_command = '',
String $ng_translate_pass_h_checks = '0',
String $ng_pass_h_checks_are_soft = '0',
String $ng_check_orphaned_svc = '1',
String $ng_check_orphaned_hosts = '1',
String $ng_check_service_freshness = '1',
String $ng_svc_fresh_check_intval = '60',
String $ng_svc_check_timeout_state = 'c',
String $ng_check_host_freshness = '0',
String $ng_host_fresh_check_intval = '60',
String $ng_add_freshness_latency = '15',
String $ng_enable_flap_detection = '1',
String $ng_low_svc_flap_threshold = '5.0',
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 = 'us',
Boolean $ng_use_timezone_offset = false,
String $ng_use_timezone = '',
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_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_debug_file = '/var/spool/nagios/nagios.debug',
String $ng_max_debug_file_size = '1000000',
String $ng_allow_empty_hostgroups = '0',
String $ng_check_workers = '',
String $ng_host_down_svc_checks = '0',
Boolean $ng_enable_load_ctl_options = false,
String $ng_loadctl_options = 'jobs_max=100;backoff_limit=10;rampup_change=5',
# single nagios checks
Boolean $ng_enable_swap_check = true,
# installation
Array $reqpackages_server = ['nagios','nagios-devel'],
Array $reqpackages_client = ['net-snmp-utils','nagios-plugins','nagios-plugins-all','nagios-plugins-nrpe','nagios-common'],
class confdroid_nagios::params (
) {
# service
$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_run_dir = '/var/run/nagios'
$ng_cmd_dir = "${ng_spool_dir}/cmd"
$ng_checkresults_dir = "${ng_spool_dir}/checkresults"
# 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_statdat_erb = 'cd_nagios/selinux/statusdat.erb'
$ng_checknrpe_erb = 'cd_nagios/selinux/checknrpe.erb'
$ng_checknagios_erb = 'cd_nagios/selinux/checknagios.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'
$ng_resource_erb = 'cd_nagios/nagios/resource_cfg.erb'
$ng_grep_erb = 'cd_nagios/selinux/grep.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"
# nagios
$ng_target_templates = "${ng_conf_d_dir}/nagios_templates.cfg"
$ng_templates_head_erb = 'cd_nagios/nagios/templates_cfg_head.erb'
$ng_templates_rule_erb = 'cd_nagios/nagios/templates_cfg_rule.erb'
$ng_tgt_timeperiods_base = "${ng_conf_d_dir}/nagios_timeperiods.cfg"
$ng_tgt_timep_add = "${ng_conf_d_dir}/nagios_timeperiods_add.cfg"
$ng_tgt_timep_head_erb = 'cd_nagios/nagios/timeperiods_cfg_head.erb'
$ng_tgt_timep_rule_erb = 'cd_nagios/nagios/timeperiods_cfg_rule.erb'
$ng_target_localhost = "${ng_conf_d_dir}/nagios_localhost.cfg"
$ng_target_host = "${ng_conf_d_dir}/nagios_host.cfg"
$ng_target_hostgroup_base = "${ng_conf_d_dir}/nagios_hostgroups_base.cfg"
$ng_tgt_hostgroup_add = "${ng_conf_d_dir}/nagios_hostgroups_add.cfg"
$ng_tgt_hostgrp_head_erb = 'cd_nagios/nagios/hostgroups_cfg_head.erb'
$ng_tgt_hostgrp_rule_erb = 'cd_nagios/nagios/hostgroups_cfg_rule.erb'
$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_svcgrp_base = "${ng_conf_d_dir}/nagios_servicegroups_base.cfg"
$ng_tgt_servicegroup_add = "${ng_conf_d_dir}/nagios_servicegroups_add.cfg"
$ng_tgt_svcgrp_head_erb = 'cd_nagios/nagios/svcgroups_cfg_head.erb'
$ng_tgt_svcgrp_rule_erb = 'cd_nagios/nagios/svcgroups_cfg_rule.erb'
$ng_target_base_contact = "${ng_conf_d_dir}/nagios_contact_base.cfg"
$ng_target_add_contact = "${ng_conf_d_dir}/nagios_contact_add.cfg"
$ng_contacts_head_erb = 'cd_nagios/nagios/contacts_cfg_head.erb'
$ng_contacts_rule_erb = 'cd_nagios/nagios/contacts_cfg_rule.erb'
$ng_tgt_contactgroup_base = "${ng_conf_d_dir}/nagios_contactgroup_base.cfg"
$ng_tgt_contactgroup_add = "${ng_conf_d_dir}/nagios_contactgroup_add.cfg"
$ng_cntctgrps_head_erb = 'cd_nagios/nagios/contactgroups_cfg_head.erb'
$ng_cntctgrps_rule_erb = 'cd_nagios/nagios/contactgroups_cfg_rule.erb'
$ng_target_command = "${ng_conf_d_dir}/nagios_commands_base.cfg"
$ng_nagios_service_cmd = 'check_nagios!/var/log/nagios/status.dat!5!/usr/sbin/nagios'
# Default facts
$fqdn = $facts['networking']['fqdn']
$domain = $facts['networking']['domain']
$os_name = $facts['os']['name']
$os_release = $facts['os']['release']['major']
# includes must be last
include cd_nagios::main::config
include confdroid_nagios::main::config
}

View File

@@ -1,141 +0,0 @@
## cd_nagios::selinux::config.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages all aspects of selinux for cd_nagios.
##############################################################################
class cd_nagios::selinux::config (
) inherits cd_nagios::params {
if $ng_use_selinux_tools == true {
require cd_selinux
# it appears that selinux behaves differently across different nodes,
# so all we can do for now is to create a list of the AVC alerts and come up
# with a solution on that later.
exec { 'create_avc_list':
command => 'sealert -a /var/log/audit/audit.log > avc_alerts',
cwd => $ng_user_home,
path => ['/usr/bin'],
creates => "${ng_user_home}/avc_alerts",
}
# sealert tac-cgi
# exec { 'create_policy_taccgi':
# command => template($ng_taccgi_erb),
# path => ['/usr/bin','/usr/sbin'],
# user => $ng_user,
# cwd => $ng_user_home,
# creates => "${ng_user_home}/my-taccgi.pp",
# notify => Exec['semodule_taccgi'],
# }
# exec { 'semodule_taccgi':
# command => "semodule -i ${ng_user_home}/my-taccgi.pp",
# path => ['/usr/bin','/usr/sbin'],
# user => $ng_user,
# cwd => $ng_user_home,
# require => Exec['create_policy_taccgi'],
# refreshonly => true,
# }
# sealert status.cgi
# exec { 'create_policy_statuscgi':
# command => template($ng_statcgi_erb),
# path => ['/usr/bin','/usr/sbin'],
# cwd => $ng_user_home,
# creates => "${ng_user_home}/my-statuscgi.pp",
# notify => Exec['semodule_statuscgi'],
# }
# exec { 'semodule_statuscgi':
# command => 'semodule -i my-statuscgi.pp',
# path => ['/usr/bin','/usr/sbin'],
# cwd => $ng_user_home,
# require => Exec['create_policy_statuscgi'],
# refreshonly => true,
# notify => Service[$ng_service],
# }
# sealert check_nrpe
# exec { 'create_policy_checknrpe':
# command => template($ng_checknrpe_erb),
# path => ['/usr/bin','/usr/sbin'],
# cwd => $ng_user_home,
# creates => "${ng_user_home}/my-checknrpe.pp",
# notify => Exec['semodule_checknrpe'],
# }
# exec { 'semodule_checknrpe':
# command => 'semodule -i my-checknrpe.pp',
# path => ['/usr/bin','/usr/sbin'],
# cwd => $ng_user_home,
# require => Exec['create_policy_checknrpe'],
# refreshonly => true,
# notify => Service[$ng_service],
# }
# sealert check_nagios
# exec { 'create_policy_checknagios':
# command => template($ng_checknagios_erb),
# path => ['/usr/bin','/usr/sbin'],
# cwd => $ng_user_home,
# creates => "${ng_user_home}/my-checknagios.pp",
# notify => Exec['semodule_checknagios'],
# }
# exec { 'semodule_checknagios':
# command => 'semodule -i my-checknagios.pp',
# path => ['/usr/bin','/usr/sbin'],
# cwd => $ng_user_home,
# require => Exec['create_policy_checknagios'],
# refreshonly => true,
# notify => Service[$ng_service],
# }
# sealert status.dat
exec { 'create_policy_statusdat':
command => template($ng_statdat_erb),
path => ['/usr/bin','/usr/sbin'],
user => $ng_user,
cwd => $ng_user_home,
creates => "${ng_user_home}/my-http.pp",
notify => Exec['semodule_statusdat'],
}
exec { 'semodule_statusdat':
command => "semodule -i ${ng_user_home}/my-httpd.pp",
path => ['/usr/bin','/usr/sbin'],
user => $ng_user,
cwd => $ng_user_home,
require => Exec['create_policy_statusdat'],
refreshonly => true,
notify => Service[$ng_service],
}
# sealert grep
exec { 'create_policy_grep':
command => template($ng_grep_erb),
path => ['/usr/bin','/usr/sbin'],
user => $ng_user,
cwd => $ng_user_home,
creates => "${ng_user_home}/my-grep.pp",
notify => Exec['semodule_statusdat'],
}
exec { 'semodule_grep':
command => "semodule -i ${ng_user_home}/my-grep.pp",
path => ['/usr/bin','/usr/sbin'],
user => $ng_user,
cwd => $ng_user_home,
require => Exec['create_policy_grep'],
refreshonly => true,
notify => Service[$ng_service],
}
}
}

View File

@@ -1,28 +0,0 @@
## cd_nagios::server::access.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Define manages user- and password rules for accessing nagios.
# @param [string] ng_htpasswd_user user name for the /etc/nagios/passwd file
# @param [string] ng_htpasswd_password the encrypted password for the
# /etc/nagios/passwd file.
##############################################################################
define cd_nagios::server::access (
Optional[String] $ng_htpasswd_user = undef,
Optional[String] $ng_htpasswd_password = undef,
) {
$ng_nagios_server = $cd_nagios::params::ng_nagios_server
$ng_htpasswd_file = $cd_nagios::params::ng_htpasswd_file
$ng_htpasswd_rule = $cd_nagios::params::ng_htpasswd_rule
$ng_service = $cd_nagios::params::ng_service
if $::fqdn == $ng_nagios_server {
# create password rules
concat::fragment { $name:
target => $ng_htpasswd_file,
content => template($ng_htpasswd_rule),
}
}
}

View File

@@ -1,30 +0,0 @@
## cd_nagios::server::access_rules.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages presence of /etc/nagios/phtpasswd file.
# @example
# cd_nagios::server::access { 'example':
# ng_htpasswd_user => 'example_user',
# ng_htpasswd_password => 'example_password_encrypted',
# }
##############################################################################
class cd_nagios::server::access_rules (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
# manage /etc/nagios/htpasswd file
concat { $ng_htpasswd_file:
ensure => present,
path => $ng_htpasswd_file,
owner => 'root',
group => 'apache',
mode => '0640',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
notify => Service[$ng_service],
}
}
}

View File

@@ -1,98 +0,0 @@
## cd_nagios::server::files.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages all configuration files required for cd_nagios.
##############################################################################
class cd_nagios::server::files (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
if $ng_use_https == true {
if $ng_enable_certbot == true {
require cd_nagios::certbot::certs
}
}
require cd_nagios::main::dirs
# 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:
ensure => file,
path => $ng_cgi_cfg_file,
owner => 'root',
group => 'root',
mode => '0644',
selrange => s0,
selrole => object_r,
seltype => nagios_etc_t,
seluser => system_u,
content => template($ng_cgi_cfg_erb),
notify => Service[$ng_service],
}
## Apache files
# 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,
}
file { $ng_forward_conf:
ensure => file,
path => $ng_forward_conf,
owner => 'root',
group => 'root',
mode => '0644',
selrange => s0,
selrole => object_r,
seltype => httpd_config_t,
seluser => system_u,
content => template($ng_forward_conf_erb),
notify => Service[$ae_service],
}
if $ng_use_https == true {
# create ssl vhost
file { $ng_ssl_vhost_file:
ensure => file,
path => $ng_ssl_vhost_file,
owner => 'root',
group => 'root',
mode => '0644',
selrange => s0,
selrole => object_r,
seltype => httpd_config_t,
seluser => system_u,
content => template($ng_ssl_vhost_erb),
notify => Service[$ae_service],
}
}
if $ng_use_https != true {
# remove ssl_vhost
file { $ng_ssl_vhost_file:
ensure => absent,
}
}
}
}

View File

@@ -1,198 +0,0 @@
## cd_nagios::server::service.pp
# Module name: cd_nagios
# Author: Arne Teuke (arne_teuke@ConfDroid.com)
# @summary Class manages the service(s) for cd_nagios.
#############################################################################
class cd_nagios::server::service (
) inherits cd_nagios::params {
if $::fqdn == $ng_nagios_server {
if $ng_include_nrpe == true {
require cd_nrpe
}
require cd_nagios::server::files
require cd_nagios::server::access_rules
require cd_nagios::nagios::objects::config
require cd_nagios::nagios::resources::resource
service { $ng_service:
ensure => running,
hasstatus => true,
hasrestart => true,
enable => true,
}
@@nagios_host { 'localhost':
ensure => $ng_ping_ensure,
alias => 'localhost',
address => '127.0.0.1',
use => 'linux-server',
target => $ng_target_localhost,
hostgroups => 'linux-servers',
contacts => 'ops',
max_check_attempts => $ng_max_check_attempts,
notification_period => '24x7',
owner => $ng_user,
group => $ng_user,
mode => '0640',
check_command => "check_ping!${ng_ping_warn}!${ng_ping_crit}",
notify => Service[$ng_service],
}
@@nagios_service { 'check_nagios_localhost':
check_command => $ng_nagios_service_cmd,
use => 'generic-service',
host_name => 'localhost',
notification_period => '24x7',
service_description => 'localhost_nagios_service',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
contacts => 'ops',
}
@@nagios_host { $::fqdn:
ensure => $ng_ping_ensure,
alias => $::hostname,
address => $::fqdn,
use => 'linux-server',
target => $ng_target_host,
hostgroups => 'linux-servers',
contacts => 'ops',
max_check_attempts => $ng_max_check_attempts,
notification_period => '24x7',
owner => $ng_user,
group => $ng_user,
mode => '0640',
check_command => "check_ping!${ng_ping_warn}!${ng_ping_crit}",
notify => Service[$ng_user],
}
@@nagios_service { "root_partition_${::hostname}":
ensure => $ng_disk_ensure,
check_command => "check_nrpe!check_disk!${ng_disk_warn}!${ng_disk_crit}!/",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_root_partition",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
if $ng_enable_swap_check == true {
@@nagios_service { "Swap_Usage_${::hostname}":
ensure => $ng_swap_ensure,
check_command => "check_nrpe!check_swap!${ng_swap_warn}!${ng_swap_crit}",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_swap_usage",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
}
@@nagios_service { "Local_Users_${::hostname}":
ensure => $ng_users_ensure,
check_command => "check_nrpe!check_users!${ng_users_warn}!${ng_users_crit}",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_local_users",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
@@nagios_service { "Total Processes_${::hostname}":
ensure => $ng_procs_tot_ens,
check_command => "check_nrpe!check_procs!${ng_procs_tot_warn}!${ng_procs_tot_crit}!${ng_procs_tot_param}",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_total_processes",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
@@nagios_service { "Zombie Processes_${::hostname}":
ensure => $ng_procs_z_ensure,
check_command => "check_nrpe!check_procs!${ng_procs_z_warn}!${ng_procs_z_crit}!${ng_procs_z_param}",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_zombie_processes",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
@@nagios_service { "Current_Load_${::hostname}":
ensure => $ng_load_ensure,
check_command => "check_nrpe!check_load!${ng_load_warn}!${ng_load_crit}",
use => 'generic-service',
host_name => $::fqdn,
contacts => 'ops',
notification_period => '24x7',
service_description => "${::hostname}_current_load",
servicegroups => 'linux-services',
target => $ng_target_service,
owner => $ng_user,
group => $ng_user,
mode => '0640',
}
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'] }
}
}