LINUX

Supervisor: supervise sus servidores y procesos Linux

supervisor de monitoreo linux

Algunos usuarios solo necesitan controlar el estado del proceso y no quieren ni necesitan acceso de shell completo a la máquina en la que se ejecutan los procesos. A menudo, no necesitan conocer los procesos que escuchan en puertos TCP «bajos» y, a menudo, deben iniciarse y reiniciarse como usuario root. Hay procesos que a menudo deben iniciarse y detenerse en grupos, a veces en función de un orden de prioridad. Un supervisor de nombre de herramienta ayuda a los usuarios a administrar sus procesos en su servidor y monitorear cada proceso o grupo de procesos.

¿Qué es supervisor?

Supervisor es un sistema cliente / servidor que permite a sus usuarios controlar una serie de procesos en sistemas operativos tipo Linux y UNIX. Los procesos se pueden agrupar en «Grupos de procesos» y un conjunto de procesos relacionados lógicamente se puede detener e iniciar como una unidad. Inicia sus subprocesos a través de fork / exec y los subprocesos no se demonizan. El sistema operativo envía una señal al Supervisor inmediatamente cuando termina un proceso.

El supervisor se basa en cuatro componentes:

  • supervisor: Es la pieza del servidor que es responsable de iniciar los programas secundarios en su propia invocación, responder a los comandos de los clientes, reiniciar los subprocesos bloqueados o salidos.
  • supervisorctl: es la pieza del cliente de línea de comandos que proporciona una interfaz similar a un shell para las funciones proporcionadas por supervisor. Un usuario puede conectarse a diferentes procesos de supervisión, obtener el estado de los subprocesos controlados por, detener e iniciar subprocesos y obtener listas de procesos en ejecución de un supervisor.
  • un servidor web: es una interfaz de usuario web (escasa) con una funcionalidad comparable a supervisorctl se puede acceder a través de un navegador si inicia supervisord contra un enchufe de Internet
  • una interfaz XML-RPC: el mismo servidor HTTP que sirve a la interfaz de usuario web ofrece una interfaz XML-RPC que se puede utilizar para interrogar y controlar al supervisor y los programas que ejecuta

La herramienta de supervisor le permite asignar prioridades a los procesos y permite al usuario emitir comandos a través del cliente supervisorctl como «Empezar todo», y «Reiniciar todo», que los inicia en el orden de prioridad preasignado. Está escrito completamente en Python y la versión real utilizada es 3.2.1. El supervisor no funciona en Python 3

1) Instalar supervisor

Supervisor ofrece la posibilidad de ser instalado pero te mostraré la instalación a través de paquetes de distribución.

En centos 7

# yum install epel-release -y && yum update
# yum install supervisor
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.linode.com
 * epel: fedora-epel.mirrors.tds.net
 * extras: mirrors.linode.com
 * updates: mirrors.linode.com
Resolving Dependencies
--> Running transaction check
---> Package supervisor.noarch 0:3.1.4-1.el7 will be installed
--> Processing Dependency: python-meld3 >= 0.6.5 for package: supervisor-3.1.4-1.el7.noarch
--> Processing Dependency: python-setuptools for package: supervisor-3.1.4-1.el7.noarch

En Ubuntu 16.04

# apt update && apt upgrade
# apt install supervisor
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following additional packages will be installed:
 python-meld3 python-pkg-resources
Suggested packages:
 python-setuptools supervisor-doc
The following NEW packages will be installed:
 python-meld3 python-pkg-resources supervisor
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 392 kB of archives.

2) Comience con el supervisor de la herramienta de monitoreo

El archivo de configuración del supervisor es /etc/supervisord.conf. Se utiliza tanto para supervisor y supervisorctl comandos.

a) Configurar el servidor web supervisor

El archivo de configuración del supervisor contiene dos secciones denominadas [unix_http_server] y [inet_http_server] bajo el cual tenemos parámetros de configuración para un servidor HTTP que escucha en un dominio UNIX y se deben insertar sockets TCP (Internet). Tus secciones deberían verse como a continuación

# vim /etc/supervisor.conf
[unix_http_server]
file=/var/run/supervisor/supervisor.sock ; (the path to the socket file)
;chmod=0700 ; sockef file mode (default 0700)
;chown=nobody:nogroup ; socket file uid:gid owner
;username=user ; (default is no username (open server))
;password=123 ; (default is no password (open server))

