summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--files/configs/Debian/nagios.cfg2
-rwxr-xr-xfiles/plugins/check_openvpn_server.pl109
-rw-r--r--manifests/debian.pp6
-rw-r--r--manifests/nrpe/debian.pp6
-rw-r--r--manifests/pnp4nagios/popup.pp27
-rw-r--r--manifests/service/mysql.pp2
-rw-r--r--manifests/stored_config.pp19
-rw-r--r--templates/nrpe/nrpe_command.erb2
8 files changed, 157 insertions, 16 deletions
diff --git a/files/configs/Debian/nagios.cfg b/files/configs/Debian/nagios.cfg
index 1dcef4a..291a474 100644
--- a/files/configs/Debian/nagios.cfg
+++ b/files/configs/Debian/nagios.cfg
@@ -20,7 +20,7 @@ log_file=/var/log/nagios3/nagios.log
# host groups, contacts, contact groups, services, etc.
# You can split your object definitions across several config files
# if you wish (as shown below), or keep them all in a single config file.
-cfg_file=/etc/nagios3/commands.cfg
+#cfg_file=/etc/nagios3/commands.cfg
# Puppet-managed configuration files
cfg_file=/etc/nagios3/nagios_templates.cfg
diff --git a/files/plugins/check_openvpn_server.pl b/files/plugins/check_openvpn_server.pl
new file mode 100755
index 0000000..b74ace8
--- /dev/null
+++ b/files/plugins/check_openvpn_server.pl
@@ -0,0 +1,109 @@
+#!/usr/bin/perl
+#
+# Filaname: check_openvpn
+# Created: 2012-06-15
+# Website: http://blog.kernelpicnic.net
+#
+# Description:
+# This script is for verifying the status of an OpenVPN daemon. It has been
+# written to integrate directly with Nagios / Opsview.
+#
+# Usage:
+# check_openvpn [OPTIONS]...
+#
+# -H, --hostname Host to check
+# -p, --port Port number to check
+# -h, --help Display help.
+#
+#############################################################################
+
+# Custom library path for Nagis modules.
+use lib qw ( /usr/local/nagios/perl/lib );
+
+# Enforce sanity.
+use strict;
+use warnings;
+
+# Required modules.
+use Getopt::Long qw(:config no_ignore_case);
+use Nagios::Plugin;
+use IO::Socket;
+
+# Define defaults.
+my $help = 0;
+my $timeout = 5;
+
+# Ensure required variables are set.
+my($hostname, $port);
+
+my $options = GetOptions(
+ "hostname|H=s" => \$hostname,
+ "timeout|t=s" => \$timeout,
+ "port|p=s" => \$port,
+ "help|h" => \$help,
+);
+
+# Check if help has been requested.
+if($help || !$hostname || !$port) {
+
+ printf("\n");
+ printf("Usage: check_openvpn [OPTIONS]...\n\n");
+ printf(" -H, --hostname Host to check\n");
+ printf(" -p, --port Port number to check\n");
+ printf(" -h, --help This help page\n");
+ printf(" -t, --timeout Socket timeout\n");
+ printf("\n");
+
+ exit(-1);
+
+}
+
+# Setup a new Nagios::Plugin object.
+my $nagios = Nagios::Plugin->new();
+
+# Define the check string to send to the OpenVPN server - as binary due
+# to non-printable characters.
+my $check_string = "001110000011001010010010011011101000000100010001110"
+ ."100110110101010110011000000000000000000000000000000"
+ ."0000000000";
+
+# Attempt to setup a socket to the specified host.
+my $host_sock = IO::Socket::INET->new(
+ Proto => 'udp',
+ PeerAddr => $hostname,
+ PeerPort => $port,
+);
+
+# Ensure we have a socket.
+if(!$host_sock) {
+ $nagios->nagios_exit(UNKNOWN, "Unable to bind socket");
+}
+
+# Fire off the check request.
+$host_sock->send(pack("B*", $check_string));
+
+# Wait for $timeout for response for a response, otherwise, fail.
+my $response;
+
+eval {
+
+ # Define how to handle ALARM.
+ local $SIG{ALRM} = sub {
+ $nagios->nagios_exit(CRITICAL, "No response received");
+ };
+
+ # Set the alarm for the given timeout value.
+ alarm($timeout);
+
+ # Check for response.
+ $host_sock->recv($response, 1)
+ or $nagios->nagios_exit(CRITICAL, "No response received");
+
+ # Alright, response received, cancel alarm.
+ alarm(0);
+ 1;
+
+};
+
+# Reply received, return okay.
+$nagios->nagios_exit(OK, "Response received from host");
diff --git a/manifests/debian.pp b/manifests/debian.pp
index 9b1f7e7..b5d6974 100644
--- a/manifests/debian.pp
+++ b/manifests/debian.pp
@@ -21,11 +21,13 @@ class nagios::debian inherits nagios::base {
notify => Service['nagios'],
owner => root,
group => root,
- mode => '0644';
+ mode => '0644',
+ require => Package['nagios'];
"${nagios::defaults::vars::int_cfgdir}/stylesheets":
ensure => directory,
purge => false,
- recurse => true;
+ recurse => true,
+ require => Package['nagios'];
}
if $nagios::allow_external_cmd {
diff --git a/manifests/nrpe/debian.pp b/manifests/nrpe/debian.pp
new file mode 100644
index 0000000..fcaf851
--- /dev/null
+++ b/manifests/nrpe/debian.pp
@@ -0,0 +1,6 @@
+class nagios::nrpe::debian inherits nagios::nrpe::base {
+ include nagios::nrpe::linux
+ Service['nagios-nrpe-server'] {
+ hasstatus => false,
+ }
+}
diff --git a/manifests/pnp4nagios/popup.pp b/manifests/pnp4nagios/popup.pp
index 0dc04b0..91136cc 100644
--- a/manifests/pnp4nagios/popup.pp
+++ b/manifests/pnp4nagios/popup.pp
@@ -1,19 +1,24 @@
-class nagios::pnp4nagios::popup inherits nagios::pnp4nagios {
+class nagios::pnp4nagios::popup inherits nagios::pnp4nagios {
File['pnp4nagios-templates.cfg']{
- source => [ 'puppet:///modules/site_nagios/pnp4nagios/pnp4nagios-popup-templates.cfg',
- 'puppet:///modules/nagios/pnp4nagios/pnp4nagios-popup-templates.cfg' ],
+ source => [
+ 'puppet:///modules/site-nagios/pnp4nagios/pnp4nagios-popup-templates.cfg',
+ 'puppet:///modules/nagios/pnp4nagios/pnp4nagios-popup-templates.cfg' ],
}
file { '/usr/share/nagios3/htdocs/ssi':
- ensure => directory }
+ ensure => directory,
+ require => Package['nagios'],
+ }
file { 'status-header.ssi':
- path => '/usr/share/nagios3/htdocs/ssi/status-header.ssi',
- source => [ 'puppet:///modules/site_nagios/pnp4nagios/status-header.ssi',
- 'puppet:///modules/nagios/pnp4nagios/status-header.ssi' ],
- mode => '0644',
- owner => root,
- group => root,
- notify => Service['nagios'],
+ path => '/usr/share/nagios3/htdocs/ssi/status-header.ssi',
+ source => [
+ 'puppet:///modules/site-nagios/pnp4nagios/status-header.ssi',
+ 'puppet:///modules/nagios/pnp4nagios/status-header.ssi'],
+ mode => '0644',
+ owner => root,
+ group => root,
+ notify => Service['nagios'],
+ require => Package['nagios'],
}
}
diff --git a/manifests/service/mysql.pp b/manifests/service/mysql.pp
index 2c74717..9559b17 100644
--- a/manifests/service/mysql.pp
+++ b/manifests/service/mysql.pp
@@ -27,7 +27,7 @@ define nagios::service::mysql(
if $check_warning != undef {
$real_check_warning = "!--warning $check_warning"
}
-
+
if $check_critical != undef {
$real_check_critical = "!--critical $check_critical"
}
diff --git a/manifests/stored_config.pp b/manifests/stored_config.pp
new file mode 100644
index 0000000..5afda04
--- /dev/null
+++ b/manifests/stored_config.pp
@@ -0,0 +1,19 @@
+class nagios::stored_config {
+ # collect exported resources
+
+ Nagios_command <<||>>
+ Nagios_contactgroup <<||>>
+ Nagios_contact <<||>>
+ Nagios_hostdependency <<||>>
+ Nagios_hostescalation <<||>>
+ Nagios_hostextinfo <<||>>
+ Nagios_hostgroup <<||>>
+ Nagios_host <<||>>
+ Nagios_servicedependency <<||>>
+ Nagios_serviceescalation <<||>>
+ Nagios_servicegroup <<||>>
+ Nagios_serviceextinfo <<||>>
+ Nagios_service <<||>>
+ Nagios_timeperiod <<||>>
+
+}
diff --git a/templates/nrpe/nrpe_command.erb b/templates/nrpe/nrpe_command.erb
index 8b50f60..99f4601 100644
--- a/templates/nrpe/nrpe_command.erb
+++ b/templates/nrpe/nrpe_command.erb
@@ -1,2 +1,2 @@
# generated by puppet, do not edit
-command[<%= @name -%>]=<%= @command_line %>
+command[<%= name -%>]=<%= command_line %>