From: Greg Sabino Mullane
Date: Tue, 14 Oct 2008 19:38:47 +0000 (-0400)
Subject: Do the right thing when 'sequence' called with multiple databases.
X-Git-Tag: 2.9.0~223
X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=23dc59723fc7a81fa2c3d4fbcd79393853e8c9a0;p=check_postgres.git
Do the right thing when 'sequence' called with multiple databases.
Handle 'target' argument to run_command cleaner.
Bump to version 2.3.7
---
diff --git a/check_postgres.pl b/check_postgres.pl
index 11ff3b6eb..4cc1cd1f6 100755
--- a/check_postgres.pl
+++ b/check_postgres.pl
@@ -28,7 +28,7 @@ $Data::Dumper::Varname = 'POSTGRES';
$Data::Dumper::Indent = 2;
$Data::Dumper::Useqq = 1;
-our $VERSION = '2.3.6';
+our $VERSION = '2.3.7';
use vars qw/ %opt $PSQL $res $COM $SQL $db /;
@@ -824,7 +824,12 @@ sub run_command {
## If we were passed in a target, use that and move on
if (exists $arg->{target}) {
- push @target, $arg->{target};
+ ## Make a copy, in case we are passed in a ref
+ my $newtarget;
+ for my $key (keys %$conn) {
+ $newtarget->{$key} = exists $arg->{target}{$key} ? $arg->{target}{$key} : $conn->{$key};
+ }
+ push @target, $newtarget;
last GROUP;
}
@@ -3506,13 +3511,14 @@ sub check_sequence {
my (@crit,@warn,@ok);
my $maxp = 0;
my %seqinfo;
+ my $multidb = @{$info->{db}} > 1 ? "$db->{dbname}." : '';
SLURP: while ($db->{slurp} =~ /\s*(.+?)\s+\| (.+?)\s+\| (.+?)\s*$/gsm) {
my ($schema, $seq, $seqname) = ($1,$2,$3);
next if skip_item($seq);
$SQL = q{SELECT last_value, slots, used, ROUND(used/slots*100) AS percent, slots - used AS numleft FROM }.
q{ (SELECT last_value, CEIL((max_value-min_value+1)/increment_by::NUMERIC) AS slots,}.
qq{ CEIL((last_value-min_value+1)/increment_by::NUMERIC) AS used FROM $seqname) foo};
- my $seqinfo = run_command($SQL);
+ my $seqinfo = run_command($SQL, { target => $db });
if (!defined $seqinfo->{db}[0] or $seqinfo->{db}[0]{slurp} !~ /(\d+)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)/) {
ndie "Could not determine information about sequence $seqname";
}
@@ -3524,7 +3530,7 @@ sub check_sequence {
}
next if $MRTG;
- $db->{perf} .= " $seqname=$percent|$slots|$used|$left";
+ $db->{perf} .= " $multidb$seqname=$percent|$slots|$used|$left";
if (length $critical and $percent >= $c) {
push @crit => $msg;
}
@@ -3562,7 +3568,7 @@ sub check_sequence {
=head1 NAME
B - a Postgres monitoring script for Nagios, MRTG, and others
-This documents describes check_postgres.pl version 2.3.6
+This documents describes check_postgres.pl version 2.3.7
=head1 SYNOPSIS
@@ -4703,6 +4709,10 @@ Items not specifically attributed are by Greg Sabino Mullane.
=over 4
+=item B
+
+ Allow multiple databases in 'sequence' action. Reported by Christoph Zwerschke.
+
=item B
Add missing $schema to check_fsm_pages. (Robert Treat)
diff --git a/check_postgres.pl.asc b/check_postgres.pl.asc
index 6bb816f30..5fb50d9eb 100644
--- a/check_postgres.pl.asc
+++ b/check_postgres.pl.asc
@@ -1,6 +1,6 @@
-----BEGIN PGP SIGNATURE-----
-iEUEABEDAAYFAkjz8gUACgkQvJuQZxSWSsiVkQCYnZDHcq4IIrsgEx+pOPj7Vg96
-ugCbB61rFwYdg9At4cECcttnPHDA0R8=
-=VnYF
+iEYEABEDAAYFAkj09TsACgkQvJuQZxSWSsjFFACg+bqTQFUag8Xix5Fbrpw1Jq06
+DVEAoJ6GdP0VvIKKbOj5VeWZVMkmhoBn
+=B/UA
-----END PGP SIGNATURE-----
diff --git a/check_postgres.pl.html b/check_postgres.pl.html
index 3a818e913..013c2533a 100644
--- a/check_postgres.pl.html
+++ b/check_postgres.pl.html
@@ -90,7 +90,7 @@
check_postgres.pl - a Postgres monitoring script for Nagios, MRTG, and others
-This documents describes check_postgres.pl version 2.3.6
+This documents describes check_postgres.pl version 2.3.7
@@ -1119,6 +1119,12 @@ feature requests, and commit notices, send email to HISTORY
Items not specifically attributed are by Greg Sabino Mullane.
+- Version 2.3.7
+
+-
+
+ Allow multiple databases in 'sequence' action. Reported by Christoph Zwerschke.
+
- Version 2.3.6
-
diff --git a/index.html b/index.html
index a5e6fa99d..376ead040 100644
--- a/index.html
+++ b/index.html
@@ -21,14 +21,14 @@ h1 {
check_postgres.pl
-check_postgres.pl is a script for checking the state of one or more Postgres databases and reporting back in a Nagios-friendly manner. It was developed by Greg Sabino Mullane of End Point Corporation and is BSD-licensed. The latest version is 2.3.6, and was released on October 13, 2008.
+check_postgres.pl is a script for checking the state of one or more Postgres databases and reporting back in a Nagios-friendly manner. It was developed by Greg Sabino Mullane of End Point Corporation and is BSD-licensed. The latest version is 2.3.7, and was released on October 14, 2008.
The latest development version can be downloaded via git: