Mehrere entfernte Dateien nachverfolgen


41

Gibt es eine Möglichkeit, Tail 2-Dateien zu entfernen?

Ich habe zwei Server (a und b) hinter einem Load Balancer und möchte nach Möglichkeit so etwas tun:

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

Vielen Dank!


Warum hast du die Antwort gelöscht?
Pablo Fernandez

meistens weil es nicht geklappt hat :-)
mat

@mat Oh, ich wollte es gerade ausprobieren :). Trotzdem danke!
Pablo Fernandez

es funktioniert nicht , weil das <(foo) Konstrukt für den inneren Befehl warten beenden , bevor die Software lesen sein wird , aus der durch ein Rohr in der ursprünglichen Befehlszeile ersetzt werden kann, und Schwanz würde nie fertig :-)
mat

Antworten:


31

Das hat bei mir funktioniert:

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

Ja, so mache ich das, nur dass normalerweise mehrere Gnome-Terminals geöffnet sind, von denen jedes eine Sitzung enthält
Tom O'Connor

1
Gibt es eine Möglichkeit, dies zu tun, ohne mehrere unabhängige SSH-Sitzungen zu eröffnen?
tgies

8
Damit können Sie das Tailing jedoch nicht stoppen Ctrl+C.
Sorin

@sorin, um die Prozesse zu beenden, bringen Sie einfach jeden einzelnen mit in den Vordergrund fg. dann kannst du ctrl+ces. Du würdest das einmal für jeden Schwanz tun, den du laufen hast. Oder Sie können pkill -f sshalle gleichzeitig anvisieren.
Dale Anderson

34

Meine bevorzugte Option ist Multitail. Ich würde so etwas wie laufen:

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

1
Vielen Dank! Ich suchte nach einem Beispiel für die Verwendung von Multitail über ssh / auf Remote-Hosts!
Noah Sussman

Multitail ist eine weitaus robustere Lösung.
obfk

Unsere Website hat mehr als 10 Webknoten, und Multitail schlägt beim ersten Versuch mit dem Fehler fehl. Operation not permittedMit 2 bis 3 Webknoten ist dies in Ordnung
Hieu Vo,

Ich bekomme auch die Operation not permitted, irgendwelche Hinweise?
Erik Aigner

7

Sie können Fabric verwenden, um mehrere Hosts mit einem Tail zu versehen (und bei Bedarf auch Grep-Ergebnisse):

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

6

Ich dachte, es könnte auch möglich sein, Folgendes zu verwenden:

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

Mit der Option -f nach ssh können Sie ein Kennwort eingeben, bevor es im Hintergrund ausgeführt wird. Dann könnten Sie die zeilenweisen Ergebnisse in einer einzigen Datei haben und ausführen:

tail -f /tmp/somefile

Würde Ihnen ein wenig mehr Kontrolle über den aktuellen Befehl "tail" geben, falls Sie andere Optionen für die Anzeige der Ausgabe verwenden möchten.



5

Schauen Sie sich Multitail an . Genau wie in den obigen Beispielen können Sie es als Befehl an ssh übergeben. Anschließend werden auf einem Bildschirm mehrere Protokolle angezeigt (und gepuffert, um einen einfachen Bildlauf zu ermöglichen). Es färbt auch, was sehr nützlich ist, um Anomalien zu erkennen.


2

Parallel ssh hat dafür eine schöne Lösung:

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 deaktiviert das Verbindungs-Timeout, andernfalls hat pssh die Verbindung geschlossen
  • -H '<host>...' ist die Liste der Hosts, auf denen der Befehl ausgeführt werden soll
  • -P soll das Drucken der Standardausgabe jedes Hosts ermöglichen
  • tail -f /var/log/app.log kann ein beliebiger Befehl sein, den Ihre Remote-Shell ausführen kann


1

Nur eine seltsame Lösung, aber es funktioniert !:

Bildschirm 1

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

Bildschirm 2

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

Dies wird funktionieren und Zeilen auf dem Terminal / dev / pts / 6 ausgeben (um Ihr eigenes Terminal herauszufinden: execute: who am i und es wird es Ihnen zeigen.)
Olivier Dulac

1

Sie können dbitail auschecken.

Ein von mir erstelltes Java-Tool, das lokale und entfernte Protokolldateien mit SSH lesen kann. Es ist ziemlich einfach zu bedienen.

Weitere Erklärungen: https://github.com/pschweitz/DBITail/wiki

Laden Sie einfach die Ihrem Betriebssystem entsprechende Version der in Ihrer Java Runtime ausführbaren JAR-Version herunter (erfordert Java 8_40 oder höher):

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

Sie finden eine vollständige Dokumentation (eingebettet in die Seite von und I Github).

Philippe


0

Oder Sie können screen verwenden, um zwei Terminals zu erstellen und sie dann zu teilen.

SSH auf dem ersten Host, auf dem Sie die Protokolldatei mit einem Tail versehen möchten, und bevor Sie tail ausführen, rufen Sie den Bildschirm auf.

Dann die Datei auf diesem Host abschließen.

STRG + A, c erstellt einen neuen Bildschirm oder ein neues Fenster. Aus diesem neuen Fenster ssh in den 2. Host und dort die Datei tailen.

Erstellen Sie nun den geteilten Bildschirm

STRG + A, UMSCHALT + S, dies erzeugt einen geteilten Bildschirm mit der aktuellen Shell im oberen Teil und dem leeren unteren Teil. Um zum unteren Teil zu wechseln und den ersten Bildschirm darin zu platzieren,

STRG + A, TAB, dadurch gelangen Sie zum unteren Teil. Bringen Sie jetzt Ihre erste SSH-Sitzung in diesen Bereich:

STRG + A, "(Anführungszeichen) und wählen Sie die erste Sitzung aus und drücken Sie die Eingabetaste.

Mir ist klar, dass dies wie eine Menge Gymnastik aussieht, und das ist es auch, aber Sie gewöhnen sich daran, wenn Sie es ein paar Mal benutzen.

Hier finden Sie ein wirklich gutes Tutorial oder eine Kurzanleitung zu den Bildschirmbefehlen: http://www.pixelbeat.org/lkdb/screen.html

Darüber hinaus können Sie eine .screenrc-Datei erstellen, damit vieles, was ich beschrieben habe, beim ersten Aufrufen des Bildschirms automatisiert werden kann.

Eine weitere nette Sache dabei ist, dass Sie Ihre Sitzung einfach schließen und an einem anderen Ort fortsetzen können. Zum Beispiel sind Sie auf der Arbeit und haben einige Überwachungsarbeiten im Gange. Sie können Ihre Sitzung einfach schließen, ohne sich abzumelden, und die Sitzung fortsetzen, wenn Sie zu Hause oder an einem anderen Ort sind.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.