[Nagios-Plugin] check_threshold to check multiple values at once
Ton Voon
tonvoon at users.sourceforge.net
Fri Dec 23 10:15:23 CET 2011
Module: Nagios-Plugin
Branch: master
Commit: cce4fccf608b3e4accf7cbf2f11da23b3d627f15
Author: Ton Voon <tonvoon at gmail.com>
Date: Thu Dec 22 11:56:08 2011 -0500
URL: http://nagiosplug.git.sf.net/git/gitweb.cgi?p=nagiosplug/Nagios-Plugin;a=commit;h=cce4fcc
check_threshold to check multiple values at once
---
Changes | 3 +++
lib/Nagios/Plugin.pm | 5 ++++-
lib/Nagios/Plugin/Threshold.pm | 13 +++++++++----
t/Nagios-Plugin-04.t | 8 +++++++-
4 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/Changes b/Changes
index 29b8fc3..2034b6c 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
Revision history for Perl module Nagios::Plugin.
+0.36 22nd December 2011
+ - Updated check_threshold to allow multiple check values to be checked at once
+
0.35 3rd December 2010
- Fixed test failures with Test::More 0.96 (Slaven Rezic and Peter John Edwards - RT57709)
diff --git a/lib/Nagios/Plugin.pm b/lib/Nagios/Plugin.pm
index d2a5145..8950477 100644
--- a/lib/Nagios/Plugin.pm
+++ b/lib/Nagios/Plugin.pm
@@ -110,7 +110,7 @@ sub check_threshold {
my %args;
- if ( $#_ == 0 && ! ref $_[0]) { # one positional param
+ if ( $#_ == 0 && (! ref $_[0] || ref $_[0] eq "ARRAY" )) { # one positional param
%args = (check => shift);
}
else {
@@ -509,6 +509,9 @@ WARNING constant. The thresholds may be:
3. implicitly set by command-line parameters -w, -c, --critical or
--warning, if you have run C<< $plugin->getopts() >>.
+You can specify $value as an array of values and each will be checked against
+the thresholds.
+
The return value is ready to pass to C <nagios_exit>, e . g .,
$p->nagios_exit(
diff --git a/lib/Nagios/Plugin/Threshold.pm b/lib/Nagios/Plugin/Threshold.pm
index 73fce53..95a089b 100644
--- a/lib/Nagios/Plugin/Threshold.pm
+++ b/lib/Nagios/Plugin/Threshold.pm
@@ -16,11 +16,16 @@ sub get_status
{
my ($self, $value) = @_;
- if ($self->critical->is_set) {
- return CRITICAL if $self->critical->check_range($value);
+ $value = [ $value ] if (ref $value eq "");
+ foreach my $v (@$value) {
+ if ($self->critical->is_set) {
+ return CRITICAL if $self->critical->check_range($v);
+ }
}
- if ($self->warning->is_set) {
- return WARNING if $self->warning->check_range($value);
+ foreach my $v (@$value) {
+ if ($self->warning->is_set) {
+ return WARNING if $self->warning->check_range($v);
+ }
}
return OK;
}
diff --git a/t/Nagios-Plugin-04.t b/t/Nagios-Plugin-04.t
index d88ad73..e5eb3ab 100644
--- a/t/Nagios-Plugin-04.t
+++ b/t/Nagios-Plugin-04.t
@@ -3,7 +3,7 @@
use strict;
#use Test::More 'no_plan';
-use Test::More tests=>26;
+use Test::More tests=>30;
BEGIN { use_ok('Nagios::Plugin') };
use Nagios::Plugin::Functions;
@@ -52,6 +52,12 @@ is $p->check_threshold(6), WARNING, "check_threshold WARNING";
is $p->check_threshold(11), CRITICAL, "check_threshold CRITICAL";
is $p->check_threshold(check=>11), CRITICAL, "check_threshold CRITICAL with hash param";
+# Check that arrays allowed
+is $p->check_threshold([2,1]), OK, "check_threshold OK when called implicitly";
+is $p->check_threshold([6,2]), WARNING, "check_threshold WARNING";
+is $p->check_threshold([1,2,6,11]), CRITICAL, "check_threshold CRITICAL";
+is $p->check_threshold(check=>[1,2,6,11]), CRITICAL, "check_threshold CRITICAL with hash param";
+
# thresholds set explicitly
is $p->check_threshold(
check => 2,
More information about the Commits
mailing list