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