jueves, 22 de mayo de 2014

Monitoreando Procesos Zombies

Verificamos que no hay zombies:

root@server # ps -el |grep 'Z'
 F S    UID   PID  PPID   C PRI NI     ADDR     SZ    WCHAN TTY         TIME CMD
root@server #


Armamos un zombie en C:

root@server # vi zombie.c
#include
#include
#include
int main ()
{
  pid_t child_pid;
  child_pid = fork ();
  if (child_pid > 0) {
    sleep (60);
  }
  else {
    exit (0);
  }
  return 0;
}


Lo compilamos:

root@server # /usr/sfw/bin/gcc zombie.c


Lo ejecutamos:

root@server # ./a.out


Verificamos que ahora está el zombie: ()

root@server # ps -el |grep 'Z'
 F S    UID   PID  PPID   C PRI NI     ADDR     SZ    WCHAN TTY         TIME CMD
 0 Z      0 17100 17099   0   0  -        -      0        - ?           0:00
root@server #


Creamos un script para testear zombies con nagios:

root@server # vi check_zombie
#!/bin/bash
CANT_ZOMBIES=`ps -el |grep 'Z'|grep -v PPID|wc -l`
#echo $CANT_ZOMBIES
if [ $CANT_ZOMBIES -eq 0 ]
then
 echo "$CANT_ZOMBIES Zombies"
 exit 0
fi
if [ $CANT_ZOMBIES -eq 1 ]
then
 echo "$CANT_ZOMBIES Zombies"
 exit 1
fi
echo "$CANT_ZOMBIES Zombies"
exit 2


En la config del NRPE agregamos lo siguiente:

root@server # vi /usr/local/nagios/etc/nrpe.cfg
command[check_zombie_procs]=/usr/local/nagios/libexec/check_zombie

Matamos el nrpe:

root@server # ps -efa |grep nrpe
  nagios 18369     1   0 13:02:52 ?           0:00 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
    root 18543 15868   0 13:06:54 pts/1       0:00 grep nrpe
root@server # kill -9 18369

Volvemos a iniciarlo:

root@server # /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d


No hay comentarios: