121 lines
3.4 KiB
Puppet
121 lines
3.4 KiB
Puppet
# define monitor::plugin
|
|
#
|
|
# A monitor define to manage NAGIOS plugins
|
|
# It can be used to define monitoring via whatever Nagios plugin
|
|
# This define requires Example42 nrpe module
|
|
#
|
|
# == Parameters
|
|
#
|
|
# [*plugin*]
|
|
# Name of the Nagios plugin. As it appears in the Nagios plugins path
|
|
# (do not specify the full path, it's autocalculated for your OS)
|
|
# Required argument
|
|
#
|
|
# [*tool*]
|
|
# The monitoring tool to use. Currently supported: nagios, puppi
|
|
# To add a monitoring tool (that supports the usage of Nagios plugins)
|
|
# just add the relevant resources (local or exported) in the code
|
|
#
|
|
# [*arguments*]
|
|
# The arguments to pass to the plugin.
|
|
#
|
|
# [*checksource*]
|
|
# From where the check is executed:
|
|
# local = Check is executed via Nrpe
|
|
# remote = Check is executed from the Nagios server
|
|
#
|
|
# [*template*]
|
|
# Template to use to manage configuration. Path is as used in
|
|
# content => template ( $template )
|
|
# Content actually depends on the monitoring tool used
|
|
#
|
|
# [*enable*]
|
|
# Use this to enable or disable the check. Default: true
|
|
#
|
|
# == Example
|
|
#
|
|
# monitor::plugin { "Fsi_Import_Errors":
|
|
# plugin => 'check_log' ,
|
|
# arguments => '-F /var/log/app.log -O /var/tmp/app.log -q error',
|
|
# tool => [ 'puppi' , 'nagios' ],
|
|
# }
|
|
#
|
|
define monitor::plugin (
|
|
$plugin,
|
|
$tool,
|
|
$arguments = '',
|
|
$checksource = 'local', # Note: Remote checksource might not work properly
|
|
$template = '',
|
|
$enable = true
|
|
) {
|
|
|
|
$bool_enable = any2bool($enable)
|
|
$safe_name = regsubst($name, '(/| )', '_', 'G')
|
|
$ensure = $bool_enable ? {
|
|
false => 'absent',
|
|
true => 'present',
|
|
}
|
|
|
|
# Manage template
|
|
$real_template = $template ? {
|
|
'' => undef,
|
|
default => $template,
|
|
}
|
|
|
|
$check_command = $checksource ? {
|
|
local => "check_nrpe!${safe_name}!blank",
|
|
remote => "${plugin}!${arguments}",
|
|
}
|
|
|
|
if ($tool =~ /nagios/) {
|
|
nagios::service { $safe_name:
|
|
ensure => $ensure,
|
|
template => $real_template,
|
|
check_command => $check_command,
|
|
}
|
|
|
|
# If plugin check is via nrpe, we create a local configuration entry
|
|
if $checksource == local {
|
|
file { "nrpe-check_${safe_name}":
|
|
ensure => $ensure,
|
|
path => "${nrpe::config_dir}/check_${safe_name}.cfg",
|
|
require => Package['nrpe'],
|
|
notify => $nrpe::manage_service_autorestart,
|
|
replace => $nrpe::manage_file_replace,
|
|
audit => $nrpe::manage_audit,
|
|
content => "command[${safe_name}]=${nrpe::pluginsdir}/${plugin} ${arguments}\n",
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($tool =~ /icinga/) {
|
|
icinga::service { $safe_name:
|
|
ensure => $ensure,
|
|
template => $real_template,
|
|
check_command => $check_command,
|
|
}
|
|
|
|
# If plugin check is via nrpe, we create a local configuration entry
|
|
if $checksource == local {
|
|
file { "nrpe-check_${safe_name}":
|
|
ensure => $ensure,
|
|
path => "${nrpe::config_dir}/check_${safe_name}.cfg",
|
|
require => Package['nrpe'],
|
|
notify => $nrpe::manage_service_autorestart,
|
|
replace => $nrpe::manage_file_replace,
|
|
audit => $nrpe::manage_audit,
|
|
content => "command[${safe_name}]=${nrpe::pluginsdir}/${plugin} ${arguments}\n",
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($tool =~ /puppi/) {
|
|
puppi::check { $safe_name:
|
|
enable => $bool_enable,
|
|
hostwide => 'yes',
|
|
command => "${plugin} ${arguments}",
|
|
}
|
|
}
|
|
|
|
}
|