Назад | Перейти на главную страницу

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

Я запускаю докер на ubuntu 16.04 и хочу просмотреть журналы. Однако я не могу просматривать журналы после того, что, как я предполагаю, представляет собой какую-то ротацию или журналы вырастают до определенного размера.

Я не вносил никаких изменений в свой journald.conf, поэтому использую там значения по умолчанию. Контейнеры работают, поэтому журнал докеров выводит довольно много данных.

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

systemctl docker status подтверждает, что услуга активна:

since Thu 2016-10-13 18:56:28 UTC

Однако когда я запускаю что-то вроде:

journalctl -u docker.service --since "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 и как я могу исправить эту проблему, чтобы я мог просматривать журналы?

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

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

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

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

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), я публикую это здесь в надежде, что это поможет другим.