Инструкция по использованию Journalctl в Linux — Марстел

ПерезвонимВам

Попробовать бесплатно
Нажимая ОТПРАВИТЬ я соглашаюсь с обработкой персональных данных
Заявка в МАРС Телеком - заполните форму данными
Вы также можете связаться с нашими специалистами по телефону 8 800 333-65-40 (звонок бесплатный по всей территории России).
Скачать МАРС Коннектор
МАРС Коннектор

Программа МАРС Коннектор служит для подключения к услуге «Аренда виртуального сервера» и «Аренда 1С».

СКАЧАТЬ
Инструкция по использованию Journalctl в Linux

Инструкция по использованию Journalctl в Linux


В операционных системах Linux используется система журналирования на основе демона journald, который обрабатывает сообщения от различных источников, таких как службы, initrd, ядро и другие. Для доступа к собранной в журнале информации предоставляется утилита под названием journalctl.

Получить консультацию
Листайте ниже

В операционных системах Linux используется система журналирования на основе демона journald, который обрабатывает сообщения от различных источников, таких как службы, initrd, ядро и другие. Для доступа к собранной в журнале информации предоставляется утилита под названием journalctl.

В операционных системах Linux используется система журналирования на основе демона journald, который обрабатывает сообщения от различных источников, таких как службы, initrd, ядро и другие. Для доступа к собранной в журнале информации предоставляется утилита под названием journalctl.

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

Общая информация

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

Система журналирования systemd представляет собой универсальное решение, которое может использоваться в различных сценариях. Ее применяют вместе с уже существующей системой syslog, в качестве альтернативы для syslog или дополнительного механизма заполнения журнала. Возможно также объединение технологий, чтобы эффективно решать конкретные задачи в определенных ситуациях.

Настроим системное время

Благодаря хранению журнала в двоичном формате, можно просматривать записи в двух режимах: локальное время и время по Гринвичу (UTC). По умолчанию используется локальное время. Однако, перед началом работы, рекомендуется проверить настройки часового пояса. Это можно сделать с помощью инструмента timedatectl, включенного в пакет systemd.

Давайте сначала посмотрим список всех доступных часовых поясов в системе:

timedatectl list-timezones

Пожалуйста, определите часовой пояс, соответствующий фактическому местоположению сервера, и выполните его установку:

sudo timedatectl set-timezone zone

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

Local time: Thu 2022-01-03 17:08:06 EST
Universal time: Thu 2022-01-03 21:08:06 UTC
RTC time: Thu 2022-01-03 21:08:06
Time zone: America/New_York (EST, -0500)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a

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

Просмотр содержимого журнала

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

journalctl

