< Systemd (Русский)

systemd (Русский)/Journal (Русский)

systemd использует журнал (journal), собственную систему ведения логов, в связи с чем больше не требуется запускать отдельный демон логирования. Для чтения логов используйте команду journalctl(1).

Состояние перевода: На этой странице представлен перевод статьи systemd/Journal. Дата последней синхронизации: 10 декабря 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

В 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.

ЗначениеВажностьКлючевое словоОписаниеПримеры
0EmergencyemergCистема не работоспособнаСерьёзный баг в ядре, дамп памяти systemd.
Данный уровень не должен использоваться приложениями.
1AlertalertCистема требует немедленного вмешательстваОтказ важной подсистемы. Потеря данных.
.
2CriticalcritCостояние системы критическоеАварийные отказы, дампы памяти. Например, знакомое сообщение:

Отказ основных приложений системы, например, X11.
3ErrorerrCообщения об ошибкахСообщение о некритической ошибке:
,
systemd[1]: Failed unmounting /var.,
libvirtd[1720]: internal error: Failed to initialize a valid firewall backend
4WarningwarningПредупреждения о возможных проблемахВ некорневой файловой системе остался всего 1 ГБ свободного места.
.
5NoticenoticeCообщения о нормальных, но важных событиях,
6InformationalinfoИнформационные сообщения
7DebugdebugОтладочные сообщения

Вышеуказанные правила являются рекомендацией и окончательное решение остаётся за разработчиком приложения. Всегда возможно, что сообщение будет выше или ниже ожидаемого уровня.

Категории

Коды категорий (facility) syslog используются для указания типа программы, добавляющего сообщение в лог RFC 5424.

Код категорииКлючевое словоОписаниеИнформация
0kernСообщения ядра
1userСообщения программного обеспечения пользователя
2mailПочтовая системаАрхаический POSIX всё ещё поддерживается и иногда используется (см. для получения более подробной информации)
3daemonСистемные службыВсе демоны, включая systemd и его подсистемы
4authСообщения безопасности (авторизации)См. также код 10
5syslogСобственные сообщения syslogdДля реализаций syslogd (не используется в systemd, см. код 3)
6lprПодсистема печати (архаическая подсистема)
7newsПодсистема новостных групп (архаическая подсистема)
8uucpПодсистема UUCP (архаическая подсистема)
9clock daemonsystemd-timesyncd
10authprivСообщения безопасности (авторизации)См. также код 4
11ftpСлужба FTP
12-Подсистема NTP
13-Журнал аудита
14-Аварийный журнал
15cronСлужба планирования
16local0Локальное использование 0 (local0)
17local1Локальное использование 1 (local1)
18local2Локальное использование 2 (local2)
19local3Локальное использование 3 (local3)
20local4Локальное использование 4 (local4)
21local5Локальное использование 5 (local5)
22local6Локальное использование 6 (local6)
23local7Локальное использование 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) или пост в блоге Леннарта Пёттеринга.

Совет: По умолчанию journalctl отсекает части строк, которые не вписываются в экран по ширине, хотя иногда перенос строк может оказаться более предпочтительным. Управление этой возможностью производится посредством переменной окружения 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 и Пользователи и группы#Пользовательские группы.

gollark: It would be hard to do that when I do not operate one.
gollark: Wrong.
gollark: Well, you thought wrong.
gollark: I'm sure you can eat other foods, which actually exist.
gollark: Logically impossible.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.