diff --git a/scripts/nagios_push_checker.pl b/scripts/nagios_push_checker.pl new file mode 100755 index 0000000000..109f794d72 --- /dev/null +++ b/scripts/nagios_push_checker.pl @@ -0,0 +1,83 @@ +#!/usr/bin/perl + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. + +use strict; +use warnings; + +use FindBin qw($RealBin); +use lib ("$RealBin/..", "$RealBin/../lib"); + +use Bugzilla; +use Bugzilla::Constants; +use Bugzilla::Product; +use Bugzilla::User; +use Getopt::Long; + +Bugzilla->usage_mode(USAGE_MODE_CMDLINE); + +my $config = { + connector => '', + warn => 5, + alarm => 10, +}; + +my $usage = < \$config->{connector}, + 'warn=i' => \$config->{warn}, + 'alarm=i' => \$config->{alarm}, + 'help|?' => \$config->{help}, +); +die $usage if $config->{help} || !$config->{connector}; + +# + +use constant NAGIOS_OK => 0; +use constant NAGIOS_WARNING => 1; +use constant NAGIOS_CRITICAL => 2; +use constant NAGIOS_NAMES => [qw( OK WARNING CRITICAL )]; + +my $dbh = Bugzilla->switch_to_shadow_db; + +my ($count) = $dbh->selectrow_array( + "SELECT COUNT(*) FROM push_backlog WHERE connector=?", + undef, + $config->{connector}, +); + +my $state; +if ($count >= $config->{alarm}) { + $state = NAGIOS_CRITICAL; +} elsif ($count >= $config->{warn}) { + $state = NAGIOS_WARNING; +} else { + $state = NAGIOS_OK; +} + +print "push ", NAGIOS_NAMES->[$state], ": ", $count, " ", + "push.", $config->{connector}, " message", + ($count == 1 ? '' : 's'), " in backlog\n"; +exit $state;