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

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


Руководство для начинающих по использованию команд Journalctl для просмотра, фильтрации и анализа журналов журналов в Linux.

systemd используется по умолчанию в большинстве основных дистрибутивов Linux. Одной из основных особенностей systemd является способ сбора журналов и инструменты для их анализа.

В традиционной системе SysVinit имеется системный журнал, в котором журналы хранятся в виде текстовых файлов. Чтение и анализ этих файлов требует использования find, grep, Cut и многих других команд.

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

Что такое журналд? Что такое журналктл?

Journald — это демон из systemd, который собирает журналы из различных источников журналов, таких как системный журнал.

Journalctl — это инструмент командной строки, который позволяет вам взаимодействовать с журналами журнала.

С помощью Journalctl вы можете читать журналы, отслеживать журналы в режиме реального времени, фильтровать журналы по времени, обслуживанию, серьезности и другим параметрам.

В этом уроке я покажу вам, как использовать журналctl для чтения, мониторинга и анализа журналов в Linux.

Проверьте, включены ли журналы журналов в вашей системе

Некоторые дистрибутивы Linux, особенно настольные, по умолчанию не включают журналы журналов.

По умолчанию журналы журнала Journald расположены в каталоге /var/log/journal. Вы должны убедиться, что этот каталог существует. Если нет, создайте его самостоятельно.

Затем в файле /etc/systemd/journald.conf убедитесь, что для значения Storage установлено значение auto или persistent.

В файле Journald.conf показаны значения по умолчанию. Таким образом, даже если перед записями стоит #, это означает, что используются настройки по умолчанию. Если вы хотите что-то изменить, удалите # из этой строки.

Использование команд журналаctl

Позвольте мне показать вам некоторые из самых простых, но полезных примеров команды Journalctl.

Чтение и поиск в журналах с помощью Journalctl

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

journalctl

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

Если вы этого не помните, вот краткое напоминание:

Arrow

Переместиться на одну строку

Space

Перейти на одну страницу вниз

b

Перейти на одну страницу вверх

g

Перейти к первой строке

G

Перейти к последней строке

100g

Перейти на 100-ю строку

/string

Поиск строки с текущей позиции

n/N

Перейти к следующему или предыдущему совпадению поиска

q

Выйти из журналов

Если вы не хотите, чтобы журналы отображались в менее похожем режиме просмотра, вы можете использовать флаг --no-pager. Это отобразит целые журналы прямо на экране.

journalctl --no-pager

Это не очень полезно и заполнит ваш экран, если у вас огромное количество журналов.

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

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

Если вы хотите сначала просмотреть последние журналы, вы можете отобразить журналы журналов в обратном порядке с помощью опции -r:

journalctl -r

Он по-прежнему использует команду less, например view. Итак, нажмите q, чтобы выйти из режима просмотра журнала.

Отображать только N последних строк журналов журнала

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

Например, команда ниже отобразит последние 25 строк журнала:

journalctl -n 25

Показывать журналы журналов в режиме реального времени

Просмотр последних журналов — это одно. Если вы хотите просматривать журналы в реальном времени, вы можете использовать опцию -f команды Journalctl:

journalctl -f

Как и опция -f команды Tail, это будет отображать журналы в режиме реального времени в следующем режиме.

Используйте команду Ctrl+C, чтобы выйти из режима просмотра в реальном времени.

Отображать журналы по времени UTC

По умолчанию журналы журнала отображаются по местному времени вашей системы. Если в вашей системе установлено время, отличное от UTC, и вы хотите видеть журналы в формате UTC, вы можете сделать это, используя флаг --utc.

journalctl --utc

Показывать только сообщения ядра с -k

Журнал systemd аккумулирует логи из разных источников. Если вы просто хотите просмотреть журналы ядра Linux, вы можете использовать опцию -k.

journalctl -k

Совет: используйте sudo, чтобы просмотреть все журналы журналов.

Systemd заботится о том, какие журналы показывать какому пользователю.

Он может отображать некоторые журналы, но не все, если вы обычный пользователь:

abhishek@linux-console:~$ journalctl -u ssh
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
-- Logs begin at Mon 2020-06-22 12:05:47 UTC, end at Tue 2020-07-14 11:59:29 UTC. --
-- No entries --

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

sudo journalctl -u ssh

Показать сообщения из определенного сеанса загрузки

Это отличная особенность журнала. Команда Journalctl позволяет получить доступ к журналам, принадлежащим определенному сеансу загрузки, с помощью опции -b.

Вы можете перечислить все сеансы загрузки с помощью флага --list-boots.

journalctl --list-boots

