Как просмотреть старые журналы journalctl (возможно, после ротации?)

23

Я запускаю Docker на Ubuntu 16.04 и хотел бы просмотреть журналы. Тем не менее, я не могу просматривать журналы после того, что, по-моему, происходит какое-то вращение, или журналы увеличиваются до определенного размера.

Я не внес никаких изменений в мой journald.conf, поэтому я использую значения по умолчанию.

Примеры того, что я вижу:

systemctl docker statusподтверждает, что служба была активна since Thu 2016-10-13 18:56:28 UTC.

Однако, когда я запускаю что-то вроде journalctl -u docker.service --until "2016-10-13 22:00"- единственный вывод, который я получаю, -- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --я могу просматривать журналы в этом диапазоне, как и ожидалось.

Мой вопрос: почему я не могу просматривать старые журналы с journalctl, и как я могу исправить эту проблему, чтобы я мог просматривать журналы?

JDF
источник

Ответы:

15

Это может быть связано с тем, что вы пытаетесь просмотреть журнал с момента последней загрузки, что, вероятно, имеет место в образе докера.

В Ubuntu 16.04 хранилище журнала по умолчанию находится в оперативной памяти. Вы можете изменить постоянное значение по умолчанию, открыв /etc/systemd/journald.confи изменив Storage=строку с autoна persistent. Вам может потребоваться перезапустить journald systemctl restart systemd-journaldпосле редактирования файла конфигурации.

Я думаю, что журнал должен быть постоянным по умолчанию , поэтому я открыл ошибку об этом.

Марк Стосберг
источник
Я согласен с вами, он должен быть постоянным по умолчанию (и изменит этот параметр), но я уверен, что эта машина не была перезагружена, поэтому я не уверен на 100%, что это решит мою проблему в одиночку. Все еще рад, что вы подали этот вопрос.
jdf
При определенных условиях журналы могут попадать в журнал с неполными метаданными, чтобы их можно было найти при просмотре полного journalctlвывода, но не журналов единиц. Известно, что это происходит с проблемами журналов непосредственно перед выключением устройства. Журналы отправляются в journald, а затем journald отправляет запрос на метаданные. Иногда тем временем процесс существует. Это также не звучит так, как будто идеально подходит для вашего случая.
Марк Стосберг
3

Причина этого заключается в том, что по умолчанию установлен размер сохраняемых файлов журнала. Подробнее об этом можно узнать в документации . Стоит прочитать весь раздел, на который я ссылаюсь, но настройки по умолчанию работают примерно так:

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.

Для просмотра журналов с последней загрузки, предполагая, что у вас есть Storage=persistentфайл journald.conf, как и в других примечаниях к ответу, вы можете использовать --boot=-1флаг journalctlкоманд для получения журналов только с предыдущей загрузки.

В случае OP, где они были уверены, что хост не был перезагружен, потеря журналов была просто вызвана SystemMaxUseи / или SystemKeepFreeзначениями по умолчанию.

Примечание: я являюсь ОП, и в этом вопросе по-прежнему просачиваются голоса, поэтому, поскольку я приобрел больше опыта с journald (и rtfm), я публикую это здесь в надежде, что это поможет другим.

JDF
источник