La mejor manera de agregar varios archivos de registro desde varios servidores [cerrado]


Necesito una forma sencilla de monitorear múltiples archivos de registro de texto distribuidos en varios servidores HP-UX. Son una mezcla de archivos de registro de texto y XML de varios sistemas heredados distribuidos. Actualmente solo usamos ssh para los servidores y usamos tail-f y grep , pero eso no se escala cuando tiene muchos registros para realizar un seguimiento.

Dado que los registros están en diferentes formatos y solo archivos en carpetas (girados automáticamente cuando alcanzan un cierto tamaño), necesito ambos recopilarlos remotamente y analizar cada uno de manera diferente.

Mi idea inicial fue hacer un proceso de demonio simple que pueda ejecutar en cada servidor utilizando un lector de archivos personalizado para cada tipo de archivo para analizarlo en un formato común que se pueda exportar a través de la red a través de un socket. Otro programa de visualización que se ejecuta localmente se conectará a estos sockets y mostrará los registros analizados en una simple interfaz gráfica de usuario con pestañas o agregados a una consola.

¿A qué formato de registro debo tratar de convertir si voy a implementarlo esto ¿camino?

¿Hay alguna otra manera más fácil? ¿Debo intentar traducir los archivos de registro al formato log4j para usar con Chainsaw o hay mejores visores de registro que puedan conectarse a sockets remotos? ¿Podría usar BareTail como se sugiere en otra pregunta de registro ? Este no es un sistema distribuido masivamente y cambiar las implementaciones de registro actuales para todas las aplicaciones para usar UDP broadcast o poner mensajes en una cola JMS no es una opción.

Author: Community, 2008-09-17

10 answers

Opciones:

  1. Use un SocketAppender para enviar todos los registros a 1 servidor directamente. (Esto podría dificultar el rendimiento y añadir un único punto de fallo.)
  2. Utilice scripts para agregar los datos. Utilizo scp, ssh y claves de autenticación para permitir que mis scripts obtengan datos de todos los servidores sin ninguna indicación de inicio de sesión.
 2
Author: James A. N. Stauffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-23 16:47:19

Probablemente la solución más liviana para ver registros en tiempo real es usar Dancer's shell en modo concurrente con tail-f:

dsh -Mac -- tail -f /var/log/apache/*.log
  • La-a es para todos los nombres de máquinas que haya definido en ~/.dsh/máquinas.list
  • La-c es para el funcionamiento concurrente de tail
  • El-M antepone el nombre del host a cada línea de salida.
 20
Author: mrm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-13 17:36:32

Usamos un script de shell simple como el de abajo. Usted, obviamente, tiene que ajustar un poco para decirle acerca de los diferentes nombres de archivo y decidir qué caja para buscar en cuál, pero se obtiene la idea básica. En nuestro caso estamos siguiendo un archivo en la misma ubicación en varias cajas. Esto requiere autenticación ssh a través de claves almacenadas en lugar de escribir contraseñas.

#!/bin/bash
FILE=$1
for box in box1.foo.com box2.foo.com box3.foo.com box4.foo.com; do
     ssh $box tail -f $FILE &
done

Con respecto al comentario de Mike Funk sobre no poder mata la cola con ^C, guardo lo anterior en un archivo llama multitails.sh y añadir lo siguiente al final de la misma. Esto crea un kill_multitails.sh archivo que corres cuando termines de seguir, y luego se borra solo.

# create a bash script to kill off 
# all the tails when you're done
# run kill_multitails.sh when you're finished

echo '#!/bin/sh' > kill_multitails.sh
chmod 755 kill_multitails.sh
echo "$(ps -awx | grep $FILE)" > kill_multitails_ids
perl -pi -e 's/^(\d+).*/kill -9 $1/g' kill_multitails_ids
cat kill_multitails_ids >> kill_multitails.sh
echo "echo 'running ps for it'" >> kill_multitails.sh
echo "ps -awx | grep $FILE" >> kill_multitails.sh
echo "rm kill_multitails.sh" >> kill_multitails.sh
rm kill_multitails_ids


wait
 12
Author: masukomi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-22 12:30:43

Logscape - como splunk sin la etiqueta de precio

 5
Author: JzJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-12 12:26:16

Multitail o

"chip es una herramienta de análisis y monitoreo de registros local y remoto para administradores y desarrolladores del sistema.
Envuelve las características de swatch, tee, tail, grep, ccze y mail en una, con algunos extras"

Eg.

Chip-f-m0='RUN' -s0='red' -m1='.* '- s1 user1@remote_ip1: '/ var/log / log1 / var / log / log2 / var / log / log3 user2@remote_ip2:'/var/log/log1 /var/log/log2 /var/log/log3" | egrep "RUN | = = > /"

Esto resaltará en rojo el ocurrencias del patrón-m0, pre-filtrado del patrón 'RUN | = = > /' de todos los archivos de registro.

 2
Author: Joao Figueiredo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-09 16:29:16

Escribí vsConsole exactamente para este propósito - fácil acceso a los archivos de registro - y luego agregué monitoreo de aplicaciones y seguimiento de versiones. Me gustaría saber lo que piensas de ello. http://vs-console.appspot.com /

 2
Author: prule,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-14 09:37:04

Awstats proporciona un script perl que puede combinar varios archivos de registro de apache. Este script escala bien ya que la huella de memoria es muy baja, los archivos de registro nunca se cargan en la memoria. Sé que si no es exactamente lo que necesita, pero tal vez usted puede comenzar a partir de este guion y adaptarlo a sus necesidades.

 1
Author: Alexandre Victoor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-17 15:00:15

Puede utilizar los diversos receptores disponibles con Chainsaw (VFSLogFilePatternReceiver para archivos de cola sobre ssh, SocketReceiver, UDPReceiver, CustomSQLDBReceiver, etc.) y luego agregar los registros en una sola pestaña cambiando el identificador de pestaña predeterminado o creando un 'logpanel de expresión personalizada' proporcionando una expresión que coincida con los eventos en las varias pestañas de origen.

 1
Author: Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-15 05:58:43

Gltail-visualización en tiempo real del tráfico del servidor, eventos y estadísticas con Ruby, SSH y OpenGL desde múltiples servidores

 1
Author: Albert T. Wong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-25 07:47:25

XpoLog para Java

 1
Author: tom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-15 13:52:15