Supervisor, el gestor de procesos para sistemas UNIX

Author
Por Darío Rivera
Publicado el en Supervisor

Supervisor es un sistema cliente/servidor utilizado en sistemas UNIX para controlar los procesos del sistema operativo. Una de las ventajas más importantes de Supervisor es que permite reiniciar automáticamente un servicio después de que se haya bloqueado. Supervisor también permite configurar un número de intentos de reintento antes de considerar que el servicio está inactivo, además de permitir definir la prioridad de inicialización de los procesos, entre otras cosas que facilitan la gestión de procesos.

Principales características de Supervisor

1. Monitoreo de procesos: Supervisor supervisa continuamente el estado de los procesos gestionados, rastreando su salud y utilización de recursos.
2. Reinicio automático: Si un proceso gestionado se bloquea o se cierra inesperadamente, Supervisor puede reiniciarlo automáticamente, asegurando una alta disponibilidad.
3. Agrupación de procesos: Supervisor permite agrupar procesos, lo que facilita el control y monitoreo conveniente de procesos relacionados como una unidad única.
4. Registro y notificaciones: Proporciona capacidades de registro exhaustivas para registrar eventos de procesos, y puede enviar notificaciones basadas en reglas predefinidas.
Gestión de configuración: Los archivos de configuración de Supervisor permiten una gestión sencilla de los procesos, incluyendo la especificación de comandos de inicio, variables de entorno y límites de recursos.

Aplicaciones

Una de las cosas interesantes que puedes gestionar con Supervisor es la gestión de procesos del servidor web.

Supongamos que tienes una aplicación web que consta de varios componentes del servidor. Con Supervisor, puedes asegurarte de que todos los procesos necesarios estén en ejecución y reiniciarlos si se bloquean.

Aqui un ejemplo del archivo de configuración de supervisor, llamado webserver.conf:

[program:webapp]
command=/usr/bin/python3 /path/to/webapp.py
directory=/path/to/webapp
user=webapp_user
autostart=true
autorestart=true
redirect_stderr=true

En este ejemplo, Supervisor gestiona una aplicación web basada en Python. Especifica el comando de inicio, el directorio de trabajo, el usuario bajo el cual debe ejecutarse el proceso y habilita reinicios automáticos si el proceso se bloquea.

Otra aplicación interesante es la gestión de procesos de trabajadores. Supongamos que tienes un sistema de procesamiento de tareas en segundo plano que depende de varios procesos de trabajadores. Puedes utilizar Supervisor para asegurarte de que los trabajadores estén siempre en ejecución y recuperarse de fallos.

Consideremos el siguiente archivo de configuración de Supervisor llamado worker.conf:

[program:worker1]
command=/usr/bin/python3 /path/to/worker.py
process_name=%(program_name)s_%(process_num)02d
numprocs=4
numprocs_start=1
autostart=true
autorestart=true
redirect_stderr=true

En este ejemplo, Supervisor gestiona cuatro procesos de trabajadores. Utiliza las directivas numprocs y numprocs_start para especificar el número y el índice de inicio de los procesos. La directiva process_name permite que cada trabajador tenga un identificador único.

Consulta nuestras guías de instalación haciendo clic en los siguientes enlaces.

- Instalación de Supervisor en MacOS
- Instalación de Supervisor en Debian


Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.