104 lines
2.4 KiB
Bash
104 lines
2.4 KiB
Bash
#!/bin/bash
|
|
|
|
SNMPCOM=$1
|
|
HOST=$2
|
|
|
|
# Kommawerte: 0.5 1.33 etc
|
|
FAKTOR_WARN=0.5
|
|
FAKTOR_CRIT=0.75
|
|
|
|
RETV=
|
|
RETV_OK=0
|
|
RETV_WARN=1
|
|
RETV_CRIT=2
|
|
|
|
RETM="Load:"
|
|
|
|
CORES=`snmpwalk -c$SNMPCOM -v2c $HOST 1.3.6.1.2.1.25.3.3.1.1 | wc -l`
|
|
CORES_WARN=`echo "$CORES * $FAKTOR_WARN" | bc`
|
|
CORES_CRIT=`echo "$CORES * $FAKTOR_CRIT" | bc`
|
|
|
|
#LOAD_1=`snmpwalk -c$SNMPCOM -v2c $HOST .1.3.6.1.4.1.2021.10.1.3.1 | egrep -wo '[^ ]*$`
|
|
LOAD_1=`snmpwalk -c$SNMPCOM -v2c $HOST .1.3.6.1.4.1.2021.10.1.3.1 | egrep -wo '".*"' | tr -d '"'`
|
|
LOAD_5=`snmpwalk -c$SNMPCOM -v2c $HOST .1.3.6.1.4.1.2021.10.1.3.2 | egrep -wo '".*"' | tr -d '"'`
|
|
LOAD_F=`snmpwalk -c$SNMPCOM -v2c $HOST .1.3.6.1.4.1.2021.10.1.3.3 | egrep -wo '".*"' | tr -d '"'`
|
|
|
|
RETM1_OK="1 min: $LOAD_1 (ok)."
|
|
RETM1_WARN="1 min: $LOAD_1 (warnung)."
|
|
RETM1_CRIT="1 min: $LOAD_1 (kritisch)."
|
|
|
|
RETM5_OK="5 min: $LOAD_5 (ok)."
|
|
RETM5_WARN="5 min: $LOAD_5 (warnung)."
|
|
RETM5_CRIT="5 min: $LOAD_5 (kritisch)."
|
|
|
|
RETMF_OK="15 min: $LOAD_F (ok)."
|
|
RETMF_WARN="15 min: $LOAD_F (warnung)."
|
|
RETMF_CRIT="15 min: $LOAD_F (kritisch)."
|
|
|
|
# 1 minuten werte
|
|
if [ "`echo "$LOAD_1 > $CORES_CRIT" | bc -l`" == "1" ]
|
|
then
|
|
RETV1=2
|
|
RETM="$RETM $RETM1_CRIT"
|
|
elif [ "`echo "$LOAD_1 > $CORES_WARN" | bc -l`" == "1" ]
|
|
then
|
|
RETV1=1
|
|
RETM="$RETM $RETM1_WARN"
|
|
fi
|
|
|
|
# 5 minuten werte
|
|
if [ "`echo "$LOAD_5 > $CORES_CRIT" | bc -l`" == "1" ]
|
|
then
|
|
RETV5=2
|
|
RETM="$RETM $RETM5_CRIT"
|
|
elif [ "`echo "$LOAD_5 > $CORES_WARN" | bc -l`" == "1" ]
|
|
then
|
|
RETV5=1
|
|
RETM="$RETM $RETM5_WARN"
|
|
fi
|
|
|
|
# 15 minuten werte
|
|
if [ "`echo "$LOAD_F > $CORES_CRIT" | bc -l`" == "1" ]
|
|
then
|
|
RETVF=2
|
|
RETM="$RETM $RETMF_CRIT"
|
|
elif [ "`echo "$LOAD_F > $CORES_WARN" | bc -l`" == "1" ]
|
|
then
|
|
RETVF=1
|
|
RETM="$RETM $RETMF_WARN"
|
|
fi
|
|
|
|
# einer der 1/5/15 minute kritisch?
|
|
if [ "$RETV1" == "2" ] || [ "$RETV5" == "2" ] || [ "$RETVF" == "2" ]
|
|
then
|
|
RETV=2
|
|
# einer der 1/5/15 minute auf warnung?
|
|
elif [ "$RETV1" == "1" ] || [ "$RETV5" == "1" ] || [ "$RETVF" == "1" ]
|
|
then
|
|
RETV=1
|
|
# alle werte ok
|
|
else
|
|
RETM="$RETM $RETM1_OK $RETM5_OK $RETMF_OK"
|
|
RETV=0
|
|
fi
|
|
|
|
# setze "Load: " ergebnisse und erklärung zusammen
|
|
RETM="$RETM $CORES Kerne. Warnung > $CORES_WARN (Faktor $FAKTOR_WARN). Kritisch > $CORES_CRIT (Faktor $FAKTOR_CRIT)"
|
|
|
|
if [ "$RETV" == "0" ]
|
|
then
|
|
echo "$RETM"
|
|
exit $RETV_OK
|
|
elif [ "$RETV" == "1" ]
|
|
then
|
|
echo "$RETM"
|
|
exit $RETV_WARN
|
|
elif [ "$RETV" == "2" ]
|
|
then
|
|
echo "$RETM"
|
|
exit $RETV_CRIT
|
|
else
|
|
echo "unknow return value"
|
|
exit 2
|
|
fi
|