Monitorare contemporaneamente più file di registro (su SSH) su Windows?
-
01-07-2019 - |
Domanda
Ho usato poderosa (un'app terminale .NET) per monitorare i log su più server Linux / Solaris. Questa applicazione NON viene attualmente gestita e ho avuto diversi problemi con essa.
Mi chiedo cosa fanno gli altri utenti per monitorare contemporaneamente diversi log in tempo reale (come nel file di log tail -f). Vorrei essere in grado di tab / cascata diverse code SSH.
grazie
Soluzione
È possibile utilizzare Putty Connection Manager per aggiungere schede a PuTTy. Quindi SSH nella macchina due volte e scheda avanti e indietro.
Altri suggerimenti
Potresti semplicemente usare ssh su un server e utilizzare mutitail da lì per adattare i registri su tutto gli altri server.
Ssh su uno dei server, esegui lo schermo su di esso. Puoi quindi dividere lo schermo in più finestre e ognuna di esse lo fa
ssh serverX tail -f /path/to/log/file
Un vantaggio accidentale con questo metodo è che non è necessario riavviare la coda ogni volta che ci si connette, invece è possibile ricollegarsi alla sessione dello schermo in esecuzione.
Da bash puoi (salvare in ~ / .bashrc
o qualcosa del genere):
function create-follower () {
local _NAME=$1;
local _USER=$2;
local _HOST=$3;
local _PATH=$4;
if ! [ "${_NAME}" ]\
|| ! [ "${_USER}" ]\
|| ! [ "${_HOST}" ]\
|| ! [ "${_PATH}" ] ; then
{ echo "Cannot create log follower." ;
echo;
echo "Usage: create-follower NAME USER HOST LOG-FILE";
} >&2;
return 1 ;
fi ;
eval "function ${_NAME}(){ ssh ${_USER}@${_HOST} tail -f \"${_PATH}\" & }"
}
function activate-followers () {
if (( $# < 1 )) ; then
{ echo "You must specify at least one follower to use" ;
echo ;
echo "Usage:" ;
echo " activate-followers follower1 [follower2 ... followerN]";
} >&2;
return 1 ;
fi ;
for FOLLOW in "${@}" ; do
${FOLLOW} ;
done ;
wait;
}
function stop-followers () {
if [ "$(jobs)" ] ; then
kill -9 $(jobs | perl -pe 's/\[([0-9]+)\].*/%$1/') ;
fi ;
}
E poi dalla tua shell, definisci i log che vuoi seguire:
[dsm@localhost:~]$ create-follower test1 user1 localhost /tmp/log-1.txt
[dsm@localhost:~]$ create-follower test2 user2 otherhost /tmp/log-2.txt
[dsm@localhost:~]$ create-follower test2 user3 remotebox /tmp/log-3.txt
Ora, attiva i follower:
[dsm@localhost:~]$ activate-followers test1 test2 test3
Per uscire dalla funzione utilizzare CTRL + C
e per interrompere i processi in background utilizzare:
[dsm@localhost:~]$ stop-followers
NOTA 1: presuppone che sia stata impostata l'autenticazione con chiave pubblica per le tue caselle.
NOTA 2: Dovrai terminare tutti i lavori rimasti in esecuzione dopo aver chiuso la funzione activ-follower. È possibile che lo si desideri fare manualmente poiché la funzione fornita uccide con forza bruta su TUTTI i lavori in background
NOTA 3: presuppone un ambiente unix-like funzionante, che puoi ottenere installando cygwin
Chi dice che non puoi fare lisp in shellscript ;-)
Puoi effettuare il checkout nel registro laterale.
Uno strumento Java che ho creato, in grado di leggere file di registro locali e distanti utilizzando SSH. È abbastanza semplice da usare.
Altre spiegazioni: https://github.com/pschweitz/insidelog/wiki
Basta scaricare la versione corrispondente al sistema operativo in uso o l'eseguibile della versione jar nativa in Java Runtime (richiede java 8_40 o successiva):
https://github.com/pschweitz/insidelog/releases
Puoi trovare una documentazione completa (incorporata anche nella pagina di Github)
Due opzioni che mi vengono in mente per prime.
Scegli la tua app SSH preferita (putty, ssh in cygwin, ecc.) e accedi alla macchina.
1. SSH per ogni registro (molte finestre si aprono sul tuo computer o schede a seconda della tua app)
2. SSH una volta e usa screen .
Se in realtà fosse necessario visualizzare entrambi i registri contemporaneamente e le schede fossero fuori discussione, è possibile installare uno script perl chiamato LogResolveMerge.pl. Unirà due log insieme e scaricherà l'output su STDOUT. Tuttavia, sarà un uso intensivo delle risorse e se la tua intenzione è quella di modificare i registri, probabilmente non sarà troppo efficace.