diff --git a/manifests/params.pp b/manifests/params.pp index a29d7b9..0739f2c 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -97,6 +97,8 @@ # to update the status file. Default is '10'. # @param [String] ng_check_ext_commands Whether to allow external commands # to be submitted to Nagios. Default is '1'. +# @param [String] ng_user The user to run the Nagios service as. +# Default is 'nagios'. ############################################################################### class confdroid_nagios::params ( @@ -111,6 +113,7 @@ class confdroid_nagios::params ( String $ng_max_check_attempts = '10', String $ng_status_upd_interval = '10', String $ng_check_ext_commands = '1', + String $ng_user = 'nagios', # contact groups String $ng_contactgroup_name = 'admins', @@ -174,6 +177,7 @@ class confdroid_nagios::params ( ) { # Default facts $fqdn = $facts['networking']['fqdn'] + $hostname = $facts['networking']['hostname'] $domain = $facts['networking']['domain'] $os_name = $facts['os']['name'] $os_release = $facts['os']['release']['major'] diff --git a/manifests/server/service.pp b/manifests/server/service.pp index 374cc0b..3b702b5 100644 --- a/manifests/server/service.pp +++ b/manifests/server/service.pp @@ -25,5 +25,179 @@ class confdroid_nagios::server::service ( hasstatus => true, require => Exec['ng_restart_httpd'], } + + @@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'] } + + } }