В выводе будут показаны сеансы загрузки со временем загрузки и целым числом, присвоенным сеансам загрузки:

  -5 513008ead8464c23aab732a2feed5277 Sun 2020-07-12 20:43:38 IST—Sun 2020-07-12 22:40:02 IST
  -4 caff16e3f46a4479b5287fb9e294f610 Mon 2020-07-13 07:36:04 IST—Mon 2020-07-13 19:13:44 IST
  -3 5665f41cc50a4dec9955efacc2596d68 Mon 2020-07-13 20:30:55 IST—Mon 2020-07-13 22:20:34 IST
  -2 c7d17407b0bd476a930af503f64b6006 Tue 2020-07-14 07:58:41 IST—Tue 2020-07-14 18:50:04 IST
  -1 7ab5e04518ec455abe0e2c86fdaa46fa Tue 2020-07-14 21:19:27 IST—Tue 2020-07-14 22:42:11 IST
   0 91856e86d4ee4e828717913deb288568 Wed 2020-07-15 08:11:51 IST—Wed 2020-07-15 17:14:10 IST

Сеанс загрузки 0 — это текущие сеансы загрузки. Сеанс загрузки -1 — это последний загруженный сеанс и так далее.

journalctl -b -2

Представьте себе, что вы пытаетесь сделать это в старой системе системного журнала!

Вы не можете получить только журналы загрузки, подобные тем, которые вы видите в /var/log/boot.log. Однако журналы загрузки всегда находятся в начале журналов, если вы находитесь в режиме сеанса загрузки.

Фильтрация журналов журнала для конкретной службы systemd

Фильтрация — сильная сторона журналов журналов. Вы можете фильтровать журналы на основе сервисов systemd.

journalctl -u service_name

Например, если вы хотите просмотреть журналы, созданные SSH, вы можете использовать это следующим образом:

journalctl -u ssh

Конечно, вам нужно знать имя службы systemd.

Фильтрация журналов за определенный интервал времени

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

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

journalctl --since=yesterday --until=now

Вы также можете указать дату или комбинацию даты и времени:

journalctl --since "2020-07-10"

Вы также можете указать период времени с датами и временем:

journalctl --since "2020-07-10 15:10:00" --until "2020-07-12"

Время начинается в 00:00:00 и определяет день и дату.

Вы также можете использовать относительное время, например -1 час 20 минут, чтобы указать 1 час 20 минут в прошлом.

Фильтрация журналов на основе UID, GID и PID

Если вы устраняете проблему, вы можете проверить журналы определенного процесса, используя его PID.

Журналы журнала также можно фильтровать по идентификатору пользователя (UID), идентификатору группы (GID) и идентификатору процесса (PID). Ниже приведен пример:

journalctl _PID=1234

Совет: Объедините несколько параметров для более индивидуального просмотра журнала.

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

Например, если вы хотите видеть только вчерашние журналы SSH с метками времени UTC, вы можете использовать:

sudo journalctl -u ssh --since=yesterday --utc

Другое распространенное использование — фильтрация журналов на основе сеансов загрузки. Если вы хотите видеть только журналы SSH в текущем сеансе, вы можете использовать:

sudo journalctl -u ssh -b0

Возможности безграничны, и вы можете комбинировать варианты в зависимости от ваших потребностей.

Использование Journalctl -xe для просмотра последних нескольких журналов

Вы часто встретите людей, предлагающих использовать команду journalctl -xe.

  • -e: перейти в конец журналов журнала.

  • -x: показать дополнительную информацию о записях журнала (если доступно).

Некоторые записи журнала содержат дополнительную информацию, которая не отображается при обычном просмотре журнала. Использование опции -x может отобразить такую информацию.

То, что вы видите как одну строку, выглядит так:

Jul 09 16:33:40 linux-console systemd[1]: Started Run anacron jobs.

Он может отображать дополнительную информацию следующим образом:

Jul 09 16:33:40 linux-console systemd[1]: Started Run anacron jobs.
-- Subject: A start job for unit anacron.service has finished successfully
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- A start job for unit anacron.service has finished successfully.
-- 
-- The job identifier is 3702.

Дополнительная информация помогает объяснить контекст ошибки или события журнала и возможные решения.

Показывать только ошибки в журналах с помощью Journalctl

Чтобы показать все ошибки в текущем сеансе, вы можете использовать:

journalctl -p 3 -xb
  • -p 3: фильтровать журналы по приоритету 3 (что является ошибкой)

  • -x: предоставляет дополнительную информацию в журнале (если имеется)

  • b: с момента последней загрузки (текущий сеанс)

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

0

возникать

1

тревога

2

крит.

3

ошибаться

4

предупреждение

5

уведомление

6

Информация

7

отлаживать

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

journalctl -p 4..6 -b0

Вы также могли бы использовать warning..info в приведенной выше команде вместо 4..6.

Проверьте, сколько места на диске занимают журналы

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

Вы можете проверить, сколько места на диске занимают журналы журнала с помощью этой команды Journalctl:

journalctl --disk-usage

Вы можете быть удивлены (или шокированы), когда увидите результат:

abhishek@linux-console:~$ journalctl --disk-usage 
Archived and active journals take up 2.8G in the file system.

2,8 ГБ? Это много. Возможно, вы захотите очистить журналы журнала.

Наслаждайтесь анализом журналов с помощью команды Journalctl

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

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

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

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