Domanda

Ho bisogno di un modo semplice per monitorare più file di registro di testo distribuiti su più server HP-UX.Sono un mix di file di registro di testo e XML provenienti da diversi sistemi legacy distribuiti.Attualmente ci limitiamo a usare SSH sui server e utilizziamo coda -f E grep, ma ciò non si adatta quando hai molti log di cui tenere traccia.

Poiché i registri sono in formati diversi e sono solo file in cartelle (ruotati automaticamente quando raggiungono una determinata dimensione), è necessario raccoglierli in remoto e analizzarli ciascuno in modo diverso.

Il mio pensiero iniziale era quello di creare un semplice processo demone che potessi eseguire su ciascun server utilizzando un lettore di file personalizzato per ciascun tipo di file per analizzarlo in un formato comune che possa essere esportato in rete tramite un socket.Un altro programma visualizzatore in esecuzione localmente si connetterà a questi socket e mostrerà i log analizzati in una semplice GUI a schede o aggregati in una console.

In quale formato di registro dovrei provare a convertire se devo implementarlo in questo modo?

C'è qualche altro modo più semplice?Dovrei tentare di tradurre i file di registro nel formato log4j da utilizzare con Motosega o esistono visualizzatori di log migliori che possono connettersi a socket remoti?Potrei usare Coda nuda come suggerito in un'altra domanda sul registro?Questo non è un sistema massivamente distribuito e la modifica delle attuali implementazioni di registrazione per tutte le applicazioni per utilizzare la trasmissione UDP o inserire messaggi su una coda JMS non è un'opzione.

È stato utile?

Soluzione

Opzioni:

  1. Utilizza un SocketAppender per inviare tutti i log direttamente a 1 server.(Ciò potrebbe ostacolare le prestazioni e aggiungere un singolo punto di errore.)
  2. Utilizzare gli script per aggregare i dati.Utilizzo scp, ssh e chiavi di autenticazione per consentire ai miei script di ottenere dati da tutti i server senza alcuna richiesta di accesso.

Altri suggerimenti

Probabilmente è la soluzione più leggera da utilizzare per la visualizzazione dei registri in tempo reale Il guscio della ballerina in modalità simultanea con tail -f:

dsh -Mac -- tail -f /var/log/apache/*.log
  • -a è per tutti i nomi di macchina che hai definito in ~/.dsh/machines.list
  • Il -c è per l'esecuzione simultanea di tail
  • Il -M antepone il nome host a ogni riga di output.

Usiamo un semplice script di shell come quello qui sotto.Ovviamente dovresti modificarlo un po 'per dirgli i diversi nomi di file e decidere quale casella cercare su quale, ma hai l'idea di base.Nel nostro caso stiamo seguendo un file nella stessa posizione su più caselle.Ciò richiede l'autenticazione ssh tramite chiavi memorizzate invece di digitare password.

#!/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

Per quanto riguarda il commento di Mike Funk sul non essere in grado di uccidere la coda con ^c, memorizzo quanto sopra in un file chiamato Multitails.sh e ho aggiunto quanto segue alla fine.Questo crea un file kill_multitails.sh che esegui quando hai finito di seguire, quindi si 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

Logscape - come Splunk senza il cartellino del prezzo

multicodaO

"patata fritta è uno strumento di analisi e monitoraggio dei registri locale e remoto per amministratori e sviluppatori di sistema.
Comprende le funzionalità di swatch, tee, tail, grep, ccze e mail in uno solo, con alcuni extra"

Per esempio.

chip -f -m0 = 'run' -s0 = 'rosso' -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 | ==> /"

Ciò evidenzierà in rosso le versioni del pattern -m0, pre -filtraggio il modello 'run | ==> /' da tutti i file di registro.

Ho scritto vsConsole esattamente per questo scopo, ovvero un facile accesso ai file di registro, e quindi ho aggiunto il monitoraggio delle app e il monitoraggio delle versioni.Vorrei sapere cosa ne pensi. http://vs-console.appspot.com/

Awstats fornisce uno script Perl in grado di unire insieme diversi file di registro di Apache.Questo script si adatta bene poiché l'ingombro della memoria è molto basso, i file di registro non vengono mai caricati in memoria.So che non è esattamente ciò di cui hai bisogno, ma forse puoi iniziare da questo script e adattarlo alle tue esigenze.

È possibile utilizzare i vari ricevitori disponibili con Chainsaw (VFSLogFilePatternReceiver per codare i file su ssh, SocketReceiver, UDPReceiver, CustomSQLDBReceiver, ecc.) e quindi aggregare i log in un'unica scheda modificando l'identificatore di scheda predefinito o creando un "pannello di log dell'espressione personalizzata" fornendo un'espressione che corrisponde agli eventi nelle varie schede di origine.

gltail: visualizzazione in tempo reale del traffico del server, degli eventi e delle statistiche con Ruby, SSH e OpenGL da più server

XpoLog per Giava

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top