En NagiosQL, al definir un servicio a monitorear, especificamente al ingresar un argumento, no permite poner espacios en blanco. Esto da un error al ejecutar el proceso, ya que al encontrar espacios en blanco, asume que es un nuevo argumento. Para solucionar esto se debe definir uno o varios caracteres que indicaran que corresponde a un espacio en blanco y luego en el SCRIPTS ubicado en el equipo a monitorear. Para este ejemplo, definire que la cadena «-b-» corresponde a un espacio en blanco. Luego el script ubicado en el servidor a monitorear, procede a transformar la cadena (proceso) y pone los espacios en blanco donde corresponde.
El siguiente SCRIPT puede utilizarse para monitorear cualquier proceso que este corriendo en un servidor. Utiliza 3 argumentos, el proceso a monitorear, el usuario con que corre el proceso y el minomo y maximo de procesos que corren simultaneamente (Formato min:max) :
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 |
#!/bin/bash # parametro1 Corresponde al proceso a monitorear # parametro2 Corresponde al usuario dueñel proceso a monitorear # parametro3 Corresponde corresponde al minimo y maximo de procesos (min:max) proceso=$1 usuario=$2 minmaxi=$3 # Saca el valor minimo y maximo de proceso a monitorear. min=`echo $minmaxi | cut -d: -f1` max=`echo $minmaxi | cut -d: -f2` #Cambia el patron "-b-" por un espacio en blanco proceso=`sed 's/-b-/ /g' <<< $proceso` # El siguiente comando busca el proceso en que el paarametro2 esta al final y comienza con el usuario # y Cuenta el numero de proceso encontrados ps=`ps -fu $usuario | grep "$proceso" | wc -l"` # Eliminamos los espacios en blanco, delante y detras de la variable num=`echo $ps | sed 's/ //g'` if [ "$num" -ge "$min" ] && [ "$num" -le "$max" ]; then echo "OK - $num Proceso $1 $2 ($3) $4" exit 0 else echo "CRITICAL - $num Proceso $1 $2 ($3) $4" exit 2 fi |