systemd (Русский)/Journal (Русский)
systemd использует журнал (journal), собственную систему ведения логов, в связи с чем больше не требуется запускать отдельный демон логирования. Для чтения логов используйте команду journalctl(1).
В Arch Linux каталог /var/log/journal/
— это часть пакета systemd и по умолчанию (когда в конфигурационном файле /etc/systemd/journald.conf
параметру Storage=
задано значение auto
) журнал записывается именно в /var/log/journal/
. Если каталог будет удалён, systemd не пересоздаст его автоматически и вместо этого будет вести журнал в /run/systemd/journal
без сохранения между перезагрузками. Однако каталог будет пересоздан, если добавить Storage=persistent
в и перезапустить systemd-journald.service
(или перезагрузиться).
Сообщения в журнале классифицируются по уровню приоритета и категории (Facility). Классификация записей соответствует классическому протоколу Syslog (RFC 5424).
Уровни приоритета
Коды важности syslog (в systemd называются приоритетами) используются для пометки важности сообщений RFC 5424.
Значение | Важность | Ключевое слово | Описание | Примеры |
---|---|---|---|---|
0 | Emergency | emerg | Cистема не работоспособна | Серьёзный баг в ядре, дамп памяти systemd. Данный уровень не должен использоваться приложениями. |
1 | Alert | alert | Cистема требует немедленного вмешательства | Отказ важной подсистемы. Потеря данных. . |
2 | Critical | crit | Cостояние системы критическое | Аварийные отказы, дампы памяти. Например, знакомое сообщение: Отказ основных приложений системы, например, X11. |
3 | Error | err | Cообщения об ошибках | Сообщение о некритической ошибке: , systemd[1]: Failed unmounting /var. ,libvirtd[1720]: internal error: Failed to initialize a valid firewall backend |
4 | Warning | warning | Предупреждения о возможных проблемах | В некорневой файловой системе остался всего 1 ГБ свободного места. . |
5 | Notice | notice | Cообщения о нормальных, но важных событиях | , |
6 | Informational | info | Информационные сообщения | |
7 | Debug | debug | Отладочные сообщения |
Вышеуказанные правила являются рекомендацией и окончательное решение остаётся за разработчиком приложения. Всегда возможно, что сообщение будет выше или ниже ожидаемого уровня.
Категории
Коды категорий (facility) syslog используются для указания типа программы, добавляющего сообщение в лог RFC 5424.
Код категории | Ключевое слово | Описание | Информация |
---|---|---|---|
0 | kern | Сообщения ядра | |
1 | user | Сообщения программного обеспечения пользователя | |
2 | Почтовая система | Архаический POSIX всё ещё поддерживается и иногда используется (см. для получения более подробной информации) | |
3 | daemon | Системные службы | Все демоны, включая systemd и его подсистемы |
4 | auth | Сообщения безопасности (авторизации) | См. также код 10 |
5 | syslog | Собственные сообщения syslogd | Для реализаций syslogd (не используется в systemd, см. код 3) |
6 | lpr | Подсистема печати (архаическая подсистема) | |
7 | news | Подсистема новостных групп (архаическая подсистема) | |
8 | uucp | Подсистема UUCP (архаическая подсистема) | |
9 | clock daemon | systemd-timesyncd | |
10 | authpriv | Сообщения безопасности (авторизации) | См. также код 4 |
11 | ftp | Служба FTP | |
12 | - | Подсистема NTP | |
13 | - | Журнал аудита | |
14 | - | Аварийный журнал | |
15 | cron | Служба планирования | |
16 | local0 | Локальное использование 0 (local0) | |
17 | local1 | Локальное использование 1 (local1) | |
18 | local2 | Локальное использование 2 (local2) | |
19 | local3 | Локальное использование 3 (local3) | |
20 | local4 | Локальное использование 4 (local4) | |
21 | local5 | Локальное использование 5 (local5) | |
22 | local6 | Локальное использование 6 (local6) | |
23 | local7 | Локальное использование 7 (local7) |
Полезные категории для наблюдения: 0, 1, 3, 4, 9, 10, 15.
Фильтрация вывода
journalctl позволяет фильтровать вывод по определённым полям. Если должно быть отображено большое количество сообщений или необходима фильтрация большого промежутка времени, то вывод команды может занять значительное время.
Примеры:
- Показать сообщения с момента текущей загрузки системы: Также пользователи часто интересуются сообщениями предыдущей загрузки (например, если произошёл невосстановимый сбой системы). Это возможно, если задать параметр флагу :
journalctl -b -0
покажет сообщения с момента текущей загрузки,journalctl -b -1
— предыдущей загрузки, — следующей за предыдущей и т.д. Для просмотра полного описания смотрите страницу справочного руководства journalctl(1), поддерживается и более мощная семантика. - Добавить пояснения к сообщениям логов из каталога сообщений, где это возможно: Обратите внимание, что эту возможность лучше не использовать, когда излишние комментарии нежелательны — например, при добавлении копии логов в сообщение о баге или письмо в поддержку. Вывести существующие пункты каталога можно командой .
- Показать сообщения, начиная с определённой даты (и, опционально, времени):
- Показать сообщения за последние 20 минут:
- Следить за появлением новых сообщений:
- Показать сообщения конкретного исполняемого файла:
- Показать сообщения конкретного процесса:
- Показать сообщения конкретного юнита:
- Показать сообщения от пользовательской службы конкретного юнита:
$ journalctl --user -u dbus
- Показать кольцевой буфер ядра:
# journalctl -k
- Показать сообщения только с приоритетами error, critical и alert: Также можно использовать числа, например, . Если указать одно число/уровень приоритета, например, , то также будут показаны сообщения и с более высоким приоритетом (от 0 до 3, в данном случае).
- Показать эквивалент auth.log используя фильтрацию категорий syslog:
- Если в каталоге с журналами (по умолчанию ) очень много данных, то фильтрация вывода может занять несколько минут. Процесс можно значительно ускорить с помощью опции , указав только самый свежий журнал:
Для получения дополнительной информации смотрите страницы справочного руководства journalctl(1), systemd.journal-fields(7) или пост в блоге Леннарта Пёттеринга.
SYSTEMD_LESS
, в которой содержатся опции, передаваемые в less (программу постраничного просмотра, используемую по умолчанию). По умолчанию переменная имеет значение FRSXMK
(для получения дополнительной информации смотрите less(1) и journalctl(1)).
Если убрать опцию S
, будет достигнут требуемый результат. Например, запустите journalctl, как показано здесь:
$ SYSTEMD_LESS=FRXMK journalctlДля использования такого поведения по умолчанию, экспортируйте переменную из файла
~/.bashrc
или ~/.zshrc
.Ограничение размера журнала
Если журнал сохраняется при перезагрузке, его размер по умолчанию ограничен значением в 10% от объема соответствующей файловой системы (и максимально может достигать 4 ГиБ). Например, для каталога , расположенном на корневом разделе в 20 ГиБ, максимальный размер журналируемых данных составит 2 ГиБ. На разделе же 50 ГиБ журнал сможет занять до 4 ГиБ. Текущие пределы для вашей системы можно узнать из логов :
# journalctl -b -u systemd-journald
Максимальный объем постоянного журнала можно задать вручную, раскомментировав и отредактировав следующий параметр:
Также возможно использование конфигурационных сниппетов вместо редактирования глобального файла конфигурации. В таком случае поместите переопределения в разделе :
Перезапустите systemd-journald.service
для применения изменений.
Для получения дополнительной информации обратитесь к странице справочного руководства .
Ограничение размера для юнита
Отредактируйте файл юнита службы, которую вы хотите настроить (например, sshd), добавив параметр в раздел .
Затем создайте файл journald@ssh.conf
, скопировав содержимое файла /etc/systemd/journald.conf
. Отредактируйте его, задав необходимое значение SystemMaxUse
.
Перезапустите юнит, чтобы включилась новая служба журнала . Логи службы из определённого "пространства имён" можно увидеть командой .
Подробнее о пространствах имён журнала см. .
Очистка файлов журнала вручную
Файлы журнала можно удалить из директории /var/log/journal/
, к примеру, с помощью или для удаления части журналов по определённым критериям. Например:
- Удалять заархивированные файлы журнала, пока занимаемое ими место не составит менее 100 МиБ:
- Ограничить все файлы журнала хранением данных только за последние две недели:
Для получения дополнительной информации, обратитесь к journalctl(1).
Journald вместе с syslog
Совместимость с классической реализацией syslog можно обеспечить, перенаправляя все сообщения systemd через сокет . Для работы демона syslog с журналом, следует привязать его к данному сокету вместо (официальное сообщение).
Для перенаправления данных в сокет, в journald.conf
по умолчанию задан параметр , чтобы избежать перегрузки на систему, так как rsyslog или syslog-ng самостоятельно получают сообщения из журнала.
Смотрите Syslog-ng#Overview и Syslog-ng#syslog-ng and systemd journal или rsyslog для получения подробной информации о конфигурировании.
Перенаправление журнала в /dev/tty12
Создайте drop-in каталог и файл в нём со следующим содержимым:
/etc/systemd/journald.conf.d/fw-tty12.conf
[Journal] ForwardToConsole=yes TTYPath=/dev/tty12 MaxLevelConsole=info
Затем перезапустите службу .
Выбор журнала для просмотра
Иногда необходимо проверить логи другой системы, например, загружаясь с работоспособной системы для восстановления неисправной. В таком случае примонтируйте диск, к примеру, в и укажите путь журнала с помощью флага / следующим образом:
# journalctl -D /mnt/var/log/journal -e
Доступ к журналу как пользователь
По умолчанию обычные пользователи могут читать только свой собственный пользовательский журнал. Чтобы дать доступ на чтение системного журнала обычному пользователю, добавьте его в группу . Для групп и также предоставляется доступ на чтение.
Подробнее смотрите journalctl(1) § DESCRIPTION и Пользователи и группы#Пользовательские группы.