2008-09-17 14 views
40

Necesito una forma simple de supervisar varios archivos de registro de texto distribuidos en varios servidores HP-UX. Son una mezcla de archivos de texto y de registro XML de varios sistemas legados distribuidos. Actualmente solo enviamos ssh a los servidores y usamos tail -f y grep, pero eso no cambia cuando tienes muchos registros para seguir.La mejor manera de agregar varios archivos de registro desde varios servidores

Dado que los registros están en diferentes formatos y solo archivos en carpetas (se rotan automáticamente cuando alcanzan un determinado tamaño), tengo que recopilarlos de forma remota y analizarlos de forma diferente.

Mi idea inicial era hacer un proceso de daemon 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 pueda exportarse a través de la red a través de un socket. Otro programa de visor que se ejecute localmente se conectará a estos sockets y mostrará los registros analizados en alguna GUI con pestañas simples o agregados a una consola.

¿A qué formato de registro debo intentar convertir si lo voy a implementar de esta manera?

¿Hay alguna otra manera más fácil? ¿Debo intentar traducir los archivos de registro al formato log4j para usarlo con Chainsaw o hay mejores visores de registro que se puedan conectar a tomas de corriente remotas? ¿Puedo usar BareTail como se sugiere en another log question? Esto no es un massivly distributed system y cambiar las implementaciones de registro actuales para todas las aplicaciones para usar transmisión UDP o poner mensajes en una cola JMS no es una opción.

+0

En la aplicación que estoy trabajando en ahora hemos resuelto este problema mediante el intercambio de las partes interesantes de los troncos (excepciones, la carga del servidor y estadísticas de usuarios) y mostrándolas en una Página estado interno para los usuarios administradores. Funciona mucho mejor que seguir archivos de registro ruidosos. –

+1

Consulte http://serverfault.com/questions/180392/how-to-collect-and-aggregate-logs-from-multiple-machines-in-amazon-aws-environme – ripper234

+2

Eche un vistazo a [logstash] (https: //docs.google.com/present/view?id=dcmwwd94_16dfdxgpw8&pli=1)? Tiene un montón de opciones de entrada, salida y filtro. – Varun

Respuesta

2

Opciones:

  1. utilizar un SocketAppender para enviar todos los registros de 1 servidor directamente. (Esto podría obstaculizar el rendimiento del servidor y agregar un único punto de falla).
  2. Use scripts para agregar los datos. Uso scp, ssh y claves de autenticación para permitir que mis scripts obtengan datos de todos los servidores sin ninguna solicitud de inicio de sesión.
1

Awstats proporciona una secuencia de comandos perl que puede fusionar varios archivos de registro de Apache. Este script se 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 quizás pueda comenzar con este script y adaptarlo a sus necesidades.

12

Utilizamos un script de shell simple como el que se muestra a continuación. Obviamente, tendrías que ajustarlo un poco para contarle sobre los diferentes nombres de archivo y decidir qué casilla buscar, pero obtienes la idea básica. En nuestro caso, seguimos un archivo en la misma ubicación en varias casillas. 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 por no ser capaz de matar al tizón con^C, almaceno lo anterior en un archivo llamado multitails.sh y se añade lo siguiente al final de la misma. Esto crea un archivo kill_multitails.sh que ejecuta cuando termina de rastrear, y luego se elimina.

# 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 
1

Se pueden utilizar los diversos receptores disponibles con la motosierra (VFSLogFilePatternReceiver a los archivos de la cola a través de ssh, SocketReceiver, UDPReceiver, CustomSQLDBReceiver, etc) y luego agregar los registros en una sola pestaña cambiando la pestaña predeterminada identificador o la creación de una 'logpanel de expresión personalizada' al proporcionar una expresión que coincide con los eventos en las distintas pestañas de origen.

1

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

+0

glTail es genial, pero estaba más interesado en una forma fácil y eficiente de agregar archivos de registro para buscarlos y filtrarlos. –

19

Probablemente la solución más ligera para la observación de registro en tiempo real es utilizar Dancer's shell en modo concurrente con tail-f:

dsh -Mac -- tail -f /var/log/apache/*.log 
  • El -a es para todos los nombres de los equipos que ha definido en ~/.dsh/machines.list
  • El -c es para el funcionamiento simultáneo de cola
  • El -M antepone el nombre de host a cada línea de salida.
+0

auspiciado por  Computadoras – coderatchet

+0

¡Gracias! dsh puede usar '~/.ssh/config' si' remoteshell = ssh' se especifica en 'dsh.conf' o se pasa como un argumento, es decir' -r ssh'. También puede crear definiciones de grupo (al menos con la versión instalada de brew en su carpeta de inicio, por ejemplo ~/.dsh/group/prod.web) y modificar un poco el comando: 'dsh -Mc -g prod.web'. –

2

multitail o

"chip es un análisis de registro local y remoto y herramienta de monitoreo para los administradores de sistemas y desarrolladores.
Se envuelve las características de la muestra, una camiseta, una cola , grep, ccze y mail en uno, con algunos extras "

Eg.

chip -f -m0 = 'RUN' -s0 = 'rojo' -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 las apariciones del patrón -m0, prefiltrando el patrón 'RUN | ==> /' de todos los archivos de registro.

2

escribí vsConsole precisamente para este propósito - fácil acceso a los archivos de registro - y luego se añade el monitoreo de aplicaciones y el seguimiento de versiones. Me gustaría saber lo que piensas de él. http://vs-console.appspot.com/

Cuestiones relacionadas