Configuración de un proceso en 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 valorunexpected
indica que solo se debe reiniciar cuando se produce un exitcode distinto a los autorizados, y el valorfalse
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