Поиск по сайту:

Просмотр и анализ журналов Systemd с помощью Journalctl [Полное руководство]


В этом руководстве объясняются основы утилиты Journalctl Systemd и ее различных команд. Вы можете использовать эти команды для устранения неполадок журналов рабочего стола и сервера в Linux. Вот как вы можете использовать журналctl для просмотра и анализа журналов Systemd на различных примерах.

Введение

Многие говорят, что Systemd плох, он тяжел для системы и всегда является обсуждаемой темой. Но нельзя отрицать, что он предоставляет хороший набор утилит для управления системой, устранения неполадок. Представьте, что у вас сломанная система без графического интерфейса. Вероятно, вы также испортили загрузку и GRUB. В таких сценариях или в целом вы можете загрузиться из LIVE-системы, смонтировать раздел Linux и изучить журналы Systemd, чтобы узнать о проблеме.

Systemd имеет три основных компонента:

  • systemd: менеджер систем и служб для операционных систем Linux.
  • systemctl: команда для анализа и контроля состояния системы systemd и менеджера служб.
  • systemd-analyze: предоставляет статистику производительности загрузки системы и получает другую информацию о состоянии и трассировке от менеджера системы и служб.

Помимо этих трех, существуют дополнительные сервисы, которые предоставляет systemd, такие как — Journald, Logind, Networkd и т. д. В этом руководстве мы поговорим о сервисе Journald systemd.

journald - демон журнала systemd

По замыслу systemd обеспечивает централизованный способ обработки всех журналов операционной системы из процессов, приложений и т. д. Все эти события журналирования обрабатываются демоном Journald из systemd. Демон Journald собирает все журналы всех операционных систем Linux и сохраняет темы в виде двоичных данных в файлах.

Преимущества централизованной регистрации событий и системных проблем в виде двоичных данных многочисленны. Например, поскольку системные журналы хранятся в двоичном, а не текстовом виде, вы можете переводить их разными способами, например в текст, объекты JSON для различных нужд. Кроме того, очень легко отследить одно событие, поскольку журналы сохраняются последовательно с помощью манипуляций с датой и временем в журналах.

Помните, что файлы журналов, которые собирает Journald, состоят из тысяч строк и обновляются для каждого события и каждой загрузки. Поэтому, если вы уже давно используете операционную систему Linux, размер журналов журнала должен быть в ГБ. Поскольку журналы исчисляются тысячами, лучше фильтровать их с помощью основных команд, чтобы узнать больше о системных проблемах.

Файл конфигурации Journald

Файл конфигурации Journald находится по следующему пути. Он содержит различные флаги о том, как происходит ведение журнала. Вы можете просмотреть файл и внести необходимые изменения. Но я бы рекомендовал не изменять этот файл, если вы не знаете, что делаете.

/etc/systemd/journald.conf

Где Journald хранит файлы двоичного журнала

Journald хранит журналы в двоичном формате. Они хранятся в каталоге по этому пути.

/var/log/journal

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

путь к файлу журнала Journalctl

Не используйте команду cat и не используйте nano или vi, чтобы открыть эти файлы. Они не будут отображаться должным образом.

Используйте журналctl для просмотра и анализа журналов Systemd

Основная команда журнала

Основная команда для просмотра журналов с помощью демона журнала:

journalctl

журналctl

Это дает вам все записи журнала, включая ошибки, предупреждения и т. д., из всех приложений и процессов. Он показывает список, в котором самый старый журнал находится вверху, а текущие журналы внизу. Вам нужно продолжать нажимать ENTER, чтобы прокручивать его построчно. Вы также можете использовать клавиши PAGE UP и PAGE DOWN для прокрутки. Нажмите q, чтобы выйти из этого режима просмотра.

Как просмотреть записи журнала для часовых поясов

По умолчанию журналctl показывает время журнала в текущем часовом поясе системы. Однако вы можете легко указать часовой пояс в своей команде, чтобы преобразовать тот же журнал в другой часовой пояс. Например, чтобы просмотреть журналы в формате UTC, используйте команду ниже.

journalctl --utc

журналctl -utc

Как просмотреть в журналах журнала только ошибки, предупреждения и т. д.

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

Для просмотра экстренных системных сообщений используйте:

journalctl -p 0

