From 07d7c293ae4b0ab73498b90eed858537e97b19d1 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Tue, 9 Oct 2012 13:24:55 +0200 Subject: [PATCH] Initial commit --- .gitignore | 1 + check_sip_latency | 35 ++++++++++++++ check_sip_peers | 121 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 157 insertions(+) create mode 100644 .gitignore create mode 100755 check_sip_latency create mode 100755 check_sip_peers diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b25c15b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/check_sip_latency b/check_sip_latency new file mode 100755 index 0000000..a794206 --- /dev/null +++ b/check_sip_latency @@ -0,0 +1,35 @@ +#!/bin/bash +# Verifie la latence d'une connexion SIP Asterisk + +PEER=$1 + +[ ! -n "$PEER" ] && echo "Usage : $0 [peer]" && exit 1 + +CRITICAL=100 +WARNING=40 + +latency=`/usr/bin/sudo -u root /usr/sbin/rasterisk -rnx "sip show peer $PEER"|grep Status|sed 's/.*(\([0-9]*\) ms.*/\1/g'` + +if [ ! -n "$latency" ] +then + /bin/echo "SIP Latency UNKNOWN" + exit 3 +fi + +details="Latency : $latency ms" + +if [ $latency -gt $CRITICAL ] +then + nstatus="CRITICAL" + exitcode=2 +elif [ $latency -gt $WARNING ] +then + nstatus="WARNING" + exitcode=1 +else + nstatus="OK" + exitcode=0 +fi + +/bin/echo "SIP Latency ${nstatus} : $details | latency=${latency}ms" +exit $exitcode diff --git a/check_sip_peers b/check_sip_peers new file mode 100755 index 0000000..779a6a4 --- /dev/null +++ b/check_sip_peers @@ -0,0 +1,121 @@ +#!/bin/bash + +[ ! -n "$1" ] && echo "Usage : $0 [-cX] [-wX] [-d] [peer1] [peer2]" && exit 1 + +CRITICAL_LATENCY=100 +WARNING_LATENCY=70 + +CRITICAL_PEER_NUMBER=1 +WARNING_PEER_NUMBER=2 + + +function checkPeer() { + PEER=$1 + state=$( /usr/bin/sudo -u root /usr/sbin/rasterisk -rnx "sip show peer $PEER"|grep "Status"|cut -d ":" -f 2 ) + if [ ! -n "$state" ] + then + export MSG="$PEER : not found" + return 3 + fi + + ok=$( echo $state|grep -c OK ) + + + if [ $ok -eq 0 ] + then + export MSG="$PEER :$state" + return 3 + else + latency=$( echo "$state"|sed 's/.*(\([0-9]*\) ms.*/\1/g' ) + [ $DEBUG -eq 1 ] && echo "Peer $PEER latency : $latency ms" + if [ $latency -gt $CRITICAL_LATENCY ] + then + st='CRITICAL LATENCY' + ec=2 + elif [ $latency -gt $WARNING_LATENCY ] + then + st='WARNING LATENCY' + ec=1 + else + st=OK + ec=0 + fi + MSG="$PEER : $st (Latency : $latency ms)" + return $ec + fi +} + +states="" +peers="" +nbok=0 +nbcrit=0 +nbwarn=0 +nbunk=0 +nbpeers=O +PEERS="" +DEBUG=0 + +for arg in $@ +do + if [ $( echo $arg|egrep -c '^-[cwCWd][0-9]*$' ) -gt 0 ] + then + a=$( echo $arg|sed 's/^-\([cwCWd]\).*$/\1/' ) + v=$( echo $arg|sed 's/^-[cwCWd]//' ) + case $a in + c) + CRITICAL_PEER_NUMBER=$v + ;; + w) + WARNING_PEER_NUMBER=$v + ;; + C) + CRITICAL_LATENCY=$v + ;; + W) + WARNING_LATENCY=$v + ;; + d) + DEBUG=1 + ;; + esac + else + PEERS="$PEERS $arg" + fi +done + +for PEER in $PEERS +do + let nbpeers=nbpeers+1 + checkPeer "$PEER" + res=$? + states="$states - $MSG" + case $res in + 0) + let nbok=nbok+1 + ;; + 1) + let nbwarn=nbwarn+1 + ;; + 2) + let nbcrit=nbcrit+1 + ;; + 3) + let nbunk=nbunk+1 + ;; + esac + peers="$peers $PEER" +done +STATE=OK +MSG="$nbok peer(s) OK of $nbpeers peers $states|'available peers':$nbok;$WARNING_PEER_NUMBER;$CRITICAL_PEER_NUMBER;0;$nbpeers 'critical peers':$nbcrit;$WARNING_PEER_NUMBER;$CRITICAL_PEER_NUMBER;0;$nbpeers 'unknown peers':$nbunk;$WARNING_PEER_NUMBER;$CRITICAL_PEER_NUMBER;0;$nbpeers 'warning peers':$nbwarn;$WARNING_PEER_NUMBER;$CRITICAL_PEER_NUMBER;0;$nbpeers" +EXITC=0 +if [ $nbok -le $CRITICAL_PEER_NUMBER ] +then + STATE=CRITICAL + EXITC=2 +elif [ $nbok -le $WARNING_PEER_NUMBER ] +then + STATE=WARNING + EXITC=1 +fi +echo "$STATE - $MSG" +exit $EXITC