check_interface_load.sh for openwrt
* fixed to eth0 only * no redirections * echo instead of heredocs
This commit is contained in:
parent
d5d40bbd90
commit
612b9d2f62
|
@ -0,0 +1,157 @@
|
||||||
|
#!/bin/ash
|
||||||
|
# set -x
|
||||||
|
START=`date +%s`
|
||||||
|
#INTERFACES=`ls /sys/class/net/`
|
||||||
|
|
||||||
|
|
||||||
|
while getopts "w:c:h" OPT; do
|
||||||
|
case $OPT in
|
||||||
|
"w") warn=$OPTARG;;
|
||||||
|
"c") crit=$OPTARG;;
|
||||||
|
"h") help;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
WARNING=$(echo "$warn * 1000000" | bc)
|
||||||
|
CRITICAL=$(echo "$crit * 1000000" | bc)
|
||||||
|
|
||||||
|
#which iftop > /dev/null 2>&1
|
||||||
|
#if [ $? != 0 ]; then
|
||||||
|
# echo "Iftop not installed"
|
||||||
|
# exit 1
|
||||||
|
#fi
|
||||||
|
|
||||||
|
IFTOP="/usr/bin/iftop"
|
||||||
|
PERFDATA=""
|
||||||
|
overloaded=""
|
||||||
|
ex_st=0
|
||||||
|
int=0
|
||||||
|
int_ol=0
|
||||||
|
for i in eth0;
|
||||||
|
do
|
||||||
|
#IF_UP=`cat /sys/class/net/$i/operstate`
|
||||||
|
if [ -e "/sys/class/net/$i/operstate" ]; then
|
||||||
|
IF_UP=`cat /sys/class/net/$i/operstate 2>&1`
|
||||||
|
else
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if [ $IF_UP == "up" ] || [ $IF_UP == "unknown" ]; then
|
||||||
|
INTERFACE=$i
|
||||||
|
TMP_FILE="/tmp/int_${INTERFACE}_cache"
|
||||||
|
|
||||||
|
$IFTOP -i $INTERFACE -n -t -s 2 > $TMP_FILE 2>&1
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
rm -f $TMP_FILE
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
##### TOTAL ########
|
||||||
|
TOTAL=`cat $TMP_FILE | grep -i 'Total send and receive rate'| awk -F ":" '{print $2}'| awk '{print $1}'`
|
||||||
|
####################
|
||||||
|
##### SEND RATE ####
|
||||||
|
SEND=`cat $TMP_FILE | grep -i 'Total send rate'| awk -F ":" '{print $2}'| awk '{print $1}'`
|
||||||
|
###################
|
||||||
|
#### REC RATE #####
|
||||||
|
REC=`cat $TMP_FILE | grep -i 'Total receive rate'| awk -F ":" '{print $2}'| awk '{print $1}'`
|
||||||
|
##################
|
||||||
|
rm -f $TMP_FILE 2>&1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
metric=`echo "$TOTAL" | grep -Eo '[[:alpha:]]+'`
|
||||||
|
TOTAL=${TOTAL/${metric}}
|
||||||
|
TOTAL=`echo "$TOTAL" | sed 's/,/./'`
|
||||||
|
|
||||||
|
if [ $metric == "Mb" ]; then
|
||||||
|
TOTAL=$(echo "$TOTAL * 1000000" | bc)
|
||||||
|
elif [ $metric == "Kb" ]; then
|
||||||
|
TOTAL=$(echo "$TOTAL * 1000" | bc)
|
||||||
|
elif [ $metric == "b" ]; then
|
||||||
|
TOTAL=$TOTAL
|
||||||
|
else
|
||||||
|
TOTAL=$TOTAL
|
||||||
|
fi
|
||||||
|
TOTAL=${TOTAL%.*}
|
||||||
|
|
||||||
|
metric=`echo "$SEND" | grep -Eo '[[:alpha:]]+'`
|
||||||
|
SEND=${SEND/${metric}}
|
||||||
|
SEND=`echo "$SEND" | sed 's/,/./'`
|
||||||
|
|
||||||
|
if [ $metric == "Mb" ]; then
|
||||||
|
SEND=$(echo "$SEND * 1000000" | bc)
|
||||||
|
elif [ $metric == "Kb" ]; then
|
||||||
|
SEND=$(echo "$SEND * 1000" | bc)
|
||||||
|
elif [ $metric == "b" ]; then
|
||||||
|
SEND=$SEND
|
||||||
|
else
|
||||||
|
SEND=$SEND
|
||||||
|
fi
|
||||||
|
SEND=${SEND%.*}
|
||||||
|
|
||||||
|
metric=`echo "$REC" | grep -Eo '[[:alpha:]]+'`
|
||||||
|
REC=${REC/${metric}}
|
||||||
|
REC=`echo "$REC" | sed 's/,/./'`
|
||||||
|
|
||||||
|
if [ $metric == "Mb" ]; then
|
||||||
|
REC=$(echo "$REC * 1000000" | bc)
|
||||||
|
elif [ $metric == "Kb" ]; then
|
||||||
|
REC=$(echo "$REC * 1000" | bc)
|
||||||
|
elif [ $metric == "b" ]; then
|
||||||
|
REC=$REC
|
||||||
|
else
|
||||||
|
REC=$REC
|
||||||
|
fi
|
||||||
|
REC=${REC%.*}
|
||||||
|
|
||||||
|
if [ -z $TOTAL ] ; then
|
||||||
|
TOTAL=0
|
||||||
|
fi
|
||||||
|
if [ $TOTAL -ge $CRITICAL ]; then
|
||||||
|
overloaded="$overloaded $INTERFACE"
|
||||||
|
int_ol=$(echo "$int_ol + 1" | bc)
|
||||||
|
ex_st=2
|
||||||
|
elif [ $TOTAL -lt $CRITICAL ] && [ $TOTAL -ge $WARNING ]; then
|
||||||
|
overloaded="$overloaded $INTERFACE"
|
||||||
|
int_ol=$(echo "$int_ol + 1" | bc)
|
||||||
|
if [ $ex_st -eq 0 ]; then
|
||||||
|
ex_st=1
|
||||||
|
fi
|
||||||
|
elif [ $TOTAL -le $WARNING ]; then
|
||||||
|
if [ $ex_st -eq 0 ]; then
|
||||||
|
ex_st=0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo 0 > /dev/null
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
int=$(echo "$int + 1" | bc)
|
||||||
|
PERFDATA="$PERFDATA Total_$INTERFACE=${TOTAL};${WARNING};${CRITICAL};0;${CRITICAL} Send_$INTERFACE=${SEND}; Receive_$INTERFACE=${REC};"
|
||||||
|
|
||||||
|
elif [ $IF_UP == "down" ]; then
|
||||||
|
echo 0 > /dev/null
|
||||||
|
else
|
||||||
|
echo 0 > /dev/null
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
END=`date +%s`
|
||||||
|
EXEC_TIME=$(($END-$START))
|
||||||
|
PERFDATA="$PERFDATA ExecTime=$EXEC_TIME;"
|
||||||
|
|
||||||
|
if [ $ex_st -eq 0 ]; then
|
||||||
|
echo "OK: $int interfaces under expected load | $PERFDATA"
|
||||||
|
exit $ex_st
|
||||||
|
|
||||||
|
elif [ $ex_st -eq 1 ]; then
|
||||||
|
echo "Warning: $int_ol overloaded interfaces ($overloaded); $int interfaces OK | $PERFDATA"
|
||||||
|
exit $ex_st
|
||||||
|
elif [ $ex_st -eq 2 ]; then
|
||||||
|
echo "Critical: $int_ol overloaded interfaces ($overloaded); $int interfaces OK | $PERFDATA"
|
||||||
|
exit $ex_st
|
||||||
|
else
|
||||||
|
echo "Unknown: $int_ol overloaded interfaces ($overloaded). $int interfaces OK | $PERFDATA"
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in New Issue