Nagios and NRPE¶
This module contains two classes, one for an NRPE client (set up for Debian and FreeBSD), and one for the Nagios server (Debian):
modules/nagios/manifest/init.pp:
class nagios-nrpe {
case $operatingsystem {
"freebsd": {
$nrpeservice = "nrpe2"
$nrpepattern = "nrpe2"
$nrpepackage = "nrpe2"
$nrpedir = "/usr/local/etc"
$nagiosuser = "root"
$nagiosgroup = "wheel"
$pluginsdir = "/usr/local/libexec/nagios"
$sudopath = "/usr/local/bin"
}
default: {
$nrpeservice = "nagios-nrpe-server"
$nrpepattern = "nrpe"
$nrpepackage = "nagios-nrpe-server"
$nrpedir = "/etc/nagios"
$nagiosuser = "nagios"
$nagiosgroup = "nagios"
$pluginsdir = "/usr/lib/nagios/plugins"
$sudopath = "/usr/bin"
}
}
file { $pluginsdir:
mode => "755",
require => Package["nagios-plugins"],
source => "puppet:///nagios/client-plugins/",
purge => false,
recurse => true,
}
file { "$nrpedir/nrpe.cfg":
mode => "644",
owner => $nagiosuser,
group => $nagiosgroup,
content => template("nagios/nrpe.cfg"),
require => Package[$nrpepackage],
}
package {
$nrpepackage: ensure => present;
"nagios-plugins": ensure => present;
}
service { "$nrpeservice":
ensure => running,
enable => true,
pattern => "$nrpepattern",
subscribe => File["$nrpedir/nrpe.cfg"];
}
}
class nagios-server {
file { "/var/log/nagios2/rw":
ensure => directory,
owner => "nagios",
group => "www-data",
require => [ Package["nagios2"], Package["apache2"] ],
mode => "2770",
}
file { "/usr/lib/nagios/plugins/check_dhcp":
mode => "4755",
}
file { "/etc/nagios2":
mode => "644",
source => "puppet:///nagios/nagios",
recurse => true,
purge => true,
force => true,
ignore => [ ".svn", "nrpe.cfg" ],
require => Package["nagios2"],
}
file { "/usr/share/nagios2/htdocs/images/logos":
mode => "644",
source => "puppet:///nagios/logos",
recurse => true,
purge => false,
require => Package["nagios2"],
}
file { "/etc/default/nagios2":
mode => "644",
source => "puppet:///nagios/default.$hostname",
require => Package["nagios2"],
}
user { "www-data":
ensure => present,
groups => "nagios",
membership => minimum,
require => [ Package["nagios2"], Package["apache2"] ],
}
package {
"nagios-nrpe-plugin": ensure => present;
"nagios2": ensure => present;
"nagios2-common": ensure => present;
"nagios2-doc": ensure => present;
}
service { "nagios2":
ensure => running,
enable => true,
hasrestart => true,
subscribe => [ File["/etc/nagios2"], File["/etc/default/nagios2"] ],
}
}
Our nrpe.cfg template looks like this:
modules/nagios/templates/nrpe.cfg:
##############################################################################
# This file is mananged by puppet. Do NOT edit on the server, your changes #
# will be blown away on the next puppet run. #
##############################################################################
server_port=5666
allowed_hosts=10.10.10.10
nrpe_user=<%= nagiosuser %>
nrpe_group=<%= nagiosgroup %>
dont_blame_nrpe=0
debug=0
command_timeout=600
command[check_dummy]=<%= pluginsdir %>/check_dummy 0
command[check_load]=<%= pluginsdir %>/check_load -w 15,20,25 -c 30,35,40
command[check_zombie_procs]=<%= sudopath %>/sudo <%= pluginsdir %>/check_procs -w 100 -c 150 -s Z -t 60
command[check_total_procs]=<%= sudopath %>/sudo <%= pluginsdir %>/check_procs -N cronolog -w 1500 -c 2000 -t 60
command[check_postfix]=<%= pluginsdir %>/check_mailq -w 200 -c 300 -M postfix
Please send comments and bug reports for this recipe to Martha Greenberg