[inet_http_server] ; inet (TCP) server disabled by default
port=server-ip-address:9001 ; (ip_address:port specifier, *:port for all iface)
username=user ; (default is no username (open server))
password=123 ; (default is no password (open server))

b) Agregar un programa para monitorear

Antes El supervisor hará todo lo que necesite para agregar al menos una programa sección a su configuración para que pueda monitorear el programa en sí. los programa La sección definirá un programa que se ejecuta y administra cuando se invoca el comando supervisor. Entonces, para agregar un programa, editaremos el archivo de configuración y agregaremos al final, por ejemplo, el siguiente comando:

# vim /etc/supervisord.conf
[program:cat-command]
command=/bin/cat ; the program (relative uses PATH, can take args)
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)

[program:apache2]
command=/usr/sbin/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
redirect_stderr=true

c) Iniciar supervisor

Para iniciar supervisord, ejecutaremos supervisord mando. Por primera vez, puede utilizar el -n opción para iniciarlo en primer plano, que es útil para depurar problemas de inicio y la -c bandera para indicar la ruta completa del archivo de configuración. El proceso resultante se demonizará a sí mismo y se desconectará de la terminal. Mantiene el registro de operaciones en /var/log/supervisor/supervisord.log por defecto. Si no usa el -c, el supervisor primero buscará la configuración en la carpeta actual

# supervisord -c /etc/supervisord.conf

Ahora podemos verificar el archivo de registro del supervisor

# tail -f /var/log/supervisor/supervisord.log 
2017-09-07 08:30:53,725 INFO daemonizing the supervisord process
2017-09-07 08:30:53,726 INFO supervisord started with pid 789
2017-09-07 08:30:54,729 INFO spawned: 'cat-command' with pid 790
2017-09-07 08:30:54,731 INFO spawned: 'apache2' with pid 791
2017-09-07 08:30:55,805 INFO success: cat-command entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-09-07 08:30:55,807 INFO spawned: 'apache2' with pid 794

Podemos ver que comienza. Si usa el -n opción, el supervisor se iniciará en primer plano y deberá enviarlo en segundo plano para controlar su terminal

3) Monitorear sus procesos con supervisor

Podemos utilizar la interfaz web para gestionar los procesos con el supervisor o podemos utilizar elsupervisorctl línea de comando. Hemos configurado dos procesos, pero un proceso no funciona bien, así que veremos cómo el supervisor verificará nuestros procesos.

a) Monitorear el proceso con supervisorctl

supervisorctl usa algunos comandos básicos para administrar sus procesos: detener, iniciar, estado, reiniciar, recargar, cola, etc. Para administrar su proceso, use el comando supervisorctl

# supervisorctl status
apache2 FATAL Exited too quickly (process log may have details)
cat-command RUNNING pid 790, uptime 0:02:52

Puede ver que el comando cat funciona bien, pero el comando apache no lo hace y tenemos un retorno.

Puede reiniciar el proceso con el siguiente comando

# supervisorctl restart all
cat-command: stopped
cat-command: started
apache2: ERROR (abnormal termination)

b) Monitorear los procesos a través de la interfaz web

los [inet_http_server] sección es la que se utiliza para acceder a la interfaz web. Recuerde que contiene debe verse como a continuación, pero puede usar otro nombre de usuario y contraseña

[inet_http_server] ; inet (TCP) server disabled by default
port=server-ip-address:9001 ; (ip_address:port specifier, *:port for all iface)
username=user ; (default is no username (open server))
password=123 ; (default is no password (open server))

Ahora puede abrir su navegador web e ingresar la dirección IP de su servidor con el puerto como se muestra a continuación

Puede ver que puede reiniciar, detener o ver los registros.

Hemos visto cómo podemos monitorear nuevos procesos con supervisor, lo cual puede ser útil para usuarios que no necesitan controlar el servidor en sí, pero que solo necesitan monitorear si el proceso que necesitan se inicia o no para que puedan para reiniciarlo si es necesario. Cuando agrega nuevos procesos, debe usar el comando releer y actualizar del comando supervisorctl para que el supervisor lo agregue en los procesos actuales.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar