Cómo instalar y administrar Supervisor

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1 – Instalación
  • Paso 2 – Agregar un programa
  • Paso 3 – Administrar programas
  • Conclusión
  • En muchos entornos de VPS, es frecuente que tengas varios programas pequeños que quieras ejecutar de forma persistente, ya sean pequeños scripts de shell, aplicaciones Node.js o cualquier paquete de gran tamaño.

    Por lo general, los paquetes externos se suministran con un archivo de unidad que permite que un sistema de inicio, como systemd, los administre o se empaqueten como imágenes de Docker que pueden administrarse mediante un motor de contenedores. Sin embargo, para el software que no está bien empaquetado o para los usuarios que prefieren no interactuar con un sistema de inicio de bajo nivel en su servidor, es útil tener una alternativa liviana.

    Supervisor es un administrador de procesos que proporciona una interfaz única para administrar y supervisar una serie de programas de larga duración. En este tutorial, instalará Supervisor en un servidor Linux y aprenderá a administrar las configuraciones de Supervisor para múltiples aplicaciones.

    Prerrequisitos

    Para completar esta guía, necesitarás:

    • Un servidor Linux y un usuario no root con privilegios sudo. Puede obtener más información sobre cómo configurar un usuario con estos privilegios en nuestra guía Configuración inicial del servidor con Ubuntu 20.04 .

    Paso 1 – Instalación

    Comience actualizando las fuentes de sus paquetes e instalando Supervisor:

    1. sudo apt update sudo apt install supervisor

    El servicio de supervisión se ejecuta automáticamente después de la instalación. Puede comprobar su estado:

    1. sudo systemctl status supervisor

    Debería recibir el siguiente resultado:

    Output● supervisor.service - Supervisor process control system for UNIX     Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)     Active: active (running) since Wed 2021-11-17 22:56:48 UTC; 5min ago

    Ahora que tenemos instalado Supervisor, podemos comenzar a agregar nuestros primeros programas.

    Paso 2 – Agregar un programa

    Una buena práctica para trabajar con Supervisor es escribir un archivo de configuración para cada programa que manejará.

    Todos los programas que se ejecutan bajo Supervisor deben ejecutarse en un modo sin daemonización (a veces también llamado “modo de primer plano”). Si, de forma predeterminada, su programa regresa automáticamente al shell después de ejecutarse, es posible que deba consultar el manual del programa para encontrar la opción para habilitar este modo, o Supervisor no podrá determinar correctamente el estado del programa.

    Para demostrar la funcionalidad de Supervisor, crearemos un script de shell que no hace nada más que producir una salida predecible una vez por segundo, pero que se ejecutará continuamente en segundo plano hasta que se detenga manualmente. Con nanosu editor de texto favorito, abra un archivo llamado idle.shen su directorio de inicio:

    1. nano ~/idle.sh

    Añade el siguiente contenido:

    ~/idle.sh

    #!/bin/bashwhile truedo # Echo current date to stdoutecho `date`# Echo 'error!' to stderrecho 'error!' 2sleep 1done

    Guarde y cierre el archivo. Si está utilizando nano, presione Ctrl+X, luego, cuando se le solicite, Yy Enter.

    A continuación, haga que su script sea ejecutable:

    1. chmod +x ~/idle.sh

    Los archivos de configuración por programa para los programas Supervisor se encuentran en el /etc/supervisor/conf.ddirectorio, que generalmente ejecuta un programa por archivo y termina en .conf.Crearemos un archivo de configuración para este script, como `/etc/supervisor/conf.d/idle.conf:

    1. sudo nano /etc/supervisor/conf.d/idle.conf

    Añade estos contenidos:

    /etc/supervisor/conf.d/idle.conf

    command=/home/ubuntu/idle.shautostart=trueautorestart=truestderr_logfile=/var/log/idle.err.logstdout_logfile=/var/log/idle.out.log

    Repasaremos esto línea por línea:

    command=/home/ubuntu/idle.sh

    La configuración comienza definiendo un programa con el nombre idley la ruta completa al programa:

    autostart=trueautorestart=true

    Las siguientes dos líneas definen el comportamiento automático del script bajo ciertas condiciones.

    La autostartopción le indica al supervisor que este programa debe iniciarse cuando se inicia el sistema. Si se configura como falso, se requerirá un inicio manual después de cualquier apagado del sistema.

    autorestartdefine cómo debe Supervisor gestionar el programa en caso de que éste salga:

    • falseLe dice al Supervisor que nunca reinicie el programa después de salir.
    • trueLe dice al Supervisor que siempre reinicie el programa después de salir.
    • unexpectedLe indica a Supervisor que solo reinicie el programa si sale con un código de error inesperado (de manera predeterminada, cualquier código que no sea 0 o 2). Para obtener más información sobre los códigos de error, consulte el errnocomando.
    stderr_logfile=/var/log/idle.err.logstdout_logfile=/var/log/idle.out.log

    Las dos últimas líneas definen las ubicaciones de los dos archivos de registro principales del programa. Como lo sugieren los nombres de las opciones, stdout y stderr se dirigirán a las ubicaciones stdout_logfiley stderr_logfilerespectivamente. Los directorios especificados ya deben existir, ya que Supervisor no intentará crear ningún directorio faltante.

    La configuración que hemos creado aquí es una plantilla mínima para un programa Supervisor. La documentación de Supervisor enumera muchas más opciones de configuración opcionales que están disponibles para ajustar la forma en que se ejecutan los programas.

    Una vez creado y guardado nuestro archivo de configuración, podemos informar a Supervisor de nuestro nuevo programa mediante el supervisorctlcomando. Primero le indicamos a Supervisor que busque cualquier configuración de programa nueva o modificada en el /etc/supervisor/conf.ddirectorio con:

    1. sudo supervisorctl reread
    Outputidle: available

    Seguido de indicarle que implemente cualquier cambio con:

    1. sudo supervisorctl update
    Outputidle: added process group

    Cada vez que realice un cambio en cualquier archivo de configuración del programa, al ejecutar los dos comandos anteriores los cambios surtirán efecto.

    En este punto, nuestro programa debería estar ejecutándose. Podemos comprobar su salida consultando el archivo de registro de salida:

    1. sudo tail /var/log/idle.out.log
    OutputSat Nov 20 22:21:22 UTC 2021Sat Nov 20 22:21:23 UTC 2021Sat Nov 20 22:21:24 UTC 2021Sat Nov 20 22:21:25 UTC 2021Sat Nov 20 22:21:26 UTC 2021Sat Nov 20 22:21:27 UTC 2021Sat Nov 20 22:21:28 UTC 2021Sat Nov 20 22:21:29 UTC 2021Sat Nov 20 22:21:30 UTC 2021Sat Nov 20 22:21:31 UTC 2021

    A continuación, cubriremos otros usos de Supervisor.

    Paso 3 – Administrar programas

    Además de ejecutar programas, querrá detenerlos, reiniciarlos o ver su estado. El programa supervisorctl, que usamos en el paso 2 , también tiene un modo interactivo que podemos usar para controlar nuestros programas.

    Para ingresar al modo interactivo, ejecute supervisorctl sin argumentos:

    1. sudo supervisorctl
    Outputidle                      RUNNING    pid 12614, uptime 1:49:37supervisor

    supervisorctlInicialmente, imprimirá el estado y el tiempo de actividad de todos los programas configurados, seguido de su símbolo del sistema. Al ingresar, helpse mostrarán todos los comandos disponibles:

    1. supervisor help
    Outputdefault commands (type help topic):=====================================add    clear  fg        open  quit    remove  restart   start   stop  updateavail  exit   maintail  pid   reload  reread  shutdown  status  tail  version

    Puede hacerlo starto stopun programa con los comandos asociados seguidos del nombre del programa:

    1. supervisor stop idle
    Outputidle: stopped
    1. supervisor start idle
    Outputidle: started

    Usando este tailcomando, puedes ver las entradas más recientes en los registros stdout y stderr de tu programa:

    1. supervisor tail idle
    OutputSun Nov 21 00:36:10 UTC 2021Sun Nov 21 00:36:11 UTC 2021Sun Nov 21 00:36:12 UTC 2021Sun Nov 21 00:36:13 UTC 2021Sun Nov 21 00:36:14 UTC 2021Sun Nov 21 00:36:15 UTC 2021Sun Nov 21 00:36:17 UTC 2021
    1. supervisor tail idle stderr
    Outputerror!error!error!error!error!error!error!

    Usando statuspuedes volver a ver el estado de ejecución actual de cada programa después de realizar cualquier cambio:

    1. supervisor status
    Outputidle                      STOPPED    Nov 21 01:07 AM

    Finalmente, puedes salir de supervisorctl con Ctrl+C o ingresando quiten el indicador:

    1. supervisor quit

    Conclusión

    En este tutorial, aprendió a instalar y administrar Supervisor. Como se mencionó, Supervisor es muy liviano según los estándares modernos, pero sigue recibiendo un buen mantenimiento y puede ser una herramienta útil para implementaciones más pequeñas. También es una forma autónoma y de bajo mantenimiento de generar registros como parte de un componente de una implementación más grande.

    Si está ejecutando varias aplicaciones pequeñas que necesitan ser accesibles desde la web, es posible que también desee leer sobre cómo configurar Nginx como un proxy inverso , que es otro componente fundamental de las implementaciones pequeñas y reutilizables.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

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

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion