Jak wyświetlić starsze dzienniki dziennikowe (może po rotacji?)

23

Korzystam z dokera na Ubuntu 16.04 i chciałbym wyświetlić dzienniki. Jednak nie mogę wyświetlić dzienników po tym, co, jak sądzę, jest jakimś obrotem lub dzienniki powiększają się do pewnego rozmiaru.

Nie wprowadziłem żadnych zmian w pliku Journald.conf, więc używam tam ustawień domyślnych.

Przykłady tego, co widzę:

systemctl docker statuspotwierdza, że ​​usługa była aktywna since Thu 2016-10-13 18:56:28 UTC.

Jednak gdy uruchamiam coś podobnego journalctl -u docker.service --until "2016-10-13 22:00"- jedyne wyjście, jakie otrzymuję, to -- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --mogę przeglądać dzienniki w tym zakresie zgodnie z oczekiwaniami.

Moje pytanie brzmi: dlaczego nie mogę wyświetlić starszych dzienników za pomocą dziennikactl i jak mogę rozwiązać ten problem, aby wyświetlić dzienniki?

jdf
źródło

Odpowiedzi:

15

Może to być spowodowane tym, że próbujesz przejrzeć dziennik od ostatniego rozruchu, co wydaje się prawdopodobne w przypadku obrazu dokera.

W systemie Ubuntu 16.04 domyślną pamięcią do przechowywania dziennika jest pamięć. Możesz zmienić wartość domyślną na trwałą, otwierając /etc/systemd/journald.confi zmieniając Storage=linię z autona persistent. Może być konieczne zrestartowanie dziennika systemctl restart systemd-journaldpo edycji pliku konfiguracyjnego.

Myślę, że dziennik powinien być domyślnie trwały , więc otworzyłem błąd na ten temat.

Mark Stosberg
źródło
Zgadzam się z tobą, że powinien on być domyślnie trwały (i zmieni to ustawienie), ale jestem pewien, że ten komputer nie został ponownie uruchomiony, więc nie jestem w 100% przekonany, że sam rozwiąże mój problem. Nadal cieszę się, że zgłosiłeś ten problem.
jdf
W pewnych warunkach dzienniki mogą znajdować się w dzienniku z niekompletnymi metadanymi, aby można je było znaleźć podczas przeglądania pełnego journalctlwyniku, ale nie dzienników jednostki. Wiadomo, że dzieje się tak w przypadku rejestrowania problemów tuż przed wyłączeniem jednostki. Dzienniki są wysyłane do dziennika, a następnie dziennik wysyła zapytanie o metadane. Czasami w międzyczasie proces istnieje. Ale to też nie brzmi, jakby idealnie pasowało do twojego przypadku.
Mark Stosberg
3

Dzieje się tak z powodu domyślnego rozmiaru przechowywanych plików dziennika. Dokumenty zawierają więcej szczegółów na ten temat . Warto przeczytać całą sekcję, z którą mam link, ale ustawienia domyślne działają w ten sposób:

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.

Aby przeglądać dzienniki z ostatniego rozruchu, zakładając, że masz Storage=persistentw dzienniku.conf, podobnie jak inne odpowiedzi, możesz użyć --boot=-1flagi journalctlpoleceń, aby uzyskać dzienniki z poprzedniego rozruchu.

W przypadku PO, w którym byli pewni, że host nie został ponownie uruchomiony, utrata logów była po prostu spowodowana przez SystemMaxUsei / lub SystemKeepFreedomyślne.

Uwaga: Jestem OP i na to pytanie wciąż napływają głosy przychylne, więc odkąd zdobyłem więcej doświadczenia z Journald (i RTFM), zamieszczam to tutaj w nadziei, że pomoże to innym.

jdf
źródło