=================================================================== RCS file: /cvs/nagios/check_openbgpd/check_openbgpd,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- nagios/check_openbgpd/check_openbgpd 2009/11/13 02:05:20 1.1 +++ nagios/check_openbgpd/check_openbgpd 2009/11/13 22:23:24 1.2 @@ -1,5 +1,5 @@ #!/usr/bin/perl -T -# $RedRiver$ +# $RedRiver: check_openbgpd,v 1.1 2009/11/13 02:05:20 andrew Exp $ ######################################################################## # check_openbgpd *** A nagios check for OpenBSD bgpd # @@ -12,7 +12,7 @@ local %ENV = (); -my $NAGIOS_OUTPUT = 0; +my $NAGIOS_OUTPUT = 1; my $LICENSE = <<'EOL'; Copyright (c) 2009 Andrew Fresh @@ -60,7 +60,7 @@ my %STATES = check_status( \@STATUS, \%CHECKS ); my $have_results = 0; -my $state = 'OK'; +my $state = 'OK'; foreach my $error ( reverse sort { $ERRORS{$a} <=> $ERRORS{$b} } keys %ERRORS ) { @@ -93,7 +93,7 @@ my @S; #open my $fh, '<', 'output' # XXX - open my $fh , '-|', $BGPCTL, 'show', 'summary' + open my $fh, '-|', $BGPCTL, 'show', 'summary' or die "Couldn't open bgpctl: $!\n"; while (<$fh>) { chomp; @@ -237,13 +237,13 @@ my $opt = shift @argv; given ($opt) { when ( '-V' || '--version' ) { - print_revision( $PROGNAME, '$Revision: 1.1 $ ' ); + print_revision( $PROGNAME, '$Revision: 1.2 $ ' ); exit $ERRORS{'OK'} } - when ( /^-?-h(?:elp)?/xms ) { print_help(); exit $ERRORS{'OK'} } - when ( /^-?-w(?:arning)?/xms ) { $w = parse_check( shift @argv ) } - when ( /^-?-c(?:ritical)?/xms ) { $c = parse_check( shift @argv ) } - when ( /^-?-n(?:eighbor)?/xms ) { + when (/^-?-h(?:elp)?/xms) { print_help(); exit $ERRORS{'OK'} } + when (/^-?-w(?:arning)?/xms) { $w = parse_check( shift @argv ) } + when (/^-?-c(?:ritical)?/xms) { $c = parse_check( shift @argv ) } + when (/^-?-n(?:eighbor)?/xms) { while ( @argv && $argv[0] !~ /^-/xms ) { $checks{ shift @argv } = { WARNING => $w, @@ -259,7 +259,7 @@ sub print_help { print <<"EOL"; -$PROGNAME - monitors sysctl hw.bgpstatus on OpenBSD +$PROGNAME - checks status of OpenBGPd peers $PROGNAME [ -w ENTRY ][ -c ENTRY ][ -n NEIGHBOR [ NEIGHBOR2 ] ] Usage: @@ -280,22 +280,37 @@ NEIGHBOR is the name that shows when running "bgpctl show summary" Examples: +(where many of the numbers would probably have to be multiplied by 1000) -$PROGNAME -w 10000:300000 -c 1000:500000 -n eBGP1 eBGP2 -n eBGP3 +Any time a NEIGHBOR is specified on the command line but does NOT show up in +the output causes a CRITICAL result. -Checks that peers eBGP1, eBGP2 and eBGP2 are within the ranges specified +Any time a NEIGHBOR that is NOT specified on the command line shows up in the +output causes a CRITICAL result. -$PROGNAME -c 1:1 -n eBGP1 -w 200000:300000 -c 100: -n iBGP1 -Checks that 1 and only 1 prefix is received from from eBGP1, warns if less -than 200000 or more than 300000 prefixes are recieved from peer iBGP1 and is -critical if less than 100 prefixes are recieved from peer iBGP1 +$PROGNAME -w 10:300 -c 10:500 -n P1 P2 -n P3 -$PROGNAME -c Idle -n iBGP1 -w +CRITICAL + If any of P1, P2, P3 are below 10, above 500 or any non-numeric value. +WARNING + If any of P1, P2, P3 are above 300. + + +$PROGNAME -c Idle -n P1 -c 1:1 -n P2 -w 200:300 -c Active,10: -n P3 + +CRITICAL + If P1 is any value but Idle. + If P2 is any value but 1. + If P3 is below 10 or any non-numeric value other than "Active". + +WARNING + If P3 is above 10 and below 200 or above 300. + EOL - print_revision( $PROGNAME, '$Revision: 1.1 $' ); + print_revision( $PROGNAME, '$Revision: 1.2 $' ); print $LICENSE;