diff options
author | Dmitry Sivachenko <demon@FreeBSD.org> | 2014-02-03 11:27:39 +0000 |
---|---|---|
committer | Dmitry Sivachenko <demon@FreeBSD.org> | 2014-02-03 11:27:39 +0000 |
commit | 636217df6c4183c2a22eb4056a24036979673869 (patch) | |
tree | 141733f62cc52f5eaaf2d29153d32ed7284d0aa4 /databases/nagios-check_redis | |
parent | a3dcf597a17fce1a178634f267d27bd44b55ad55 (diff) | |
download | ports-636217df6c4183c2a22eb4056a24036979673869.tar.gz ports-636217df6c4183c2a22eb4056a24036979673869.zip |
Notes
Diffstat (limited to 'databases/nagios-check_redis')
-rw-r--r-- | databases/nagios-check_redis/Makefile | 27 | ||||
-rw-r--r-- | databases/nagios-check_redis/files/check_redis | 83 | ||||
-rw-r--r-- | databases/nagios-check_redis/pkg-descr | 4 |
3 files changed, 114 insertions, 0 deletions
diff --git a/databases/nagios-check_redis/Makefile b/databases/nagios-check_redis/Makefile new file mode 100644 index 000000000000..11b8e03b7f99 --- /dev/null +++ b/databases/nagios-check_redis/Makefile @@ -0,0 +1,27 @@ +# Created by: Dmitry Sivachenko <demon@FreeBSD.org> +# $FreeBSD$ + +PORTNAME= check_netsnmp +PORTVERSION= 0.1 +CATEGORIES= databases perl5 +MASTER_SITES= # +PKGNAMEPREFIX= nagios- +DISTFILES= # none + +MAINTAINER= demon@FreeBSD.org +COMMENT= Nagios plugin to check redis server + +RUN_DEPENDS= ${LOCALBASE}/libexec/nagios/utils.pm:${PORTSDIR}/net-mgmt/nagios-plugins \ + p5-Redis>=0:${PORTSDIR}/databases/p5-Redis \ + p5-Net-SNMP>=0:${PORTSDIR}/net-mgmt/p5-Net-SNMP + +USES= perl5 +USE_PERL5= run +NO_BUILD= yes +PLIST_FILES= libexec/nagios/check_redis + +do-install: + ${MKDIR} ${STAGEDIR}${PREFIX}/libexec/nagios + ${INSTALL_SCRIPT} ${FILESDIR}/check_redis ${STAGEDIR}${PREFIX}/libexec/nagios/ + +.include <bsd.port.mk> diff --git a/databases/nagios-check_redis/files/check_redis b/databases/nagios-check_redis/files/check_redis new file mode 100644 index 000000000000..812c50adabd4 --- /dev/null +++ b/databases/nagios-check_redis/files/check_redis @@ -0,0 +1,83 @@ +#!/usr/bin/env perl + +use warnings; +use strict; +use Getopt::Long qw(:config gnu_getopt); +use Redis; +use Nagios::Plugin; + +my $VERSION="0.1"; +my $np; + +$np = Nagios::Plugin->new(usage => "Usage: %s [--host|-H <host>] [--port|-p <port>] [ -c|--critical=<threshold> ] [ -w|--warning=<threshold>] [-?|--usage] [-V|--version] [-h|--help] [-v|--verbose] [-t|--timeout=<timeout>]", + version => $VERSION, + blurb => 'This plugin checks the availability of a redis server, expecting that a slave server is sync with master, and the replication delay is not too high.', + license => "Brought to you AS IS, WITHOUT WARRANTY, under GPL. (C) Remi Paulmier <remi.paulmier\@gmail.com>", + shortname => "CHECK_REDIS", + ); + +$np->add_arg(spec => 'host|H=s', + help => q(Check the host indicated in STRING), + required => 0, + default => 'localhost', + ); + +$np->add_arg(spec => 'port|p=i', + help => q(Use the TCP port indicated in INTEGER), + required => 0, + default => 4730, + ); + +$np->add_arg(spec => 'critical|c=s', + help => q(Exit with CRITICAL status if replication delay is greater than INTEGER), + required => 0, + default => 10, + ); + +$np->add_arg(spec => 'warning|w=s', + help => q(Exit with WARNING status if replication delay is greater than INTEGER), + required => 0, + default => 1, + ); + +$np->getopts; +my $ng = $np->opts; + +# manage timeout +alarm $ng->timeout; + +# host & port +my $host = $ng->get('host'); +my $port = $ng->get('port'); + +# verbosity +my $verbose = $ng->get('verbose'); + +my $redis; +eval { + $redis = Redis->new( server => "$host:$port", debug => 0); +}; +if ($@) { + $np->nagios_exit( CRITICAL, "Can't connect to $host:$port" ); +} + +my $info = $redis->info(); +my $code = OK; +my $msg = "Everything is OK"; + +$redis->ping || $np->nagios_exit( CRITICAL, "Can't ping server $host:$port" ); + +if ($info->{'role'} eq "slave") { + $code = $np->check_threshold(check => $info->{'master_last_io_seconds_ago'}); + $msg = ("redis replication is late (" . + $info->{'master_last_io_seconds_ago'} . + "s)" + ) if $code != OK; + + if ($info->{'master_sync_in_progress'} != 0) { + $msg = "redis replication sync is in progress"; + $code = CRITICAL; + } +} + +$np->nagios_exit( $code, $msg ); diff --git a/databases/nagios-check_redis/pkg-descr b/databases/nagios-check_redis/pkg-descr new file mode 100644 index 000000000000..62897ef5bf2b --- /dev/null +++ b/databases/nagios-check_redis/pkg-descr @@ -0,0 +1,4 @@ +This plugin checks a redis server, expecting that a slave server is in sync +with master, and the replication delay is not too high. + +WWW: http://exchange.nagios.org/directory/Plugins/Others/check_redis/details |