Adding check_sieve
This commit is contained in:
parent
34c5c8f81e
commit
1697637249
BIN
check_sieve/.control.swp
Normal file
BIN
check_sieve/.control.swp
Normal file
Binary file not shown.
3
check_sieve/Makefile
Normal file
3
check_sieve/Makefile
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#/usr/bin/make -f
|
||||||
|
|
||||||
|
include ../common.mk
|
236
check_sieve/check_sieve
Normal file
236
check_sieve/check_sieve
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
#!/usr/local/bin/perl
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# $Id: check_sieve.pl 214 2014-01-08 09:37:22Z alan $
|
||||||
|
#
|
||||||
|
# check SIEVE connections as per rfc 5804
|
||||||
|
#
|
||||||
|
# Copyright (c) 2013 Persistent Objects Ltd - http://p-o.co.uk
|
||||||
|
#
|
||||||
|
# Dual licence AL/GPL
|
||||||
|
#
|
||||||
|
# Artistic License 2.0 (http://www.perlfoundation.org/artistic_license_2_0)
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
#
|
||||||
|
###########################################################################
|
||||||
|
# Inspired by check_stuff.pl, originally by Nathan Vonnahme, n8v at users
|
||||||
|
# dot sourceforge dot net, July 19 2006
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# prologue
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use IO::Socket::INET6;
|
||||||
|
use Time::HiRes;
|
||||||
|
use Nagios::Plugin;
|
||||||
|
|
||||||
|
use vars qw($VERSION $PROGNAME);
|
||||||
|
use vars qw($start $duration $sock $family $code $line $implementation);
|
||||||
|
use vars qw($capability $message $peer_address);
|
||||||
|
$VERSION = '1.02';
|
||||||
|
|
||||||
|
# get the base name of this script for use in the examples
|
||||||
|
use File::Basename;
|
||||||
|
$PROGNAME = basename($0);
|
||||||
|
|
||||||
|
|
||||||
|
# Instantiate Nagios::Plugin object (the 'usage' parameter is mandatory)
|
||||||
|
my $p = Nagios::Plugin->new(
|
||||||
|
usage => "Usage: %s
|
||||||
|
[ -v|--verbose ]
|
||||||
|
[ -H|--host <host>]
|
||||||
|
[ -P|--port <port>]
|
||||||
|
[ -4|--ipv4]
|
||||||
|
[ -6|--ipv6]
|
||||||
|
[ -t|--timeout <timeout>]
|
||||||
|
[ -c|--critical=<critical threshold> ]
|
||||||
|
[ -w|--warning=<warning threshold> ]
|
||||||
|
[ -r|--result = <INTEGER> ]",
|
||||||
|
version => $VERSION,
|
||||||
|
blurb => 'This plugin checks for a running Sieve daemon.',
|
||||||
|
|
||||||
|
extra => "
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
$PROGNAME -H localhost -P 4190 -w 5 -c 10
|
||||||
|
Returns a warning if the response is greater than 5 seconds,
|
||||||
|
or a critical error if it is greater than 10.
|
||||||
|
|
||||||
|
"
|
||||||
|
);
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# define, document and get the command line options.
|
||||||
|
# see the command line option guidelines at
|
||||||
|
# http://nagiosplug.sourceforge.net/developer-guidelines.html#PLUGOPTIONS
|
||||||
|
# usage, help, version, timeout and verbose are defined by default.
|
||||||
|
|
||||||
|
$p->add_arg(
|
||||||
|
spec => 'host|H=s',
|
||||||
|
help =>
|
||||||
|
qq{-H, --host=STRING
|
||||||
|
Host where the running daemon can be found, defaults to localhost.},
|
||||||
|
required => 0,
|
||||||
|
default => 'localhost',
|
||||||
|
);
|
||||||
|
|
||||||
|
$p->add_arg(
|
||||||
|
spec => 'port|P=i',
|
||||||
|
help =>
|
||||||
|
qq{-P, --port=INTEGER
|
||||||
|
Port number for the running daemon, default 4190.},
|
||||||
|
required => 0,
|
||||||
|
default => 4190,
|
||||||
|
);
|
||||||
|
|
||||||
|
$p->add_arg(
|
||||||
|
spec => 'warning|w=i',
|
||||||
|
help =>
|
||||||
|
qq{-w, --warning=INTEGER:INTEGER
|
||||||
|
Minimum and maximum number of allowable result, outside of which a
|
||||||
|
warning will be generated. If omitted, no warning is generated.},
|
||||||
|
|
||||||
|
required => 0,
|
||||||
|
default => 5,
|
||||||
|
);
|
||||||
|
|
||||||
|
$p->add_arg(
|
||||||
|
spec => 'critical|c=i',
|
||||||
|
help =>
|
||||||
|
qq{-c, --critical=INTEGER:INTEGER
|
||||||
|
Minimum and maximum number of the generated result, outside of
|
||||||
|
which a critical will be generated. },
|
||||||
|
required => 0,
|
||||||
|
default => 10,
|
||||||
|
);
|
||||||
|
|
||||||
|
$p->add_arg(
|
||||||
|
spec => 'ipv6|6',
|
||||||
|
help =>
|
||||||
|
qq{-6, --ipv6
|
||||||
|
Use ipv6. },
|
||||||
|
);
|
||||||
|
$p->add_arg(
|
||||||
|
spec => 'ipv4|4',
|
||||||
|
help =>
|
||||||
|
qq{-4, --ipv4
|
||||||
|
Use ipv4. },
|
||||||
|
);
|
||||||
|
|
||||||
|
$p->add_arg(
|
||||||
|
spec => 'result|r=i',
|
||||||
|
help =>
|
||||||
|
qq{-r, --result=INTEGER
|
||||||
|
Supplied result for testing.},
|
||||||
|
required => 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# Parse arguments and process standard ones (e.g. usage, help, version)
|
||||||
|
$p->getopts;
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# perform sanity checking on command line options
|
||||||
|
if ( (defined $p->opts->result) && ($p->opts->result < 0 || $p->opts->result > 20) ) {
|
||||||
|
$p->nagios_die( ' invalid number supplied for the -r option ' );
|
||||||
|
}
|
||||||
|
unless ( defined $p->opts->warning || defined $p->opts->critical ) {
|
||||||
|
$p->nagios_die('Please supply a warning or critical threshold argument', UNKNOWN);
|
||||||
|
}
|
||||||
|
if ( $p->opts->warning == $p->opts->critical ) {
|
||||||
|
$p->nagios_die('Critical is equal to Warning', UNKNOWN);
|
||||||
|
}
|
||||||
|
if ( $p->opts->warning > $p->opts->critical ) {
|
||||||
|
$p->nagios_die('Critical is longer than Warning', UNKNOWN);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# Set the protocol family
|
||||||
|
if ( $p->opts->ipv6) {
|
||||||
|
$family = AF_INET6;
|
||||||
|
}elsif ( $p->opts->ipv4) {
|
||||||
|
$family = AF_INET;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# Set the timeout
|
||||||
|
#$SIG{'ALRM'} = sub { $p->nagios_die("Timeout", CRITICAL); };
|
||||||
|
alarm $p->opts->timeout;
|
||||||
|
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# Check Sieve daemon is running
|
||||||
|
|
||||||
|
$start = Time::HiRes::time;
|
||||||
|
|
||||||
|
$sock = IO::Socket::INET6->new(
|
||||||
|
PeerAddr => $p->opts->host,
|
||||||
|
PeerPort => $p->opts->port,
|
||||||
|
Domain => $family,
|
||||||
|
Proto => 'tcp',
|
||||||
|
Timeout => $p->opts->timeout
|
||||||
|
) or $p->nagios_exit(UNKNOWN, 'Unable to connect to: '. $p->opts->host .':'.$p->opts->port);
|
||||||
|
$peer_address = $sock->peerhost() . ':' . $sock->peerport();
|
||||||
|
|
||||||
|
SOCKETLOOP:
|
||||||
|
while (defined($line = <$sock>)) {
|
||||||
|
#print $line;
|
||||||
|
if ($line =~ /SIEVE/) {
|
||||||
|
$capability = $line;
|
||||||
|
}
|
||||||
|
if ($line =~ /implementation/i) {
|
||||||
|
$implementation = $line;
|
||||||
|
}
|
||||||
|
|
||||||
|
last SOCKETLOOP if $line =~ /^OK/;
|
||||||
|
}
|
||||||
|
close($sock);
|
||||||
|
|
||||||
|
# Get rid of quotes if they have been used
|
||||||
|
$implementation =~ tr/0-9a-zA-Z. //csd;
|
||||||
|
$implementation = substr $implementation, 15;
|
||||||
|
$capability =~ tr/0-9a-zA-Z. //cd;
|
||||||
|
$capability = substr $capability, 6;
|
||||||
|
|
||||||
|
$duration = sprintf("%.4f",Time::HiRes::time - $start);
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# check the result against the defined warning and critical thresholds,
|
||||||
|
# output the result and exit
|
||||||
|
if ($p->opts->result) {
|
||||||
|
# We are testing
|
||||||
|
$duration = $p->opts->result;
|
||||||
|
}
|
||||||
|
$code = $p->check_threshold(
|
||||||
|
check => $duration,
|
||||||
|
warning => $p->opts->warning,
|
||||||
|
critical => $p->opts->critical,
|
||||||
|
);
|
||||||
|
$message .= $duration . ' second response time;';
|
||||||
|
|
||||||
|
if ($p->opts->verbose) {
|
||||||
|
$message .= ' connected to ' . $peer_address . ';';
|
||||||
|
if ($implementation) {
|
||||||
|
$message .= ' ' . $implementation . ';';
|
||||||
|
}
|
||||||
|
$message .= ' [' . $capability . '];';
|
||||||
|
}
|
||||||
|
|
||||||
|
# Output the result
|
||||||
|
$p->nagios_exit($code, $message);
|
5
check_sieve/check_sieve.cfg
Normal file
5
check_sieve/check_sieve.cfg
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# 'check_sieve' command definition
|
||||||
|
define command{
|
||||||
|
command_name check_sieve
|
||||||
|
command_line /usr/lib/monitoring-plugins/check_sieve -H $HOSTADDRESS$ $ARG1$
|
||||||
|
}
|
7
check_sieve/control
Normal file
7
check_sieve/control
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
Homepage: https://raw.githubusercontent.com/alan-hicks/check_sieve/master/check_sieve.pl
|
||||||
|
Watch: https://raw.githubusercontent.com/alan-hicks/check_sieve/master/check_sieve.pl \$VERSION\ =\ '([0-9.]+)'
|
||||||
|
Recommends: libio-socket-inet6-perl, monitoring-plugins-common | nagios-plugins-common
|
||||||
|
Version: 1.02
|
||||||
|
Uploaders: Jan Wagner <waja@cyconet.org>
|
||||||
|
Description: plugin checking for a running Sieve daemon
|
||||||
|
Check SIEVE connections as per rfc 5804 for Nagios
|
7
check_sieve/copyright
Normal file
7
check_sieve/copyright
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
Copyright (c) 2012 William Leibzon <william@leibzon.org>
|
||||||
|
|
||||||
|
License: GPL v2
|
||||||
|
|
||||||
|
On Debian systems, the complete text of the GNU General
|
||||||
|
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||||
|
|
5
debian/README.Debian.plugins
vendored
5
debian/README.Debian.plugins
vendored
|
@ -37,8 +37,11 @@ check_redis:
|
||||||
check_sentinel:
|
check_sentinel:
|
||||||
Required Packages: ruby-redis
|
Required Packages: ruby-redis
|
||||||
|
|
||||||
|
check_sieve:
|
||||||
|
Required Packages: libio-socket-inet6-perl, monitoring-plugins-common | nagios-plugins-common
|
||||||
|
|
||||||
check_smart:
|
check_smart:
|
||||||
Required Packages: perl-base, perl-modules, monitoring-plugins-common | nagios-plugins-common
|
Required Packages: perl-modules, monitoring-plugins-common | nagios-plugins-common
|
||||||
|
|
||||||
check_tftp:
|
check_tftp:
|
||||||
Required Packages: libnet-tftp-perl, monitoring-plugins-common | nagios-plugins-common
|
Required Packages: libnet-tftp-perl, monitoring-plugins-common | nagios-plugins-common
|
||||||
|
|
6
debian/control
vendored
6
debian/control
vendored
|
@ -11,7 +11,7 @@ Vcs-Browser: http://github.com/waja/monitoring-plugins-cyconet
|
||||||
Package: monitoring-plugins-cyconet
|
Package: monitoring-plugins-cyconet
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${misc:Depends}
|
Depends: ${misc:Depends}
|
||||||
Recommends: ${shlibs:Depends}, ${python:Depends}, libnet-snmp-perl, monitoring-plugins-common | nagios-plugins-common, libtime-modules-perl, libwww-perl, python-argparse, libredis-perl, ruby-redis, perl-modules, libnet-tftp-perl, libxml-xpath-perl, ${perl:Depends}
|
Recommends: ${shlibs:Depends}, ${python:Depends}, libnet-snmp-perl, monitoring-plugins-common | nagios-plugins-common, libtime-modules-perl, libwww-perl, python-argparse, libredis-perl, ruby-redis, libio-socket-inet6-perl, perl-modules, libnet-tftp-perl, libxml-xpath-perl, ${perl:Depends}
|
||||||
Suggests:
|
Suggests:
|
||||||
Enhances: nagios-plugins, nagios-plugins-basic, nagios-plugins-standard
|
Enhances: nagios-plugins, nagios-plugins-basic, nagios-plugins-standard
|
||||||
Description: Plugins for nagios compatible monitoring systems
|
Description: Plugins for nagios compatible monitoring systems
|
||||||
|
@ -21,7 +21,7 @@ Description: Plugins for nagios compatible monitoring systems
|
||||||
.
|
.
|
||||||
* check_bgp (0.4): plugin to check BGP peer status via SNMP.
|
* check_bgp (0.4): plugin to check BGP peer status via SNMP.
|
||||||
* check_file: plugin to check file count, size and ages
|
* check_file: plugin to check file count, size and ages
|
||||||
* check_nginx_status (0.9): plugin checking the nginx_status page report from nginx
|
* check_nginx_status (0.10): plugin checking the nginx_status page report from nginx
|
||||||
Tracking Active connections processes, request per second, connections per
|
Tracking Active connections processes, request per second, connections per
|
||||||
seconds, Connections status.
|
seconds, Connections status.
|
||||||
* check_nwc_health (3.0.3.7): This plugin checks the hardware health and interface metrics
|
* check_nwc_health (3.0.3.7): This plugin checks the hardware health and interface metrics
|
||||||
|
@ -30,6 +30,8 @@ Description: Plugins for nagios compatible monitoring systems
|
||||||
* check_phpfpm_status (0.9): plugin to check the fpm-status page report from php-fpm
|
* check_phpfpm_status (0.9): plugin to check the fpm-status page report from php-fpm
|
||||||
* check_redis (0.72): plugin that verifies redis server is working.
|
* check_redis (0.72): plugin that verifies redis server is working.
|
||||||
* check_sentinel (0b8e0e388a): plugin to monitor Redis sentinel
|
* check_sentinel (0b8e0e388a): plugin to monitor Redis sentinel
|
||||||
|
* check_sieve (1.02): plugin checking for a running Sieve daemon
|
||||||
|
Check SIEVE connections as per rfc 5804 for Nagios
|
||||||
* check_smart: plugin to check SMART status of ATA/SCSI disks
|
* check_smart: plugin to check SMART status of ATA/SCSI disks
|
||||||
* check_tftp (0.11): plugin that verifies TFTP server is working.
|
* check_tftp (0.11): plugin that verifies TFTP server is working.
|
||||||
* check_tomcat (1.4): plugin to check the tomcat status page.
|
* check_tomcat (1.4): plugin to check the tomcat status page.
|
||||||
|
|
28
debian/copyright
vendored
28
debian/copyright
vendored
|
@ -199,6 +199,34 @@ https://raw.github.com/reedox/check_sentinel/master/check_sentinel
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
check_sieve:
|
||||||
|
|
||||||
|
The plugin was downloaded from:
|
||||||
|
https://raw.githubusercontent.com/alan-hicks/check_sieve/master/check_sieve.pl
|
||||||
|
|
||||||
|
Copyright (c) 2012 William Leibzon <william@leibzon.org>
|
||||||
|
|
||||||
|
License: GPL v2
|
||||||
|
|
||||||
|
On Debian systems, the complete text of the GNU General
|
||||||
|
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
check_smart:
|
||||||
|
|
||||||
|
The plugin was downloaded from:
|
||||||
|
https://exchange.icinga.org/exchange/check_smart+hwraid
|
||||||
|
|
||||||
|
Copyright (c) Kurt Yoder, Giles Westwood
|
||||||
|
|
||||||
|
License: public-domain
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
check_tftp:
|
check_tftp:
|
||||||
|
|
14
debian/patches/check_sieve/10_pathes
vendored
Normal file
14
debian/patches/check_sieve/10_pathes
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
Author: Jan Wagner <waja@cyconet.org>
|
||||||
|
Description:
|
||||||
|
Patches check_sieve to use debian specific paths.
|
||||||
|
|
||||||
|
diff --git a/check_sieve/check_sieve b/check_sieve/check_sieve
|
||||||
|
index 2bb21f0..7405671 100644
|
||||||
|
--- a/check_sieve/check_sieve
|
||||||
|
+++ b/check_sieve/check_sieve
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/local/bin/perl
|
||||||
|
+#!/usr/bin/perl
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# $Id: check_sieve.pl 214 2014-01-08 09:37:22Z alan $
|
1
debian/patches/series
vendored
1
debian/patches/series
vendored
|
@ -1,3 +1,4 @@
|
||||||
check_tomcat/epn
|
check_tomcat/epn
|
||||||
check_tftp/epn
|
check_tftp/epn
|
||||||
check_phpfpm_status/10_pathes
|
check_phpfpm_status/10_pathes
|
||||||
|
check_sieve/10_pathes
|
||||||
|
|
Loading…
Reference in a new issue