Шпаргалка journalctl. Стандартный вывод и аналог tail.
Очередная шпаргалка по journalctl. Первые две: Где находятся журналы и сколько они занимают и Как искать в журнале, ошибки и процессы
Использование стандартного вывода
По умолчанию journalctl использует для вывода журнала сообщений внешнюю утилиту less. Это не всегда бывает удобно, ведь в этом случае невозможно применять стандартные утилиты для обработки текстовых данных. Например, если мы хотим использовать grep для дополнительной фильтрации, следует направить сообщения от journalctl сразу на стандартный вывод. Для этого предусмотрен отдельный параметр --no-pager
, используя который вывод journalctl можно будет передать другим утилитам для дальнейшей обработки или сохранить в текстовом файле. Например:
# journalctl -p err -b -1 --no-pager | grep smbd > /tmp/smbd.err
Можно изменить вывод через переменную окружения:
# export SYSTEMD_PAGER=cat
Аналог tail или просмотр информации о недавних событиях
Для просмотра информации о последних событиях используется опция -n
. По умолчанию выводится 10 последних сообщений. Для вывода другого количества сообщений следует указать число этих сообщений после опции -n
:
# journalctl -n
# journalctl -n 25
Для отслеживания сообщений журнала в реальном времени используется опция -f
. Она прекрасно работает совместно с другими параметрами фильтрации.
# journalctl -f
# journalctl -f -u nginx -u php-fpm
Использование форматов вывода
Для собственной дальнейшей обработки сообщения журнала можно выводить в различных форматах. Для этого используется опция -o
, после которой необходимо указать формат в который следует преобразовать вывод. Доступны следующие форматы:
- cat – только сообщения из логов без служебных полей;
- export – бинарный формат, подходит для экспорта или резервного копирования логов;
- json – стандартный JSON, одна запись на строку
- json-pretty – отформатированный, удобо-читаемый JSON
- short – формат вывода syslog по умолчанию;
- short-iso – формат вывода syslog с метками времени в формате ISO 8601;
- short-monotonic – формат вывода syslog c метками монотонного времени (monotonic timestamp);
- short-precise – формат вывода syslog с метками точного времени (время событий указывается с точностью до микросекунд);
- verbose – максимально подробный формат представления данных (включает даже те поля, которые в других форматах не отображаются).
Пример команды:
# journalctl -b -u nginx -o json-pretty
Какая информация хранится в журналах
Полный перечень метаданных журнала можно посмотреть в руководстве или на примере одной записи журнала следующей командой:
# journalctl -o verbose -n 1
Команда выводит одну последнюю запись журнала в максимально подробном формате. Вывод выглядит примерно так:
Wed 2017-05-31 17:32:51.718196 EEST [s=20c67a50f2ea48e383a0f070685a6c73;i=65c67;b=f778d05bffa44062a6d58b80354e0748;m=87aece2cb;t=550d2cb89e034;x=2c4b88e7c29159
_MACHINE_ID=601956dc24a848aabcfc29afe3903a34
_HOSTNAME=spiridon
PRIORITY=6
SYSLOG_FACILITY=3
_UID=0
_GID=0
_CAP_EFFECTIVE=3fffffffff
_TRANSPORT=stdout
SYSLOG_IDENTIFIER=slim
_COMM=slim
_EXE=/usr/bin/slim
_CMDLINE=/usr/bin/slim -nodaemon
_SYSTEMD_OWNER_UID=1000
_SYSTEMD_SLICE=user-1000.slice
_SYSTEMD_USER_SLICE=-.slice
_SYSTEMD_CGROUP=/user.slice/user-1000.slice/session-c1.scope
_SYSTEMD_SESSION=c1
_SYSTEMD_UNIT=session-c1.scope
_SYSTEMD_USER_UNIT=slim.service
MESSAGE=urxvt: Loading image icon failed, continuing without.
_PID=644
_BOOT_ID=f778d05bffa44062a6d58b80354e0748
_SYSTEMD_INVOCATION_ID=e440a0ffa93243d39699fd8591da7d96
Журнал индексируется по каждому из этих полей и поэтому в запросах можно использовать любое из этих полей для фильтрации и вывода сообщений. А как строить такие запросы описано в статье Как искать в журнале, ошибки и процессы.