mirror of
https://git.FreeBSD.org/ports.git
synced 2025-02-06 11:41:52 +00:00
New port: nagios-check_redis.
Nagios plugin to check redis status.
This commit is contained in:
parent
a3dcf597a1
commit
636217df6c
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=342424
@ -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
|
||||
|
27
databases/nagios-check_redis/Makefile
Normal file
27
databases/nagios-check_redis/Makefile
Normal file
@ -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>
|
83
databases/nagios-check_redis/files/check_redis
Normal file
83
databases/nagios-check_redis/files/check_redis
Normal file
@ -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 );
|
4
databases/nagios-check_redis/pkg-descr
Normal file
4
databases/nagios-check_redis/pkg-descr
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user