-- Logs begin at Tue 2022-02-03 21:48:52 UTC, end at Tue 2022-02-03 22:29:38 UTC. --
Feb 04 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is using 6.2M (max allowed 49.
Feb 04 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is using 6.2M (max allowed 49.
Feb 04 21:48:52 localhost.localdomain systemd-journald[139]: Received SIGTERM from PID 1 (systemd).
Feb 04 21:48:52 localhost.localdomain kernel: audit: type=1404 audit(1423000132.274:2): enforcing=1 old_en
Feb 04 21:48:52 localhost.localdomain kernel: SELinux: 2048 avtab hash slots, 104131 rules.
Feb 04 21:48:52 localhost.localdomain kernel: SELinux: 2048 avtab hash slots, 104131 rules.
Feb 04 21:48:52 localhost.localdomain kernel: input: ImExPS/2 Generic Explorer Mouse as /devices/platform/
Feb 04 21:48:52 localhost.localdomain kernel: SELinux:  8 users, 102 roles, 4976 types, 294 bools, 1 sens,
Feb 04 21:48:52 localhost.localdomain kernel: SELinux:  83 classes, 104131 rules
...

При длительной работе системы, журнал может занимать значительное количество экранов. Однако пользователю предоставлена возможность прокрутки, что позволяет последовательно просмотреть всё содержимое. Такой формат вывода будет знаком тем, кто уже имел опыт работы со стандартными журналами syslog. Важно отметить, что весь вывод отображается в локальном времени, соответствующем системе.

Если требуется заменить временные метки на формат UTC, мы запустим утилиту с использованием соответствующего флага:

journalctl –utc

Отфильтруем журнал по времени

Чем дольше система работает, тем сложнее обрабатывать информацию из журнала. Поэтому для упрощения поиска конкретных данных используют фильтр по времени.

Вывод журналов текущей загрузки

Один из самых простых и часто используемых флагов - это -b. Он позволяет просмотреть записи журнала, собранные с момента последнего включения компьютера (или перезагрузки):

journalctl –b

В списке будут отображаться только важные данные, необходимые для запуска системы, без информации, собранной в процессе ее работы. Кроме того, в общем журнале также предусмотрена возможность нахождения этих данных по маркеру:

-- Reboot --

Предыдущие загрузки

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

sudo mkdir -p /var/log/journal

Команда для редактирования конфигурационного файла системы ведения журналов systemd:

sudo nano /etc/systemd/journald.conf

Локализуйте раздел [Journal] в файле конфигурации и установите для опции Storage значение persistent. Это позволит активировать постоянное хранение информации без ее удаления.

Временные окна

На серверах, работающих без перезапуска, информация о загрузке системы становится практически ненужной. Однако, очень полезно иметь доступ к информации о ключевых событиях. Для этого мы будем использовать опции --since и --until с утилитой journalctl, которые позволяют ограничить вывод записей журнала по времени. Мы можем указать интервал времени после опции --since или до опции --until, используя формат YYYY-MM-DD HH:MM:SS. Таким образом, мы получим только те записи журнала, которые соответствуют указанному временному диапазону.

Приведу пример ввода команды:

journalctl --since "2022-01-10 17:15:00"

При указании только времени, система автоматически добавит текущую дату. Если не указано время, используется значение 00:00:00. То же происходит, если не указано поле секунд, которое обычно несущественно для анализа ситуации. Кроме того, доступно использование "относительных" значений, таких как yesterday (вчера).

journalctl --since yesterday

Приведу пример команды для получения отчета по сбоям, произошедшим 1 час назад:

journalctl --since 09:00 --until "1 hour ago"

Фильтр по значимости

В дополнение к временным критериям, команда journalctl позволяет фильтровать записи по важным службам или их компонентам. Система systemd поддерживает несколько способов фильтрации.

По единицам

Для фильтрации по единицам (службам) используется опция -u. Если необходимо вывести журнал только по Nginx, выполним следующую команду:

journalctl -u nginx.service

С командой journalctl возможно совмещение фильтрации по единицам (службам) и диапазону времени:

journalctl -u nginx.service --since today

По процессу (пользователю, идентификатору группы)

В процессе работы некоторые службы создают дочерние процессы, которые могут стать важными при анализе ситуации. В этом случае, для фильтрации, нам понадобится точное значение PID (идентификатор процесса) конкретного процесса. Пример команды с фильтрацией по PID выглядит следующим образом:

journalctl _PID=7077

Иногда требуется запросить весь объем записей, внесенных в журнал под определенным пользователем или в рамках указанной группы. Для этой цели применяют фильтры _UID и _GID. В качестве примера рассмотрим пользователя www-user. Найдем его с помощью следующей команды:

id -u www-user

33

Теперь мы воспользуемся "подчеркнутым" идентификатором для активации фильтра.

journalctl _UID=33 --since today

По пути компонента

С помощью этой команды можно указать путь к исполняемому файлу, информацию о котором требуется изучить в данный момент. Например, для фильтрации по исполняемому файлу bash, используем следующий пример:

journalctl /usr/bin/bash

В зависимости от файла, возможно отображение информации о дочерних процессах (иногда это может не работать).

Отображение сообщений ядра

Система журналирования поддерживает вывод сообщений ядра операционной системы Linux. Вся информация будет содержаться в dmesg. Для получения этой информации можно использовать опции --dmesg или -k при вводе команды.

journalctl -k

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

journalctl -k -b -5

По приоритету

Фильтрация по приоритету сообщений представляет интерес. Это позволяет временно исключить информацию с низким приоритетом для более удобного исследования ситуации без отвлечения и путаницы. Для этого используется опция -p с добавлением категории сообщений. Например, чтобы просмотреть все сообщения с ошибками, выполним следующую команду:

journalctl -p err –b

Вывод будет содержать информацию, помеченную следующими маркерами: "error", "critical", "alert" и "emergency". Все эти маркеры представляют разные уровни индикации проблем, но они все относятся к указанной категории. В стандарте системы syslog применяются стандартные уровни ошибок, каждому из которых присвоено определенное числовое значение. Эти числа обозначают конкретный приоритет.

0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug

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

Выводы

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


https://marstel.ru/server

Уже уходите?

Хотите, перезвоним Вам за 30 секунд?

Сейчас на линии несколько свободных специалистов готовых перезвонить Вам для консультации!

Жду звонка
Идёт отправка!

Звонок для Вас бесплатный