журналctl -p 0

Коды ошибок

0: emergency
1: alerts
2: critical
3: errors
4: warning
5: notice
6: info
7: debug

Когда вы указываете код ошибки, отображаются все сообщения из этого кода и выше. Например, если вы укажете приведенную ниже команду, она отобразит все сообщения с приоритетом 2, 1 и 0.

journalctl -p 2

Как просмотреть журналы журнала для конкретной загрузки

Когда вы запускаете команду Journalctl, она показывает информацию из текущей загрузки, то есть из текущего сеанса, который вы запускаете. Но также можно просмотреть информацию о прошлых загрузках.

Журналы журнала продолжают обновляться при каждой перезагрузке. Journald отслеживает журналы в разных загрузках. Для просмотра журналов загрузки используйте команду ниже.

journalctl --list-boots

список-ботинок журналаctl

  • Первое число показывает уникальный номер дорожки загрузки Journald, который вы можете использовать в следующей команде для анализа этой конкретной загрузки.
  • Второе число — идентификатор загрузки, который также можно указать в командах.
  • Следующие две комбинации даты и времени представляют собой продолжительность журналов, хранящихся в соответствующем файле. Это очень удобно, если вы хотите узнать журнал или ошибку за определенную дату и время.

Чтобы просмотреть конкретный номер загрузки, введите первый номер или идентификатор загрузки, как показано ниже.

journalctl -b -45
journalctl -b 8bab42c7e82440f886a3f041a7c95b98

журналctl -b 45

Вы также можете использовать переключатель -x, который может добавить объяснение сообщений об ошибках systemd на ваш дисплей. Это спасатель в определенных ситуациях.

journalctl -xb -p 3

журналctl -xb

Как просмотреть журналы журнала за определенное время и продолжительность даты

Journalctl достаточно мощный, чтобы предоставить «английский» аргумент в самой команде для манипулирования временем и датой.

Вы можете использовать переключатель --since с комбинацией «вчера», «сегодня», «завтра» или «сейчас».

Некоторые примеры различных команд ниже. Вы можете изменить их в соответствии с вашими потребностями. Они говорят сами за себя. Формат даты и времени в приведенных ниже командах: "ГГГГ-ММ-ДД ЧЧ:ММ:СС"

journalctl --since "2020-12-04 06:00:00"
journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"

журналctl -с 09:00 -до

Вы также можете комбинировать вышеперечисленное с переключателями уровня ошибки.

Как просмотреть журналы журнала ядра

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

journalctl -k

Как просмотреть журналы журнала службы, PID

Вы можете отфильтровать определенные журналы из сервисного модуля systemd только из журналов Journald. Например, чтобы узнать журналы службы NetworkManager, используйте команду ниже.

journalctl -u NetworkManager.service

служба Journalctl NetworkManager

Если вы не знаете имя службы, вы можете использовать команду ниже, чтобы просмотреть список служб systemd в вашей системе.

systemctl list-units --type=service

Как просмотреть журналы журнала пользователя, группы

Если вы анализируете журналы сервера, эта команда полезна, когда в систему вошли несколько пользователей. Сначала вы можете узнать идентификатор пользователя, используя приведенную ниже команду по имени пользователя. Например, чтобы узнать идентификатор пользователя «debugpoint» —

id -u debugpoint

Затем используйте этот идентификатор с переключателем _UID для просмотра журналов, созданных пользователем.

journalctl _UID=1000 --since today

журналctl _UID

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

Как просмотреть журналы журнала исполняемого файла

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

journalctl /usr/bin/gnome-shell --since today

журналctl gnome-shell

Заключительные замечания

Я надеюсь, что это руководство поможет вам использовать журналctl для просмотра журналов анализа systemd на рабочем столе Linux или устранения неполадок сервера. Управление журналами systemd чрезвычайно мощное, если вы знаете, как использовать команды, оно немного облегчает вашу жизнь во время отладки. В настоящее время все основные дистрибутивы Linux используют Systemd. Ubuntu, Debian, Fedora, Arch — все они используют systemd в качестве ОС по умолчанию. Если вас интересуют дистрибутивы Linux без systemd, вы можете проверить MX-Linux, Gentoo, Slackware, Void Linux.

Статьи по данной тематике