git.lirion.de

Of git, get, and gud

summaryrefslogtreecommitdiffstats
path: root/nagios-plugins-contrib-24.20190301~bpo9+1/check_ajp/check_ajp
diff options
context:
space:
mode:
Diffstat (limited to 'nagios-plugins-contrib-24.20190301~bpo9+1/check_ajp/check_ajp')
-rw-r--r--nagios-plugins-contrib-24.20190301~bpo9+1/check_ajp/check_ajp103
1 files changed, 103 insertions, 0 deletions
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_ajp/check_ajp b/nagios-plugins-contrib-24.20190301~bpo9+1/check_ajp/check_ajp
new file mode 100644
index 0000000..68aa243
--- /dev/null
+++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_ajp/check_ajp
@@ -0,0 +1,103 @@
+#!/usr/bin/perl -w
+#
+# History:
+# 2010-11-05 First release (v1)
+#
+# Comment: Please send bug fixes and enhancements to <rmichel@devnu11.net>
+#
+# check_ajp - nagios plugin for jboss monitoring
+# Copyright (C) 2010 Michel Rode <rmichel@devnu11.net>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#
+# Usage: ./check_ajp --app ip.of.the.app [--port 8009 --warn 1 --crit 2 --timeout 5]
+#
+
+use warnings;
+use strict;
+use Getopt::Long;
+use Socket;
+use Time::HiRes 'time';
+
+my $app = '';
+my $port = '8009';
+my $warntime = '1.5';
+my $crittime = '3';
+my $timeout = '10';
+
+my ($iaddr, $paddr, $proto, $sock, $time1, $time2);
+my $pong = 'null';
+
+sub xdie{
+ my $msg = shift;
+ printf STDERR "Usage: check_ajp --app ip.of.the.app [--port 8009 --warn 1 --crit 2 --timeout 5]\n\n";
+ printf STDERR "ERROR: $msg\n";
+ exit 3;
+}
+
+GetOptions("app=s" => \$app, "port=s" => \$port, "warn=f" => \$warntime, "crit=f" => \$crittime, "timeout=f" => \$timeout);
+
+my $ping = pack 'C5' # Format template.
+ , 0x12, 0x34 # Magic number for server->container packets.
+ , 0x00, 0x01 # 2 byte int length of payload.
+ , 0x0A # Type of packet. 10 = CPing.
+;
+
+my $expected = pack 'C5' # Format template.
+ , 0x41, 0x42 # Magic number for container->server packets.
+ , 0x00, 0x01 # 2 byte int length of payload.
+ , 0x09 # Type of packet. 9 = CPong reply.
+;
+
+$iaddr = inet_aton($app) || xdie("No host given !");
+$paddr = sockaddr_in($port, $iaddr) || xdie("Wrong port !");
+$proto = getprotobyname 'tcp';
+
+$time1 = time();
+
+eval {
+ local $SIG{ALRM} = sub { die "alarm\n" };
+ alarm($timeout);
+ socket $sock, PF_INET, SOCK_STREAM, $proto || xdie("socket !");
+ connect $sock, $paddr || xdie("connect !");
+ syswrite $sock, $ping || xdie("syswrite !");
+ sysread $sock, $pong, 5 || xdie("sysread !");
+ alarm(0);
+};
+
+if ($@) {
+ die unless $@ eq "alarm\n";
+ $time2 = (time() - $time1);
+ printf "CRITICAL - AJP - Timeout after %1.0fs\n",$time2;
+ exit 2;
+} else {
+ $time2 = (time() - $time1);
+
+ if ($pong eq $expected) {
+ if ($time2 >= $crittime) {
+ printf "CRITICAL - AJP - %3.5f seconds response time|time=%3.6fs;;;0.000000;%2.6f\n",$time2,$time2,$timeout;
+ exit 2;
+ } elsif ($time2 >= $warntime) {
+ printf "WARNING - AJP - %3.5f seconds response time|time=%3.6fs;;;0.000000;%2.6f\n",$time2,$time2,$timeout;
+ exit 1;
+ } else {
+ printf "OK - AJP - %3.5f seconds response time|time=%3.6fs;;;0.000000;%2.6f\n",$time2,$time2,$timeout;
+ exit 0;
+ }
+ } else {
+ printf "UNKNOWN - AJP - %3.5f seconds response time|time=%3.6fs;;;0.000000;%2.6f\n",$time2,$time2,$timeout;
+ exit 3;
+ }
+}