Date: Mon, 3 Feb 2014 11:27:39 +0000 (UTC) From: Dmitry Sivachenko <demon@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r342424 - in head/databases: . nagios-check_redis nagios-check_redis/files Message-ID: <201402031127.s13BRdae047736@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: demon Date: Mon Feb 3 11:27:39 2014 New Revision: 342424 URL: http://svnweb.freebsd.org/changeset/ports/342424 QAT: https://qat.redports.org/buildarchive/r342424/ Log: New port: nagios-check_redis. Nagios plugin to check redis status. Added: head/databases/nagios-check_redis/ head/databases/nagios-check_redis/Makefile (contents, props changed) head/databases/nagios-check_redis/files/ head/databases/nagios-check_redis/files/check_redis (contents, props changed) head/databases/nagios-check_redis/pkg-descr (contents, props changed) Modified: head/databases/Makefile Modified: head/databases/Makefile ============================================================================== --- head/databases/Makefile Mon Feb 3 11:12:04 2014 (r342423) +++ head/databases/Makefile Mon Feb 3 11:27:39 2014 (r342424) @@ -246,6 +246,7 @@ SUBDIR += mytop SUBDIR += mywwwatcher SUBDIR += nagios-check_postgres_replication + SUBDIR += nagios-check_redis SUBDIR += namazu2 SUBDIR += ocaml-mysql SUBDIR += ocaml-pgocaml Added: head/databases/nagios-check_redis/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/databases/nagios-check_redis/Makefile Mon Feb 3 11:27:39 2014 (r342424) @@ -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> Added: head/databases/nagios-check_redis/files/check_redis ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/databases/nagios-check_redis/files/check_redis Mon Feb 3 11:27:39 2014 (r342424) @@ -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 ); Added: head/databases/nagios-check_redis/pkg-descr ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/databases/nagios-check_redis/pkg-descr Mon Feb 3 11:27:39 2014 (r342424) @@ -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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402031127.s13BRdae047736>