summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTon Voon <tonvoon@users.sourceforge.net>2006-06-15 08:38:18 +0000
committerTon Voon <tonvoon@users.sourceforge.net>2006-06-15 08:38:18 +0000
commite736a3c2b0a62707f12cf66fbb65ef23eeb01dd6 (patch)
treef8e4dd361b74480752ff7dda173f1fd7ced1868b
parent3e4062f33b9d0ab7c02053400281eb9a26d54003 (diff)
downloadmonitoring-plugin-perl-e736a3c2b0a62707f12cf66fbb65ef23eeb01dd6.tar.gz
Added rrdlabel method. Fixed parse_perfstring if value=0
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/Nagios-Plugin/trunk@1428 f882894a-f735-0410-b71e-b25c423dba1c
-rw-r--r--Changes5
-rw-r--r--MANIFEST1
-rw-r--r--lib/Nagios/Plugin.pm2
-rw-r--r--lib/Nagios/Plugin/Performance.pm24
-rw-r--r--t/Nagios-Plugin-Performance.t9
5 files changed, 39 insertions, 2 deletions
diff --git a/Changes b/Changes
index ae1498b..a86a117 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,10 @@
1Revision history for Perl module Nagios::Plugin. 1Revision history for Perl module Nagios::Plugin.
2 2
30.12 ??
4 - rrdlabel method available to get a performance label,
5 converted to something rrd can use
6 - fixes to parse_perfstring routine if values are 0
7
30.11 14th June 2006 80.11 14th June 2006
4 - Interface changed for parse_perfstring, returning empty 9 - Interface changed for parse_perfstring, returning empty
5 array if not parseable 10 array if not parseable
diff --git a/MANIFEST b/MANIFEST
index 336daab..f9c8b03 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -11,3 +11,4 @@ lib/Nagios/Plugin/Performance.pm
11lib/Nagios/Plugin/Range.pm 11lib/Nagios/Plugin/Range.pm
12lib/Nagios/Plugin/Threshold.pm 12lib/Nagios/Plugin/Threshold.pm
13lib/Nagios/Plugin/Base.pm 13lib/Nagios/Plugin/Base.pm
14META.yml Module meta-data (added by MakeMaker)
diff --git a/lib/Nagios/Plugin.pm b/lib/Nagios/Plugin.pm
index ed2e6f5..2acc6ea 100644
--- a/lib/Nagios/Plugin.pm
+++ b/lib/Nagios/Plugin.pm
@@ -23,7 +23,7 @@ use Exporter;
23our @ISA = qw(Exporter Nagios::__::Plugin); 23our @ISA = qw(Exporter Nagios::__::Plugin);
24our @EXPORT_OK = qw(%ERRORS); 24our @EXPORT_OK = qw(%ERRORS);
25 25
26our $VERSION = '0.11'; 26our $VERSION = '0.12';
27 27
28sub add_perfdata { 28sub add_perfdata {
29 my ($self, %args) = @_; 29 my ($self, %args) = @_;
diff --git a/lib/Nagios/Plugin/Performance.pm b/lib/Nagios/Plugin/Performance.pm
index 82c1a3b..45109ae 100644
--- a/lib/Nagios/Plugin/Performance.pm
+++ b/lib/Nagios/Plugin/Performance.pm
@@ -28,7 +28,7 @@ sub _parse {
28 my $string = shift; 28 my $string = shift;
29 my $p = $class->new; 29 my $p = $class->new;
30 $string =~ s/^([^=]+)=([\d\.]+)(\w*);?([\d\.]+)?;?([\d\.]+)?;?([\d\.]+)?;?([\d\.]+)?\s*//; 30 $string =~ s/^([^=]+)=([\d\.]+)(\w*);?([\d\.]+)?;?([\d\.]+)?;?([\d\.]+)?;?([\d\.]+)?\s*//;
31 return undef unless ($1 && $2); 31 return undef unless ((defined $1 && $1 ne "") && (defined $2 && $2 ne ""));
32 $p->label($1); 32 $p->label($1);
33 $p->value($2+0); 33 $p->value($2+0);
34 $p->uom($3); 34 $p->uom($3);
@@ -50,6 +50,21 @@ sub parse_perfstring {
50 return @perfs; 50 return @perfs;
51} 51}
52 52
53sub rrdlabel {
54 my $self = shift;
55 my $name = $self->label;
56 if ($name eq "/") {
57 $name = "root";
58 # If filesystem name, remove initial / and convert subsequent "/" to "_"
59 } elsif ($name =~ s/^\///) {
60 $name =~ s/\//_/g;
61 }
62 # Convert bad chars
63 $name =~ s/\W/_/g;
64 # Shorten
65 return substr( $name, 0, 19 );
66}
67
531; 681;
54__END__ 69__END__
55 70
@@ -94,6 +109,13 @@ If there is an error parsing the string, an empty array is returned.
94 109
95These all return scalars. min and max are not well supported yet. 110These all return scalars. min and max are not well supported yet.
96 111
112=item rrdlabel
113
114Returns a label that can be used for the dataset name of an RRD, ie, between 1-19
115characters long with characters [a-zA-Z0-9_].
116
117There is no guarantee that multiple N:P:Performance objects will have unique rrdlabels.
118
97=item threshold 119=item threshold
98 120
99This returns a Nagios::Plugin::Threshold object. 121This returns a Nagios::Plugin::Threshold object.
diff --git a/t/Nagios-Plugin-Performance.t b/t/Nagios-Plugin-Performance.t
index a00b2db..aa0ab64 100644
--- a/t/Nagios-Plugin-Performance.t
+++ b/t/Nagios-Plugin-Performance.t
@@ -8,6 +8,7 @@ Nagios::Plugin::Base->exit_on_die(0);
8 8
9my @p = Nagios::Plugin::Performance->parse_perfstring("/=382MB;15264;15269;; /var=218MB;9443;9448"); 9my @p = Nagios::Plugin::Performance->parse_perfstring("/=382MB;15264;15269;; /var=218MB;9443;9448");
10cmp_ok( $p[0]->label, 'eq', "/", "label okay"); 10cmp_ok( $p[0]->label, 'eq', "/", "label okay");
11cmp_ok( $p[0]->rrdlabel, 'eq', "root", "rrd label okay");
11cmp_ok( $p[0]->value, '==', 382, "value okay"); 12cmp_ok( $p[0]->value, '==', 382, "value okay");
12cmp_ok( $p[0]->uom, 'eq', "MB", "uom okay"); 13cmp_ok( $p[0]->uom, 'eq', "MB", "uom okay");
13cmp_ok( $p[0]->threshold->warning->end, "==", 15264, "warn okay"); 14cmp_ok( $p[0]->threshold->warning->end, "==", 15264, "warn okay");
@@ -16,6 +17,7 @@ ok( ! defined $p[0]->min, "min okay");
16ok( ! defined $p[0]->max, "max okay"); 17ok( ! defined $p[0]->max, "max okay");
17 18
18cmp_ok( $p[1]->label, 'eq', "/var", "label okay"); 19cmp_ok( $p[1]->label, 'eq', "/var", "label okay");
20cmp_ok( $p[1]->rrdlabel, 'eq', "var", "rrd label okay");
19cmp_ok( $p[1]->value, '==', 218, "value okay"); 21cmp_ok( $p[1]->value, '==', 218, "value okay");
20cmp_ok( $p[1]->uom, 'eq', "MB", "uom okay"); 22cmp_ok( $p[1]->uom, 'eq', "MB", "uom okay");
21cmp_ok( $p[1]->threshold->warning->end, "==", 9443, "warn okay"); 23cmp_ok( $p[1]->threshold->warning->end, "==", 9443, "warn okay");
@@ -65,3 +67,10 @@ cmp_ok( $p[1]->value, "==", 426, "value okay");
65cmp_ok( $p[1]->uom, "eq", "B", "uom okay"); 67cmp_ok( $p[1]->uom, "eq", "B", "uom okay");
66 ok( ! defined $p[1]->threshold->warning, "warn okay"); 68 ok( ! defined $p[1]->threshold->warning, "warn okay");
67 ok( ! defined $p[1]->threshold->critical, "crit okay"); 69 ok( ! defined $p[1]->threshold->critical, "crit okay");
70
71# RRDlabel testing
72@p = Nagios::Plugin::Performance->parse_perfstring("/home/a-m=0 shared-folder:big=20 12345678901234567890=20");
73cmp_ok( $p[0]->rrdlabel, "eq", "home_a_m", "changing / to _");
74cmp_ok( $p[1]->rrdlabel, "eq", "shared_folder_big", "replacing bad characters");
75cmp_ok( $p[2]->rrdlabel, "eq", "1234567890123456789", "shortening rrd label");
76