BASH – Script para controlar memoria de un proceso.

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.-

#!/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
Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *