journalctl

Доступ к журналу
gpasswd -a $USER wheel

Фильтрация сообщений по уровню ошибки

Вывод лога в текстовый файл
journalctl -b > /home/user/debug.log

Показывать записи журнала с момента запуска системы с расшифровкой ошибок:
journalctl -xb


journalctl -b # последняя загрузка
journalctl -b -1 # предыдущая загрузка

journalctl -b 0
journalctl -p err -b
journalctl -p err -b -1 -u NetworkManager

0 — EMERG (система неработоспособна);
1 — ALERT (требуется немедленное вмешательство);
2 — CRIT (критическое состояние);
3 — ERR (ошибка);
4 — WARNING (предупреждение);
5 — NOTICE (всё нормально, но следует обратить внимание);
6 — INFO (информационное сообщение);
7 —DEBUG (отложенная печать)

Просмотр сообщений ядра
journalctl -k
journalctl -k -b -2
journalctl --dmesg

Фильтрация по приложениям и службам
journalctl -u httpd.service -u mysql.service
journalctl -u nginx.service -u php-fpm.service —since today

Фильтрация по процессам, пользователям и группам

Просмотреть список всех доступных фильтров
man systemd.journal-fields

journalctl -F _PID # процессы
journalctl -F _UID # пользователи
journalctl -F _GID # группы

просмотреть логи всех процессов, запущенных от имени этого пользователя:
id -u www-data
journalctl _UID=33

Фильтрация по пути
journalctl /usr/bin/docker

фильтрация по дате и времени
journalctl --since "2017-05-05 00:01" --until "2017-05-06 01:40"


cat — только сообщения из логов без служебных полей;
export — бинарный формат, подходит для экспорта или резервного копирования логов;
short — формат вывода syslog;
short-iso — формат вывода syslog с метками времени в формате ISO 8601;
short-monotonic — формат вывода syslog c метками монотонного времени (monotonic timestamp);
short-precise — формат вывода syslog с метками точного времени (время событий указывается с точностью до микросекунд);
verbose — максимально подробный формат представления данных (включает даже те поля, которые в других форматах не отображаются).


Просмотр логов в режиме реального времени
journalctl -f

Просмотр информации о недавних событиях
journalctl -n
journalctl -n 20

Запись в журнал
systemd-cat echo "Текст сообщения"
journalctl -f
апр 18 01:14:13 arch1 echo[4822]: Текст сообщения

Поиск информации в журнале
journalctl SYSLOG_IDENTIFIER=Test
выводит все сообщения имеющие идентификатор сообщения Test.

Запись логов в стандартный вывод
journalctl --no-pager > log.txt

Выбор формата вывода
journalctl -u nginx.service -o json


Анализ этапа загрузки
Выявляем самые медленные процессы (от пользователя):

systemd-analyze blame
Выводим график загрузки процессов в векторный рисунок:

systemd-analyze plot > file.svg

Управление логгированием

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

Все загрузки системы
journalctl --list-boots

Определение текущего объёма логов
journalctl --disk-usage

Настройка ротации логов в конфигурационном файле

/etc/systemd/journald.conf
/var/log/journal/

SystemMaxUse= максимальный объём, который логи могут занимать на диске;
SystemKeepFree= объём свободного места, которое должно оставаться на диске после сохранения логов;
SystemMaxFileSize= объём файла лога, по достижении которого он должен быть удален с диска;
RuntimeMaxUse= максимальный объём, который логи могут занимать в файловой системе /run;
RuntimeKeepFree= объём свободного места, которое должно оставаться в файловой системе /run после сохранения логов;
RuntimeMaxFileSize= объём файла лога, по достижении которого он должен быть удален из файловой системы /run.


systemctl restart systemd-journald # применить конфигурацию
journalctl --vacuum-size=100M # автоматически удалять все логи при превышении объёма
journalctl --vacuum-time=1months # Удалить все логии старше последнего месяца
systemctl status systemd-journald
journalctl -t systemd-journald