lunes, 29 de septiembre de 2014

Supervisor (watchdog) simple para monitorear un servicio apache.

Con este watchdog simple podemos reiniciar el servicio apache si fuese necesario, de igual forma podemos si fuese necesario realizar acciones como notificar a un usuario o algo por el estilo, pero en este ejemplo reiniciaremos apache.

Herramientas

  1. curl.
  2. Acceso a un usuario con privilegios para reiniciar el demonio apache (root por ejemplo).
  3. cron

Aclaratoria.

Existen muchas herramientas que pueden realizar este proceso y de manera sofisticada, ahorita mismo se me ocurre nagios, pero en mi caso lo que necesito es bastante simple, verificar conexión con el sitio y sino hay simplemente reiniciar el servicio apache
Aclarado lo anterior comenzamos:
El procedimiento es relativamente simple:
  1. Crear un archivo vamos a llamarlo watchdog.sh
  2. Colocar el siguiente contenido dentro del archivo:
    #!/bin/bash
    # Colocar el host que desean aquí:
    HOST='http://localhost' 
    curl=/usr/bin/curl
    $curl $HOST > /dev/null 2>&1
    if [ "$?" -ne "0"  ]; then
            echo "Hay que reiniciar"
            service apache2 restart
            exit 0
    fi
    echo "Todo ok"
    
  3. Crear una tarea en cron que cada cierto tiempo revise si está corriendo nuestro servicio apache:
    */5 * * * * /path/to/watchdog.sh 2>&1  | /usr/bin/logger -t CHECK_WATCH
Esto hará que nuestro script se ejecute cada 5 minutos y chequee con curl la respuesta desde el host. De no ser 0 (error estándar cuando todo se ejecuta correctamente) reiniciará el servicio apache.

No hay comentarios:

Publicar un comentario