Pregunta

Necesito una forma sencilla de monitorear múltiples archivos de registro de texto distribuidos en varios servidores HP-UX.Son una combinación de archivos de registro de texto y XML de varios sistemas heredados distribuidos.Actualmente simplemente nos conectamos por ssh a los servidores y usamos cola -f y grep, pero eso no se escala cuando tienes muchos registros de los que realizar un seguimiento.

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

Mi idea inicial fue crear un proceso demonio simple que pueda ejecutar en cada servidor usando 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 visualización que se ejecute localmente se conectará a estos sockets y mostrará los registros analizados en una GUI con pestañas simple o agregados a una consola.

¿A qué formato de registro debería intentar convertir si voy a implementarlo de esta manera?

¿Existe alguna otra forma más sencilla?¿Debo intentar traducir los archivos de registro al formato log4j para usarlos con motosierra ¿O hay mejores visores de registros que puedan conectarse a enchufes remotos?¿Podría usar cola desnuda como se sugiere en otra pregunta de registro?Esto no es una sistema distribuido masivamente y cambiar las implementaciones de registro actuales para que todas las aplicaciones utilicen transmisión UDP o coloquen mensajes en una cola JMS no es una opción.

¿Fue útil?

Solución

Opciones:

  1. Utilice un SocketAppender para enviar todos los registros a 1 servidor directamente.(Esto podría obstaculizar el rendimiento del servidor y agregar un único punto de falla).
  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 necesidad de iniciar sesión.

Otros consejos

Probablemente la solución más liviana para la visualización de registros en tiempo real sea utilizar Concha de bailarina en modo concurrente con tail -f:

dsh -Mac -- tail -f /var/log/apache/*.log
  • -a es para todos los nombres de máquinas que haya definido en ~/.dsh/machines.list
  • -c es para la ejecución simultánea de tail
  • -M antepone el nombre de host a cada línea de salida.

Usamos un script de shell simple como el siguiente.Obviamente, tendrías que modificarlo un poco para informarle sobre los diferentes nombres de archivos y decidir qué casilla buscar en cuál, pero ya tienes la idea básica.En nuestro caso, estamos siguiendo un archivo en la misma ubicación en varios cuadros.Esto requiere autenticación ssh mediante 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 matar la cola con ^C, almaceno lo anterior en un archivo llamado multirails.sh y agregué lo siguiente al final.Esto crea un archivo kill_multitails.sh que ejecuta cuando terminas de colocar, 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

Paisaje logístico - como Splunk sin la etiqueta de precio

multicolao

"chip es una herramienta de monitoreo y análisis de registros local y remota para administradores y desarrolladores de sistemas.
Reúne las funciones de swatch, tee, tail, grep, ccze y mail en una sola, con algunos extras".

P.ej.

chip -f -m0 = 'run' -s0 = 'rojo' -m1 = '.*' -s1 user1@remoto_ip1: '/var/log1/var/log/log2/var/log/log3 user2@remotes_ip2 : '/var/log/log1/var/log/log2/var/log/log3' '| egrep "run | ==> /"

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

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 qué piensas al respecto. http://vs-console.appspot.com/

Awstats proporciona un script en Perl que puede fusionar varios archivos de registro de Apache.Este script se escala bien ya que el uso de memoria es muy bajo y los archivos de registros nunca se cargan en la memoria.Sé que no es exactamente lo que necesitas, pero quizás puedas partir de este script y adaptarlo a tus necesidades.

Puede utilizar los diversos receptores disponibles con Chainsaw (VFSLogFilePatternReceiver para seguir archivos a través de ssh, SocketReceiver, UPReceiver, CustomSQLDBReceiver, etc.) y luego agregar los registros en una sola pestaña cambiando el identificador de pestaña predeterminado o creando un 'panel de registro de expresión personalizado' proporcionando una expresión que coincide con los eventos en las distintas pestañas de origen.

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

XpoLog para Java

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top