Wie können ältere Journalprotokolle angezeigt werden (nach einer Rotation möglicherweise?)

23

Ich verwende Docker unter Ubuntu 16.04 und möchte die Protokolle anzeigen. Ich kann jedoch keine Protokolle mehr anzeigen, nachdem ich eine Art Rotation vermutet habe oder die Protokolle eine bestimmte Größe erreicht haben.

Ich habe keine Änderungen an meiner journald.conf vorgenommen, daher verwende ich dort Standardeinstellungen.

Beispiele für das, was ich sehe:

systemctl docker statusbestätigt, dass der Dienst aktiv war since Thu 2016-10-13 18:56:28 UTC.

Wenn ich jedoch so etwas wie einen Befehl ausführe, journalctl -u docker.service --until "2016-10-13 22:00"erhalte -- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --ich nur die Ausgabe, dass ich die Protokolle in diesem Bereich wie erwartet anzeigen kann.

Meine Frage ist, warum ich ältere Protokolle nicht mit journalctl anzeigen kann und wie ich dieses Problem beheben kann, damit ich die Protokolle anzeigen kann.

jdf
quelle

Antworten:

15

Dies kann daran liegen, dass Sie versuchen, das Journal seit dem letzten Start zu überprüfen, was in einem Docker-Image wahrscheinlich der Fall ist.

Unter Ubuntu 16.04 befindet sich der Journalspeicher standardmäßig im Arbeitsspeicher. Sie können die Standardeinstellung dauerhaft ändern, indem Sie /etc/systemd/journald.confdie Storage=Zeile von autoin öffnen und ändern persistent. Möglicherweise müssen Sie Journald systemctl restart systemd-journaldnach der Bearbeitung der Konfigurationsdatei neu starten .

Ich denke, das Tagebuch sollte standardmäßig persistent sein , also habe ich einen Fehler in diesem Bereich gefunden.

Mark Stosberg
quelle
Ich bin damit einverstanden, dass es standardmäßig persistent sein sollte (und diese Einstellung ändern wird), aber ich bin sicher, dass dieser Computer nicht neu gestartet wurde, sodass ich nicht zu 100% davon überzeugt bin, dass mein Problem allein gelöst werden kann. Ich bin immer noch froh, dass Sie diese Ausgabe eingereicht haben.
jdf
Unter bestimmten Umständen können Protokolle mit unvollständigen Metadaten im Journal landen, sodass sie bei der Überprüfung der vollständigen journalctlAusgabe gefunden werden, nicht jedoch die Geräteprotokolle. Es ist bekannt, dass dies bei Protokollproblemen auftritt, kurz bevor eine Einheit heruntergefahren wird. Die Protokolle werden an journald gesendet, und journald gibt eine Abfrage für die Metadaten aus. Manchmal existiert der Prozess in der Zwischenzeit. Das hört sich aber auch nicht so an, als würde es perfekt zu Ihrem Fall passen.
Mark Stosberg
3

Der Grund dafür ist, dass die Größe der gespeicherten Journald-Dateien standardmäßig festgelegt ist. Weitere Informationen hierzu finden Sie in den Dokumenten . Es lohnt sich, den gesamten Abschnitt zu lesen, den ich verlinkt habe, aber die Standardeinstellungen funktionieren folgendermaßen:

journald will use 10% of the disk or 4G, whichever is smaller.

journald will leave free 15% of the disk or 4G, whichever is larger.

Zum Anzeigen von Protokollen vom letzten Start können Sie, vorausgesetzt, Sie haben Storage=persistentin Ihrer journald.conf wie in den anderen Antwortnotizen angegeben, das --boot=-1Flag für journalctlBefehle verwenden, um Protokolle nur vom vorherigen Start abzurufen .

In dem Fall des OP, in dem sie sicher waren, dass der Host nicht neu gestartet wurde, wurde der Verlust von Protokollen einfach durch die SystemMaxUseund / oder SystemKeepFreeStandardeinstellungen verursacht.

Hinweis: Ich bin der OP und diese Frage hat immer noch positive Stimmen. Da ich also mehr Erfahrung mit Journald (und RTFM) gesammelt habe, poste ich dies hier in der Hoffnung, dass es anderen hilft.

jdf
quelle