Modified: trunk/opsview-core/nagios-plugins/check_snmp_weblogic_jdbcconns
===================================================================
--- trunk/opsview-core/nagios-plugins/check_snmp_weblogic_jdbcconns 2013-02-12 10:12:33 UTC (rev 11405)
+++ trunk/opsview-core/nagios-plugins/check_snmp_weblogic_jdbcconns 2013-02-12 10:13:03 UTC (rev 11406)
@@ -22,126 +22,79 @@
#
use strict;
-use lib qw ( /usr/local/nagios/perl/lib );
+use warnings;
+
+use FindBin qw($Bin);
+use lib "/opt/opsview/perl/lib/perl5", "$Bin/../lib";
use Net::SNMP;
-use DBI;
-use Getopt::Std;
+use Opsview::NagiosPlugin::SNMP;
-# About us
-my $script = "check_snmp_weblogic_jdbcconns";
-my $script_version = "1.0";
-my $script_description =
- "Checks the number of active connections in a JDBC connection pool, or the number of waiters.";
+my $np = Opsview::NagiosPlugin::SNMP->new(
+ usage => "Usage: %s",
+ shortname => "check_snmp_weblogic_jdbcconns",
+ version => "1.1",
+ blurb =>
+ "Checks the number of active connections in a JDBC connection pool, or the number of waiters.",
+ snmp => { "snmp-version" => 1, },
+);
-my $hostname;
+$np->add_arg(
+ spec => "warning|w=s",
+ help => qq{-w, --warning=INTEGER
+ Warning threshold},
+ required => 1,
+);
-# Performance data
-my $perfdata = "";
+$np->add_arg(
+ spec => "critical|c=s",
+ help => qq{-c, --critical=INTEGER
+ Critical threshold},
+ required => 1,
+);
-# SNMP variables
-my $oid_testoid =
- ".1.3.6.1.4.1.140.625.10.1.0"; # Used to check whether SNMP is responding
-my $oid_jdbc_poolnames =
- ".1.3.6.1.4.1.140.625.190.1.15"; # get_next here to find the value
-my $oid_jdbc_conns =
- ".1.3.6.1.4.1.140.625.190.1.25"; # Number of active connections
-my $oid_jdbc_waiters = ".1.3.6.1.4.1.140.625.190.1.30"; # Number waiting
-my $count = 0; # count of servers/connections
-my $community = "public"; # Default community
-my $pool_name = ""; # pool name to check connections for
-my $timeout = 2; # SNMP timeout
-my $retmsg = "";
-my $version = "1";
-my $warning = 0;
-my $critical = 0;
-my $check_waiting = 0;
-my $port = 161;
-our ( $s, $e );
+$np->add_arg(
+ spec => "server|s=s",
+ help => qq{-s, --server=INTEGER
+ Weblogic server name},
+ required => 1,
+);
-# Command line arguments
-our ( $opt_h, $opt_H, $opt_C, $opt_w, $opt_c, $opt_s, $opt_P, $opt_W, $opt_p );
-getopts( "hH:C:w:c:s:p:W" );
-if ($opt_h) {
- usage();
- exit 0;
-}
-if ($opt_H) {
- $hostname = $opt_H;
-}
-else {
- print "No hostname specified\n";
- usage();
- exit 3;
-}
-if ($opt_C) {
- $community = $opt_C;
-}
-if ( !defined($opt_w) or !defined($opt_c) ) {
- print "Must specify both warning and critical values!\n\n";
- usage();
- exit 3;
-}
-elsif ( $opt_w > $opt_c ) {
- print "Warning value must not be greater than critical value\n\n";
- usage();
- exit 3;
-}
-if ($opt_s) {
- $community = "$community\@$opt_s";
-}
-else {
- print "Must specify server name with -s\n";
- usage();
- exit 3;
-}
-if ($opt_P) {
- $pool_name = $opt_P;
-}
-else {
- print "Must specify pool name with -P\n";
- usage();
- exit 3;
-}
-if ($opt_W) {
- $check_waiting = 1;
-}
-if ($opt_p) {
- $port = $opt_p;
-}
+$np->add_arg(
+ spec => "pool|P=s",
+ help => qq{-P, --pool=INTEGER
+ Pool name to check connections for},
+ required => 1,
+);
-# Must have opt_w and opt_c
-$warning = $opt_w;
-$critical = $opt_c;
+$np->add_arg(
+ spec => "waiting|W=s",
+ help => qq{-W, --waiting=INTEGER
+ Check waiting connections not current capacity},
+);
-sub usage {
- print <<EOF
---------------------------------------------------------------------
+$np->getopts;
-$script $script_version
+my $warning = $np->opts->warning;
+my $critical = $np->opts->critical;
-$script_description
+my $pool_name = $np->opts->pool;
+my $check_waiting = 0;
+if ( $np->opts->waiting ) {
+ $check_waiting = 1;
+}
-Usage: $script -H <hostname> -p <port> -C <community> -w <warning> -c <critical>
- -s <server_name> -P <pool_name>
+my $s = $np->snmp(
+ { rocommunity => $np->opts->rocommunity . "\@" . $np->opts->server }
+);
-Options: -H Hostname or IP address
- -p Port (default: 161)
- -C Community (default is public)
- -w Warning threshold
- -c Critical threshold
- -s Weblogic server name
- -p Pool name to check connections for
+my $oid_testoid = ".1.3.6.1.4.1.140.625.10.1.0";
+my $oid_jdbc_poolnames = ".1.3.6.1.4.1.140.625.190.1.15";
+my $oid_jdbc_conns = ".1.3.6.1.4.1.140.625.190.1.25";
+my $oid_jdbc_waiters = ".1.3.6.1.4.1.140.625.190.1.30";
+my $count = 0;
+my $perfdata = "";
+my $retmsg = "";
---------------------------------------------------------------------
-Copyright (C) 2003-2012 Opsview Limited. All rights reserved
-
-This program is free software; you can redistribute it or modify
-it under the terms of the GNU General Public License
-------------------------------------------------------------------
-EOF
-
-}
-
# Call this when you know you'll get a single value back
sub get_oid_value {
our ( $oid, $result, $status, $returnstring );
@@ -172,30 +125,9 @@
return $result;
}
-# Create the SNMP session
-( $s, $e ) = Net::SNMP->session(
- -community => $community,
- -hostname => $hostname,
- -version => $version,
- -timeout => $timeout,
- -port => $port,
-);
-
if ( !defined( $s->get_request($oid_testoid) ) ) {
-
- # If we can't connect using SNMPv1 lets try as SNMPv2c
- $s->close();
- sleep 0.5;
- $version = "2c";
- ( $s, $e ) = Net::SNMP->session(
- -community => $community,
- -hostname => $hostname,
- -version => $version,
- -timeout => $timeout,
- -port => $port,
- );
if ( !defined( $s->get_request($oid_testoid) ) ) {
- print "Agent not responding, tried SNMP v1 and v2\n";
+ print "Agent not responding\n";
exit 1;
}
}