Configuración de un proceso en Supervisor

Author
By Darío Rivera
Posted on 2020-06-26 in Supervisor

Supervisor es un sistema cliente/servidor utilizado en sistemas UNIX para el control de procesos del sistema operativo. Hace algunos meses realizamos una introducción a supervisor, en donde vimos algunas de sus características principales y en dos artículos anteriores abordamos la instalación del mismo.

Instalación y configuración de Supervisor en MacOS
Instalación y configuración de Supervisor en GNU/Linux Debian

El día de hoy veremos cómo crear un nuevo proceso y configurarlo.

Creación de un proceso

Para crear un proceso deberás crear un archivo en la carpeta de procesos del supervisor (puedes revisar nuestros tutoriales de instalación para encontrar dicha carpeta) con el siguiente contenido.

[program:nombredelproceso]
command=/el/archivo/ejecutable
process_name=%(program_name)s
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=true
startsecs=10
startretries=3
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
user=www-data
redirect_stderr=false
stdout_logfile=/var/log/supervisor/nombredelproceso.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/supervisor/nombredelproceso-error.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
serverurl=AUTO

En donde:

command
La ruta del ejecutable que deberá correr el supervisor.
numprocs
Número de procesos que es deseable que esten ejecutando a la vez.
directory
Establece el directorio desde el cual se ejecutará el comando.
umask
Especifica la umask con la que se lanza el proceso.
autostart
Especifica si el servicio se debe iniciar automáticamente cuando el supervisor inicie.
autorestart
Define el comportamiento cuando se requiere reiniciar el servicio. El valor true indica que siempre se debe intentar reiniciar. El valor unexpected indica que solo se debe reiniciar cuando se produce un exitcode distinto a los autorizados, y el valor false indica que nunca se debe reiniciar el servicio.
exitcodes
Define los códigos de autoreinicio.
startsecs
Establece el número de segundos que deben pasar para que el servicio se considere como lanzado correctamente.
startretries
Número de reintentos para iniciar el servicio antes de que se considere como fallido.
stopsignal
Define la señal que se envía al proceso cuando se hace un stop mediante el comando supervisorctl.
user
Establece el usuario con el que se lanza el proceso.
environment
Variables de entorno que se cargarán en la ejecución del servicio.
redirect_stderr
Redirige la salida de los errores al log propio de supervisord en vez de al individual del servicio.

Una vez agregado el servicio debemos recargar la configuración del supervisor.

supervisorctl reload 

Hecho esto, para ver el estado de los procesos en el supervisor podemos utilizar el siguiente comando:

supervisorctl status

Finalmente para parar un servicio podemos utilizar el comando.

supervisorctl stop nombredelproceso

Si te ha gustado este artículo puedes invitarme a tomar una taza de café

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

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