Este script esta pensado para ser utilizado en la consola NAGIOS (Salidas EXIT x). Verifica un proceso corriendo y calcula la memoria RAM que esta siendo utilizada. Si la memoría sobrepasa el umbral critico (15.000 Kb.), el proceso es bajado (kill -9) y ejecutado nuevamente. Tambien se va controlando la cantidad de veces que se ejecuta este procedimiento. Si es ejecutado tres veces y no logra solucionar el problema, no continua tratando de reiniciar el proceso, informado que debe reportarse. Se puede adaptar a cualquier monitoreo que se requiera realizar.-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#!/bin/bash critico=15000 warning=10000 proceso=loop.sh status=0 suma=0 num=0 control=estado.txt # Si el proceso no corre arroja status 3 verifica=`ps -e -o vsz=Kbytes -o ruser -o pid,args=Command-Line | grep -v grep | grep $proceso | wc -l` if [ $verifica -lt 1 ]; then echo $suma KBytes UNKNOWN No esta corriendo Proceso=$proceso exit 3 fi while read linea do memoria=`echo $linea | cut -d " " -f 1` suma=`expr $suma + $memoria` done <<< "$(ps -e -o vsz=Kbytes -o ruser -o pid,args=Command-Line | grep -v grep | grep $proceso)" if [ "$suma" -gt "$critico" ]; then if [ -f $control ]; then num=`cat $control` else echo 0 > $control fi if [ "$num" = "3" ]; then echo $suma KBytes critico=$critico Proceso=$proceso $num Intento **REPORTARLO** exit 2 fi kill -9 `ps -fea | grep $proceso | grep -v grep | awk '{print $2}'` > /dev/null 2>&1 bash $proceso & num=`expr $num + 1` echo $num > $control echo $suma KBytes Critico=$critico Proceso=$proceso $num Intento exit 2 fi if [ "$suma" -gt "$warning" ]; then echo $suma KBytes Warning=$warning Proceso=$proceso exit 1 fi echo $suma KBytes Normal Proceso=$proceso if [ -f $control ]; then rm -f "$control" fi exit 0 |