Como Instalar supervisor en Ubuntu y Debian

Mantener un servicio operando y monitorear su estado es una tarea que podría parecer complicada y requerir de otros sistemas para probar el servicio, emitir alertas, reactivar las treas o demas aspectos que un sistema cliente/servidor llamado supervisor puede simplificar de forma muy eficiente y aquí te digo como instalar supervisor en Ubuntu y Debian.

Como Instalar supervisor en Ubuntu y Debian

Comencemos por ver qué es supervisor. En el sitio oficial del proyecto podemos encontrar la siguiente definición:

«Supervisor es un sistema cliente/servidor que permite a sus usuarios monitorear y controlar un número de procesos en sistemas operativos typo UNIX.

Comparte algunos de los objetivos de programas como launchd, daemontolls y runit. Pero a diferencia de estos programas, no significa que se tenga que ejecutar como un substituto de init como el «proceso con id 1″. En vez de esto, se busca usarlo para controlar los procesos relacionados a un proyecto o a un cliente y así iniciarlos como cualquier otro programa al momento de arrancar el sistema.»

En resumen, supervisor es un gestor de procesos que facilita el manejo de un número de programas o procesos en ejecución por largo tiempo y lo convierte hace una tarea trivial al proveer una interfaz consistente mediante la cual, esos procesos se pueden monitorear y controlar.

Instalar supervisor en Ubuntu y Debian

Para instalar supervisor en Ubuntu o en Debian solo debes acudir a los repositorios ya que está disponible para instalarlo mediante un paquete .deb dentro del repositorio de la distribución. Puedes utilizar el comando apt para instalarlo, así:

apt install supervisor

Recuerda que si usas una versión anterior a Debian 9 o anterior a Ubuntu 16.04 debes utilizar el comando apt-get.

Una vez que se ha instalado debes iniciar el servicio mediante el comando systemctl

systemctl start supervisor

De igual forma si estas utilizando una versión anterior a las mencionadas puedes utilizar el comando «service supervisor start». Cuando supervisor esté funcionando, puedes agregar el primer programa a monitorear/gestionar.

Ejecutar un programa indefinidamente

Haremos un pequeño programa para demostrar el uso de supervisor al mantener un pequeño script monitoreado y gestionado con supervisor. Primero crearemos un archivo con el que imprimiremos la fecha y hora cada segundo y si existiera un error mandaríamos una texto a la salida stderr.

Crearemos el script en /usr/local/bin/fecha_continua.sh, cabe aclarar que este script no tiene relevancia, solo se utiliza para mostrar el uso de supervisor para gestionarlo.

#!/bin/bash
while true do
       # Muestra la fecha actual en la salida stdout
       echo `date`
       # Muestra 'error!' en stderr
       echo 'error!' >&2
       sleep 1
done

Luego se le deben otorgar permisos de ejecución a este archivo.

chmod 755 /usr/local/bin/fecha_continua.sh

Así podrá ser ejecutado por cualquier usuario del sistema.

Configurar surpervisor para monitorear un programa

supervisor utilizar archivos de configuración para poder gestionar el monitoreo de procesos y programas, estos archivos se encuentran en la ruta /etc/supervisor/conf.d y normalmente se utiliza un archivo de configuración por proceso a monitorear, estos archivos deben terminar con la extensión .conf

Para gestionar el script fecha_continua.sh podemos crear un archivo llamado fecha_confinua.conf que se ubique en la ruta mencionada en el párrafo anterior. Para este ejemplo asumiremos que el script envía el log de eventos a los archivos /var/log/fecha.err.log y /var/log/fecha.out.log

nano /etc/supervisor/conf.d/fecha_confinua.conf

y agregaremos una cuantas lineas que permiten su gestión:

[program:fecha_continua]
command=/usr/local/bin/fecha_confinua.conf
autostart=true
autorestart=true
stderr_logfile=/var/log/fecha.err.log
stdout_logfile=/var/log/fecha.out.log

Analizando el contenido del archivo de configuración podemos mencionar que la primera linea asigna un nombre para el programa que se va a monitorear, la segunda linea muestra la ruta completa del programa.

autostart=true
autorestart=true

Las dos líneas siguientes define el comportamiento automatizado que deberá mantener supervisor para este programa. La primera, autostart indica que el programa debe ser iniciado cuando arranque el sistema de forma automática, si esta configuración es puesta a false el programa debe ser arrancado de forma manual.

La segunda es autorestart, esta configuración define el comportamiento de supervisor cuando el programa termine. Los valores posibles son los siguientes:

false .- El programa no será reiniciado por supervisor al momento de que termine su ejecución de forma normal.

true .- El programa será reiniciado siempre, en cuanto se detecte que ha terminado de forma normal el programa será ejecutado de nuevo por supervisor.

unexpected .- El programa solo será reiniciado por supervisor si al terminar el programa se devuelve un estado no esperado de error, es decir, siempre que sea diferente de 0 (cero) o 2 (dos)

stderr_logfile=/var/log/fecha.err.log
stdout_logfile=/var/log/fecha.out.log

Las dos últimas líneas especifican los archivos donde se registran los logs de sucesos, la salida estándar y la salida de error estándar. Estos dos archivos deben existir antes de iniciar el programa.

Una vez que esté listo el archivo de configuración para el programa podemos comenzar a monitorear/gestionar nuestro programa de fechas. Primero vamos a recargar la configuración:

supervisorctl reread

Luego vamos a ejecutar cualquier cambio realizado en la configuración mediante

supervisorctl update

Una vez ejecutados los comandos la configuración será cargada y puesta en marcha por lo que deberíamos tener en ejecución el script. Para comprobarlo podríamos ver el estado del log y debería mostrar algo como esto:

$ tail /var/log/long.out.log
Sat Oct 21 22:21:22 UTC 2017
Sat Oct 21 22:21:23 UTC 2017
Sat Oct 21 22:21:24 UTC 2017
Sat Oct 21 22:21:25 UTC 2017
Sat Oct 21 22:21:26 UTC 2017
Sat Oct 21 22:21:27 UTC 2017
Sat Oct 21 22:21:28 UTC 2017
Sat Oct 21 22:21:29 UTC 2017
Sat Oct 21 22:21:30 UTC 2017
Sat Oct 21 22:21:31 UTC 2017

 

This entry was posted in Debian and tagged , , . Bookmark the permalink.

Deja una respuesta

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


*