Monitoree el progreso del programa en múltiples servidores


9

Tenemos tres servidores que ejecutan programas de Python que ejecutan tareas de análisis de datos dentro de una tmuxsesión. El método que estamos utilizando en este momento consiste en conectar cada uno de ellos conectando la tmuxsesión y observando la salida en la línea de comando.

Este método es tedioso, por lo que estamos buscando una solución que automatice el monitoreo del progreso del programa (salida en CLI) para múltiples servidores al mismo tiempo. Idealmente, nos gustaría una solución de interfaz de usuario web, pero una CLI también sería perfectamente adecuada.

Gracias por leer.


Respuestas:


8

Cada vez que ejecute comandos ad-hoc de ejecución prolongada, debe retroceder y repensar su proceso, ya que eso debe ser automático, incluido el manejo de errores.

En lugar de conectarse a los servidores para ver el estado, un mejor enfoque es sacar esa información. Puede hacer una gran variedad de cosas si desea escribir un montón de código personalizado, pero lo más simple es probablemente comenzar a enviar la salida a través de syslog a un sistema de registro centralizado (syslog o ELK, o lo que sea). De esa manera puede monitorear todo desde una ubicación central.

Mirando hacia el futuro, si esto no es una tarea única, el monitoreo debe ser automatizado. Es decir, nunca debería tener que mirar los registros para ver si las cosas progresan como se supone que deben hacerlo. En su lugar, debe asumir que son (y continuar con otro trabajo) hasta que se dispare su alerta . Esta es una inversión de tiempo para obtener alertas confiables y de cobertura amplia, pero a medida que sus sistemas crecen en complejidad, dará sus frutos ya que no tendrá que monitorear todo cada vez que cambie algo .


Esto no es una cosa única. Me gusta su idea de invertir tiempo en la automatización del monitoreo y centralizar el registro. ¿Tiene alguna sugerencia para herramientas que sean de uso gratuito y que funcionen bien con los hosts ubuntu que ejecutan los programas?
guano

@guano Creo que Wissam ha cubierto todas las herramientas específicas que mencionaría, además de usar algo como Sensu para activar las alertas.
Boicot SE para Monica Cellio

4

Graylog

Dado que dos personas ya le aconsejaron que reconsidere su proceso actual (lo cual secundo, ya que en algún momento le causará noches de insomnio;)), iré por otra ruta y recomendaré un software específico que, en mi opinión, se adapta a la mayoría de Sus necesidades: Graylog .

Implementé y utilicé un par de pilas ELK para la agregación de registros y la inteligencia empresarial y también ejecuté / mantuve Graylog durante aproximadamente dos años en mi empleador actual. Recomiendo Graylog ya que tiene las siguientes características integradas y es, en mi opinión, un poco más fácil de configurar y mantener:

  • Una interfaz web
  • Capacidades multiusuario
  • Alertando

Hasta donde entiendo su escenario, parece que necesita actuar o recibir una alerta sobre ciertos eventos que aparecen en su flujo de mensajes de registro. Si nos fijamos en las características de Graylog :

Dispare acciones o reciba notificaciones cuando algo necesite atención, como intentos fallidos de inicio de sesión, excepciones o degradación del rendimiento.

Ideas: envíe un correo electrónico o un mensaje de Slack a su equipo. Genere una nueva máquina para equilibrar la carga de procesamiento. Bloquee los rangos de IP en sus firewalls automáticamente cuando se detecte un ataque.

Para probar Graylog, recomendaría los siguientes dos pasos:

  • Configure un host dedicado al que puedan acceder todos los hosts de su aplicación para ejecutar graylog (y sus dependencias MongoDB y ElasticSearch)
  • Enviar registros de su aplicación a graylog (posiblemente como mensajes GELF )

Nota: Estos dos pasos tienen la capacidad de llenar páginas y páginas de mejores prácticas y deben recibir al menos un par de pensamientos. Sin mencionar que Graylog no es una solución de monitoreo y Graylog en sí mismo debe ser monitoreado por una herramienta de monitoreo adecuada (como por ejemplo, Icinga, Prometheus, Nagios, por nombrar solo algunos).


3

Estoy de acuerdo con @Xiong Chiamiov y quiero dar una opción más clara. Si desea que todas las líneas de la CLI sean monitoreadas, sugeriría redirigir toda la salida a un archivo específico y el error a otro archivo, luego usar logstash o filebeat para enviar ambos archivos a Elasticsearch , luego puede configurar Logtril con Kibana para ver, analizar, buscar y registrar eventos de múltiples hosts en tiempo real con una interfaz amigable para desarrolladores


1

centralizado tmux

Si bien las otras respuestas son más inteligentes y sabias a largo plazo, creo que vale la pena mencionar la rápida solución CLI hacky. Ejecutar tmuxen un servidor que puede llegar a todos los demás. Un buen lugar para esto sería una caja de salto o algún otro lugar en el que la gente comúnmente inicie sesión de todos modos. Dentro de este tmuxssh "central" a cada cuadro en un panel diferente y cola cualquier archivo de registro que sea necesario. Puede usar ctrl- b "para obtener más paneles en una pestaña dentro tmux. Ahora todo lo que alguien tiene que hacer para verificar las cosas es adjuntar a la tmuxsesión "central" y pueden ver todo el clúster de un vistazo.

Pasé mucho tiempo creando soluciones de interfaz de usuario web para las que está trabajando, pero si lo necesita hoy, piratear algo tmuxpuede salvar el día.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.