Coda più file remoti


41

C'è un modo per remotare i file di coda 2?

Ho due server (aeb) dietro un bilanciamento del carico e vorrei fare qualcosa del genere, se possibile:

tail -f admin@serverA:~/mylogs/log admin@serverB:~/mylogs/log

Grazie!


Perché hai cancellato la risposta?
Pablo Fernandez,

soprattutto perché non ha funzionato :-)
mat

@mat Oh stavo per provarlo :). Grazie comunque!
Pablo Fernandez,

non funziona perché la (foo) costrutto <attende il comando interno di rivestimento prima di essere sostituito da un tubo nella linea di comando originale da cui il software sarà in grado di leggere, e, coda sarebbe mai concretizzare :-)
mat

Risposte:


31

Questo ha funzionato per me:

ssh -n user@hostname1 'tail -f /mylogs/log' &
ssh -n user@hostname2 'tail -f /mylogs/log' &

Sì, è così che faccio, tranne che di solito ho più terminali di gnome aperti, ognuno con una sessione al suo interno
Tom O'Connor,

1
C'è un modo per farlo senza aprire più sessioni ssh indipendenti?
tgies

8
Ma questo non ti consente di smettere di pedinare Ctrl+C.
sorin,

@sorin per terminare i processi, riportare ognuno in primo piano fg; allora puoi ctrl+cfarlo. Lo faresti una volta per ogni coda che corri. Oppure potresti pkill -f sshmirare a tutti loro allo stesso tempo.
Dale Anderson,

34

La mia opzione preferita è quella di utilizzare il multitail. Avrei eseguito qualcosa del tipo:

multitail -l 'ssh user@host1 "tail -f /some/log/file"' -l 'ssh user@host2 "tail -f /some/log/file"'

1
Grazie! Stavo cercando un esempio di come usare il multitail su ssh / su host remoti!
Noah Sussman,

Multitail è una soluzione molto più solida.
obfk

il nostro sito Web ha più di 10 nodi Web e il multitail non riesce al primo tentativo con l'errore Operation not permitted, con 2 3 nodi Web, va bene
Hieu Vo,

Ottengo anche Operation not permittedqualche indizio?
Erik Aigner,

7

Puoi usare fabric per seguire diversi host (e anche risultati grep, se necessario):

$ fab -P -u 'USER' -p 'PASSWORD' --linewise -H host1,host2,host3 -- tail -f /path/to/my/log.log | grep ERROR

6

Stavo pensando che potrebbe anche essere possibile utilizzare:

ssh -f user@hostname1 "tail -f /var/log/file" > /tmp/somefile &
ssh -f user@hostname2 "tail -f /var/log/file" > /tmp/somefile &

L'opzione -f dopo ssh consente di inserire una password prima che venga eseguita in background. Quindi potresti avere i risultati riga per riga in un singolo file ed eseguire:

tail -f /tmp/somefile

Ti darebbe un po 'più di controllo sull'attuale comando "tail" nel caso in cui volessi usare altre opzioni tail per visualizzare l'output.



5

Dai un'occhiata al multitail . Proprio come gli esempi sopra, puoi assegnarlo come comando a ssh, e poi finirai con una schermata che visualizza (e buffering per scrollback facili) più registri. Fa anche la colorazione, che è molto utile per individuare anomalie.


2

Parallel ssh ha una buona soluzione per questo:

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 disabilita il timeout della connessione, altrimenti pssh ha chiuso la connessione
  • -H '<host>...' è l'elenco di host per eseguire il comando
  • -P è abilitare la stampa dello stdout di ciascun host
  • tail -f /var/log/app.log può essere qualsiasi comando eseguibile dalla shell remota


1

Solo una strana soluzione, ma funziona !:

Schermata 1

ssh user@hostname1 "tail -f /var/log/file" > /dev/pts/6

Schermo 2

ssh user@hostname2 "tail -f /var/log/file" > /dev/pts/6

questo funzionerà, emettendo linee sul terminale / dev / pts / 6 (per scoprire il tuo terminale: esegui: who am i e te lo mostrerà.)
Olivier Dulac

1

Puoi controllare dbitail.

Uno strumento Java che ho creato, in grado di leggere file di registro locali e distanti utilizzando SSH. È abbastanza semplice da usare.

Qualche spiegazione in più: https://github.com/pschweitz/DBITail/wiki

Basta scaricare la versione corrispondente al sistema operativo in uso, eseguibile della versione jar nativa all'interno di Java Runtime (richiede java 8_40 o successiva):

https://github.com/pschweitz/DBITail/releases

È possibile trovare una documentazione completa (incorporata con e anche nella pagina di Github)

Philippe


0

oppure puoi usare lo schermo per creare due terminali e poi dividerli.

SSH nel primo host di cui si desidera personalizzare il file di registro e prima di eseguire tail, accedere alla schermata.

Quindi codificare il file su questo host.

CTRL + A, c creerà una nuova schermata o finestra. Da questa nuova finestra ssh nel secondo host e codificare il file lì.

Ora per creare lo schermo diviso

CTRL + A, MAIUSC + S, questo creerà uno schermo diviso con la shell corrente nella parte superiore e la parte inferiore vuota. Per passare alla parte inferiore e inserire la prima schermata al suo interno,

CTRL + A, TAB, questo ti sposterà nella parte inferiore. Ora per portare la tua prima sessione SSH in quest'area:

CTRL + A, "(virgolette) e seleziona la prima sessione e premi invio.

Mi rendo conto che potrebbe sembrare molta ginnastica, e lo è, ma ci si abitua una volta che lo si utilizza alcune volte.

Ecco un ottimo tutorial o un rapido riferimento ai comandi dello schermo: http://www.pixelbeat.org/lkdb/screen.html

Inoltre, puoi creare un file .screenrc in modo che gran parte di ciò che ho descritto possa essere automatizzato la prima volta che accedi alla schermata.

Un'altra cosa bella di questo è che puoi semplicemente chiudere la sessione e riprenderla da qualche altra parte. Ad esempio, sei al lavoro e hai qualche monitoraggio in corso. Puoi semplicemente chiudere la sessione senza disconnettersi e riprendere quando torni a casa o in un'altra posizione.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.