Skip to content

Instantly share code, notes, and snippets.

@deluan
Created March 8, 2015 05:00
Show Gist options
  • Save deluan/6bcae6487fe85360e44e to your computer and use it in GitHub Desktop.
Save deluan/6bcae6487fe85360e44e to your computer and use it in GitHub Desktop.
Use this script for services you don't want BB to alert in red on the first failure. It will become yellow first, and then, after a configurable number of polls, it will go red. Useful with network tests over a noisy link (except when you're responsible for the link ;). Tested only with Linux. http://goo.gl/WZFwNZ
#!/bin/sh
#
# $Id: bb-trigger.sh,v 1.2 2002/01/29 18:50:17 deluan Exp $
#
# by Deluan Cotts Quintao ([email protected])
#
# Use this script for services you don't want BB to alert in red on the first error.
# It will become yellow first, and then, after a configurable number of polls, it will
# go red. Useful with network tests over a noisy link (except when you're responsible
# for the link ;)
#
# Instalation:
#
# $ cd $BBHOME
# $ ./runbb.sh stop
# $ cd bin
# $ mv bb bb.ORIG
#
# Save this script as $BBHOME/bin/bb
# Edit variables in the CONFIGURATION section (bellow)
#
# $ chmod +x bb
# $ ./runbb.sh start
#
# OBS: This script has only been tested with Red Hat Linux 7.1
#
# *******************************************************
# Use at your own risks, I take no responsabilities
# if you use this script. You can redistribute at will.
# If you change this script, I just ask you leave my name
# in the script and the copyright must stay the same.
# *******************************************************
#
# $Log: bb-trigger.sh,v $
# Revision 1.2 2002/01/29 18:50:17 deluan
# First public release.
#
#
IPADDR=$1
MSG=$2
#BBHOME=/usr/local/bb
#BBTMP=/tmp
# echo "***** BBHOME IS SET TO $BBHOME IN bb-trigger.sh"
if test ! "$BBTMP" # GET DEFINITIONS IF NEEDED
then
. $BBHOME/etc/bbdef.sh # INCLUDE STANDARD DEFINITIONS
fi
###########################################
########### CONFIGURATION #################
TRIGGEREDSVCS="$BBNETSVCS http dns dig" # Services that will be intercepted
TRIGGERCOUNT=1 # How many polls before becoming "red"
BASENAME=/bin/basename
########### END OF CONFIGURATION ##########
###########################################
# Read current counter value for host.svc and increment it by one
get_err_count()
{
ERRFILE=${BBTMP}/$1.err.count
if [ -f "$ERRFILE" ]
then
ERRCOUNT=`cat $ERRFILE`
ERRCOUNT=`${EXPR} $ERRCOUNT + 1`
else
ERRCOUNT=1
fi
echo $ERRCOUNT > $ERRFILE
return $ERRCOUNT;
}
# Clear (remove) counter value for host.svc
clear_err_count()
{
ERRFILE=${BBTMP}/$1.err.count
if [ -f "$ERRFILE" ]
then
${RM} -f $ERRFILE
fi
}
#set -x # for debuging...
set $MSG
MSGTYPE=$1; shift
if [ $MSGTYPE = status ]; then
HOSTSVC=$1; shift
COLOR=$1
SVC=`echo $HOSTSVC | ${CUT} -f 2 -d "."`
if `echo $TRIGGEREDSVCS | ${GREP} $SVC > /dev/null`; then
if [ $COLOR = red ]; then
get_err_count $HOSTSVC
ERRORCOUNT=$?
if [ "$ERRORCOUNT" -le "$TRIGGERCOUNT" ]; then
MSG=`echo "$MSG" | ${SED} "s/red/yellow/"`
MSG="$MSG""
Failed on attempt #$ERRORCOUNT"
fi
elif [ $COLOR = green ]; then
clear_err_count $HOSTSVC
fi
fi
elif [ $MSGTYPE = combo ]; then
ERRLIST=`( cd $BBTMP; ls *.err.count 2> /dev/null )`
for fn in $ERRLIST; do
HOSTSVC=`${BASENAME} $fn .err.count`
if `echo $MSG | ${GREP} $HOSTSVC > /dev/null`; then
clear_err_count $HOSTSVC
fi
done
fi
${BB}.ORIG $IPADDR "$MSG"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment