Как использовать команду 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 для регулярного анализа журналов. Надеюсь, вам понравится это подробное руководство по журналу.
Если у вас есть предложения или вопросы, не стесняйтесь оставлять комментарии.


