Шпаргалка journalctl. Где находятся журналы и сколько они занимают

Менеджер инициализации systemd фактически уже стал стандартом в современных Linux-системах. На данный момент он используется во многих популярных дистрибутивах: Debian, RHEL/CentOS, Arch, Ubuntu. systemd имеет собственную систему ведения логов, названную журналом (journal), которая использует принципиально иной (по сравнению с традиционным инструментом syslog) подход к логгированию.

В связи с этим больше не требуется запускать демон syslog. А для просмотра логов и различных операций с ними используется команда

# journalctl

Размещение журналов

Обычно журналы записываются в каталог /var/log/journal/. Если вы или какая-то программа удалит этот каталог, systemd не пересоздаст его автоматически и вместо этого будет писать свои журналы по пути /run/log/journal. Поскольку в /run монтируется непостоянная файловая система в памяти, то после перезагрузки все данные предыдущего сеанса будут утеряны.

Такое поведение при сохранении журналов определяется параметром конфигурации Storage в значении auto. При установке Storage=persistent журналы будут всегда размещаться в каталоге /var/log/journal/ и каталог будет автоматически пересоздаваться, если будет удален. При установке Storage=volatile журналы будут храниться в /run/log/journal и только за текущий сеанс. Значение none запрещает systemd ведение журналов.

Данный параметр находится в конфигурационном файле /etc/systemd/journald.conf. После изменений в конфигурации необходимо перезагрузиться или выполнить команду:

# systemctl restart systemd-journald

Размер журналов

Посмотреть размер журналов на диске можно командой

# journalctl --disk-usage

Ручная очистка журналов

Выше я написал где находятся файлы журналов. Можете командой rm поудалять их. Но лучше использовать journalctl.

Для очистки архивных журналов так чтобы на диске остался занятым указанный объем (для примера 100Мб) используйте команду:

# journalctl --vacuum-size=100M

Для очистки архивных журналов так чтобы на диске остались только данные за последний указанный период времени (для примера 2 недели) используйте команду:

# journalctl --vacuum-time=2weeks

Автоматическая очистка журналов

Если у вас настроено сохранение журналов, то по умолчанию размер журналов ограничен значением в 10% от объема раздела на котором он сохраняется. Этот значение можно можно контролировать. Для этого в конфигурационном файле /etc/systemd/journald.conf используются два параметра SystemMaxUse и RuntimeMaxUse. Первый определяет объем выделяемый под журналы в каталоге /var/log/journal/, второй – под /run/log/journal (в памяти).

Смысла в установке второго параметра нет, а вот первый (особенно если у вас обычный desktop а не server) стоит изменить на что-то вроде этого:

SystemMaxUse=128M

Текущие разрешенные лимиты для журналов на диске и в памяти можно увидеть в статусе демона systemd-journald:

# systemctl status systemd-journald

Или в самих журналах при помощи команды:

# journalctl -t systemd-journald

В последнем случае вы даже увидите историю изменений, если меняли значения лимитов.

Стоит отметить, что если у вас допустим раздел /var на 15Гб, то под логи отдавалось 1,5Гб. Вы решили уменьшить этот объем. Изменили параметр в конфигурационном файле, перезагрузились или перестартовали демон, смотрите сколько же теперь занимают журналы и видите что занятый объем несколько отличается от заданного вами значения.

Дело в том что systemd хранит журналы не в одном файле размером на весь отведенный объем. Он хранит их в нескольких файлах. Один файл – текущий, другие – архивные. Размер файла равен одной восьмой отведенного объема. Т.е. в идеале один текущий файл и семь архивных. Когда текущий файл заполняется, файлы ротируются. Количество файлов определяются параметрами SystemMaxFiles и RuntimeMaxFiles, либо рассчитываются если задать параметры SystemMaxFileSize и RuntimeMaxFileSize определяющие максимальный размер файла журнала.

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

Вывод журналов и фильтрация сообщений

О том какую информацию можно получить из бинарных файлов systemd journal и как фильтровать вывод журналов я писал в статье Как искать в журнале, ошибки и процессы. О форматах вывода и просмотре информации о недавних событиях я писал в статье Стандартный вывод и аналог tail .

Поделиться в FacebookДобавить в TwitterДобавить в Telegram

Комментарии

  1. (#)   Sid:

    Я очищаю логи таким (варварским?) способом: sudo rm -rf /var/log/*


  2. (#)   root:

    проще выключить все логи :sudo systemctl disable rsyslog


Оставить комментарий

Ответ на Шпаргалка journalctl. Где находятся журналы и сколько они занимают