Files
scripts/Linux Nagios Plugins/check_load_linux_v2.sh
2024-10-14 00:08:40 +02:00

104 lines
2.3 KiB
Bash

#!/bin/bash
SNMPCOM=$1
HOST=$2
# Kommawerte: 0.5 1.33 etc
FAKTOR_WARN=0.8
FAKTOR_CRIT=1
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_5=`snmpwalk -c$SNMPCOM -v2c $HOST .1.3.6.1.4.1.2021.10.1.3.2 | egrep -wo '[^ ]*$'`
LOAD_F=`snmpwalk -c$SNMPCOM -v2c $HOST .1.3.6.1.4.1.2021.10.1.3.3 | egrep -wo '[^ ]*$'`
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