This is a simple plugin that is based on one by Jason Rivers We have changed it now to read the ASTDB (Asterisk internal Database and then based on ok and Critical keys it will report OK or Critical staus reports to Nagios.
This was written for reporting if an Elastix system is in Day or Night mode.
You can define the Database Family, Key, Critical value and OK value. This means you can cutomise it to what ever you need to report.
The Code is below, make you may need to change /usr/bin/nc for what ever you use for netcat.
any issues email us, but dont forget this is given for free not supported for free.
#!/bin/bash # # Program : check_asterisk_ami # : # Author : Original code by Jason Rivers < jason@jasonrivers.co.uk > # : Modified by Cyber-cottage.co.uk for checking the asterisk Database # : # Purpose : Nagios plugin to return Information from an Asterisk host using AMI # : # Parameters : --help # : --version # : # Returns : Standard Nagios status_* codes as defined in utils.sh # : # Licence : GPL # # Notes : See --help for details #============:============================================================== PROGNAME=`basename $0` PROGPATH=`echo $0 | /bin/sed -e 's,[\/][^\/][^\/]*$,,'` REVISION=`echo '$Revision: 1.1.0.6 $' | sed -e 's/[^0-9.]//g'` . $PROGPATH/utils.sh print_usage() { echo "Usage: $PROGNAME [-H hostname] [-u username] [-p password] [-P port] [-k DBkey] [-c critical] [-o ok] [-f family]" echo " -H Hostname" echo " -u AMI Username" echo " -p AMI Password" echo " -P (optional) AMI PORT" echo " -k Database key" echo " -f Database family" echo " -c Critical Key" echo " -o OK KEY" echo "" echo "SupportedCommands:" echo " Most DB familiys that toggle such as DayNight in elastix" echo "Usage: $PROGNAME --help" echo "Usage: $PROGNAME --version" } print_help() { print_revision $PROGNAME $REVISION echo "" echo "Nagios Plugin to check Asterisk ASTDB using AMI" echo "" print_usage echo "" echo "Asterisk Call Status Check. orignal version by © Jason Rivers 2011 changes to do ASTDB by cyber-cottage.co.uk" echo "" exit 0 # support } # If we have arguments, process them. # exitstatus=$STATE_WARNING #default while test -n "$1"; do case "$1" in --help) print_help exit $STATE_OK ;; -h) print_help exit $STATE_OK ;; --version) print_revision $PROGNAME $REVISION exit $STATE_OK ;; -V) print_revision $PROGNAME $REVISION exit $STATE_OK ;; -H) REMOTEHOST=$2; shift; ;; -P) AMIPORT=$2; shift; ;; -u) AMIUSER=$2; shift; ;; -p) AMIPASS=$2; shift; ;; -c) CRITICALNAME=$2 shift; ;; -o) OKNAME=$2 shift; ;; -k) DBKEY=$2; shift; ;; -f) FAMIL=$2; shift; ;; *) echo "Unknown argument: $1" print_usage exit $STATE_UNKNOWN ;; esac shift done if [ "${AMIPORT}" = "" ]; then AMIPORT="5038" fi if [ "${FAMIL}" = "" ]; then ##WARNING echo="CRITICAL: Unknown KEY" print_help exit=$STATE_CRITICAL else ## Checking Astdb CHANNELS=`/bin/echo -e "Action: login Username: ${AMIUSER} Secret: ${AMIPASS} Events: off Action: DBGet Family: ${FAMIL} Key: ${DBKEY} Action: Logoff " | /usr/bin/nc $REMOTEHOST ${AMIPORT} | awk '/Val/ {print $2}'|tr -d " "` if [ "$CHANNELS" = "" ]; then echo "UNKNOWN: Unable to get ASTDB status" exit $STATUS_UNKNOWN fi if [ "$CHANNELS" = "${OKNAME}" ]; then exitstatus=$STATU_OK MSG="OK: ${DBKEY} Asterisk Emergency message not active" elif [ "$CHANNELS" = "" ]; then exitstatus=$STATU_WARNING MSG="WARNING: Asterisk Unknown status" elif [ "$CHANNELS" = "$CRITICALNAME" ]; then exitstatus=$STATU_CRITICAL MSG="CRITICAL: ${DBKEY} Asterisk Emergency message active" fi fi echo $MSG exit $exitstatus