journalctl - шпаргалка

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

 

journalctl - шпаргалка

Журналы ведутся ротационно, в зависимости от настроек, при переполнении запись начинается в другой журнал, чтобы посмотреть сколько у вас журналов, можно выполнить команду:

journalctl --list-boots

так вы получите журналы и их номер впереди, по которому можно будет далее обращаться, если этого не знать, то может быть вы будете смотреть только старые журналы.

 

Смотрим логи с конца:

journalctl -e

 

то есть после названия команды далее перечисляются опции 

 

  • --unit, -u - показать сообщения от выбранного сервиса;
  • --system - выводить только системные сообщения;
  • --user - выводить только сообщения пользователя;
  • --field, -F - вывести все данные из выбранного поля;
  • --fields, -N - вывести все доступные поля;
  • --all, -a - отображать все поля в выводе full, даже если они содержат непечатаемые символы или слишком длинные;
  • -f - выводить новые сообщения в реальном времени, как в команде tail;
  • --full, -l - отображать все доступные поля;
  • --grep, -g - фильтрация по тексту сообщения;
  • --dmesg, -k - показывает сообщения только от ядра. Аналог вызова команды dmesg;
  • --pager-end, -e - отобразить только последние сообщения из журнала;
  • --since, -S, --until, -U - фильтрация по дате и времени;
  • --list-boots - показать список сохраненных загрузок системы;
  • --boot, -b - показать сообщения с момента определенной загрузки системы. По умолчанию используется последняя загрузка;
  • --output, -o - настраивает формат вывода лога;
  • --machine, -M - выводить сообщения от определенного контейнера;
  • --catalog, -x - добавить к информации об ошибках пояснения, ссылки на документацию или форумы там, где это возможно;
  • --list-catalog - вывести все доступные подсказки для ошибок;
  • --vacuum-time - очистить логи, давностью больше указанного периода;
  • --vacuum-size - очистить логи, чтобы размер хранилища соответствовал указанному.
  • --lines, -n - количество строк, которые нужно отображать на одном экране, по умолчанию 10;
  • --no-tail - отображать все строки доступные строки;
  • --reverse, -r - отображать новые события в начале списка;
  • --output-fields - поля, которые нужно выводить;
  • --quiet, -q - не показывать все информационные сообщения;
  • --merge, -m - показывать сообщения из всех доступных журналов;
  • --identifier, -t - показать сообщения с выбранным идентификатором;
  • --user-unit - фильтровать сообщения от выбранной сессии;
  • --priority, -p - фильтровать сообщения по их приоритету. Есть восемь уровней приоритета, от 0 до 7;
  • --cursor, -c - начать просмотр сообщений с указанного места;
  • --header - выводить заголовки полей при выводе журнала;
  • --disk-usage - вывести общий размер лог файлов на диске;
  • --sync - синхронизировать все не сохраненные журналы с файловой системой;
  • --flush - перенести все данные из каталога /run/log/journal в /var/log/journal;
  • --rotate - запустить ротацию логов;
  • --no-pager - выводить информацию из журнала без возможности листать страницы;

 

 

Горячие клавишы

  • q - выйти.
  • Стрелка вниз, Enter, e или j - переместиться вниз на одну строку;
  • g - перейти на первую строку;
  • G - перейти на последнюю строку;
  • / - поиск по журналу;
  • Стрелка вверх, y или k - переместиться на одну строку вверх;
  • Пробел - переместиться на одну страницу вниз;
  • b - переместиться на одну страницу вверх;
  • Стрелка вправо, стрелка влево - горизонтальна прокрутка;
  • p - перейти на позицию нужного процента сообщений. Например, 50p перенесет курсор на середину вывода;
  • n - найти следующее вхождение;
  • N - предыдущее вхождение;

 

 

 

Примеры с journalctl

1) Как посмотреть журнал определенного сервиса на сервере:

journalctl -eu nginx

или:

journalctl -eu apache2.service

 

2) Показать как проходила последняя загрузка системы и когда:

journalctl -b

 

3) Указать с какого точно времени отображать логи:

journalctl --since "2023-01-20 10:10:10"

 

Можно четко выделить с какое по какое время нужны логи - например за 1 час

journalctl --since "2023-01-20 10:10:10 --until "2023-01-20 11:10:10"

 

4) как определить какой журнал и перейти к его просмотру

 

 

5) Журналирование процессов ядра:

journalctl -ek

 

5) Интересно еще наблюдать в реальном времени:

journalctl -f

 

Формат вывода

По умолчанию journalctl выводит информацию с помощью утилиты less, но формат вывода можно изменить:

  • short - используется по умолчанию;
  • verbose - также, как и short, только выводится намного больше информации;
  • cat - отображать только сообщения, без метаданных.
  • json - вывод в формате json, одна строка лога в одной строке вывода;
  • json-pretty - форматированный вывод json для более удобного восприятия;

 

Например :

journalctl -o json-pretty

 

 

Настройки журналирования

Узнаем сколько места занимают логи journalctl :

journalctl --disk-usage

 

Ограничим размеры логов в 2 Гб :

journalctl --vacuum-size=2G

 

Оставляем логи только за последний год, остальные удаляем:

journalctl --vacuum-time=1years

 

Например :

journalctl -o json-pretty

 

Интересное 

1) Посмотрим логи за последние 10 минут:

journalctl --since "10 minutes ago"

 

2) Посмотрим с каких ip и стран к нам ломятся засранцы и пытаются взломать сервер:

journalctl --since "10 minutes ago" | grep sshd

это для популярных сайтов более актуально

 

 

Добавить комментарий


Защитный код
Обновить

Вы здесь: Сайтостроение Сисадмин journalctl - шпаргалка