Как просматривать журналы systemctl

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

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

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

Основное использование journalctl

Чтобы начать просмотр журналов systemd, откройте терминал и используйте команду journalctl без аргументов. Это отобразит все доступные записи журнала, начиная с самой старой. Вывод пагинируется с использованием стандартного пейджера (обычно less), позволяя вам легко навигировать по журналам. Используйте стрелки или клавиши Page Up/Down для прокрутки, нажмите ‘q’ для выхода из пейджера и ‘/’ для поиска определенного текста в журналах.

Для просмотра журналов с текущей загрузки используйте флаг -b:

journalctl -b

использование journalctl
использование journalctl

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

journalctl --list-boots

Далее укажите идентификатор загрузки или смещение, чтобы просмотреть журналы с конкретной загрузки:

journalctl -b -1

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

journalctl -f

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

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

journalctl -n 100

самые последние записи журнала journalctl
самые последние записи журнала journalctl

Фильтрация журналов с помощью journalctl

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

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

journalctl -p err

Фильтрация журналов с помощью journalctl
Фильтрация журналов с помощью journalctl

Вы также можете фильтровать журналы по временному диапазону, используя опции --since и --until. Например, для просмотра журналов за последний час:

journalctl --since "1 hour ago"

Для фильтрации журналов конкретного systemd юнита или сервиса используйте опцию -u с последующим именем юнита:

journalctl -u nginx.service

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

journalctl | grep "error"

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

journalctl -u nginx.service -p err --since "30 minutes ago"

Journalctl также поддерживает фильтрацию с использованием синтаксиса field=value, позволяя сопоставлять конкретные поля в структурированных записях журнала. Например, для просмотра журналов конкретного идентификатора процесса (PID):

journalctl _PID=1234

Форматирование вывода journalctl

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

Для отключения пейджера и отображения журналов непрерывным потоком используйте опцию --no-pager:

journalctl --no-pager

Journalctl поддерживает различные форматы вывода, включая short, json, cat и другие. Для изменения формата вывода используйте опцию -o с последующим именем формата. Например, для отображения журналов в формате JSON:

journalctl -o json

Форматирование вывода journalctl
Форматирование вывода journalctl

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

По умолчанию journalctl обрезает длинные строки журнала. Для отображения полной записи журнала используйте опцию -a:

journalctl -a

Для включения цветного вывода, который может улучшить читаемость, используйте опцию --color:

journalctl --color

Продвинутые техники использования journalctl

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

Для проверки целостности файлов журнала используйте опцию --verify:

journalctl --verify

Продвинутые техники использования journalctl
Продвинутые техники использования journalctl

Эта команда проверяет файлы журнала на наличие повреждений и сообщает о любых проблемах.

Для просмотра использования дискового пространства файлами журнала и, при необходимости, очистки (удаления) старых журналов используйте опции --disk-usage и --vacuum-size:

journalctl --disk-usage

sudo journalctl --vacuum-size=500M

Опция --vacuum-size указывает максимальный размер файлов журнала для сохранения.

Файлы журнала могут храниться в постоянных или волатильных местах. Постоянные журналы хранятся в /var/log/journal, в то время как волатильные журналы находятся в /run/log/journal. Для просмотра журналов из конкретной директории используйте опцию --directory:

journalctl --directory=/path/to/journal/directory

Журналы systemd могут быть перенаправлены в традиционный syslog для централизованного журналирования. Для включения перенаправления настройте опцию ForwardToSyslog в файле конфигурации journald.conf.

Помимо журналов systemd, вы также можете изучать журналы ядра с помощью команды dmesg. Journalctl интегрируется с dmesg, позволяя просматривать журналы ядра наряду с другими журналами systemd:

journalctl -k

Journalctl можно комбинировать с другими инструментами командной строки, такими как grep, awk и sed, для продвинутой фильтрации и обработки журналов. Например, для подсчета количества журналов ошибок:

journalctl -p err | grep -c "error"

Доступ к журналам для пользователей без прав root

По умолчанию только пользователь root имеет полный доступ к просмотру всех журналов systemd. Однако вы можете предоставить доступ к журналам пользователям без прав root, добавив их в группу systemd-journal:

sudo usermod -aG systemd-journal username

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

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

Несколько полезных советов

Для эффективного управления и анализа журналов systemd рассмотрите следующие лучшие практики:

  • Реализуйте решение для централизованного управления журналами, чтобы собирать и анализировать журналы с нескольких систем. Инструменты, такие как Elasticsearch, Logstash и Kibana (стек ELK), могут помочь в агрегировании и визуализации журналов.
    Проактивно мониторьте журналы сервисов systemd на предмет ошибок и аномалий. Настройте уведомления и оповещения о критических событиях, чтобы обеспечить своевременный ответ на проблемы.
  • Установите политики ротации и хранения журналов для управления дисковым пространством и соответствия юридическим и регуляторным требованиям. Используйте файл конфигурации journald.conf для установления подходящих лимитов хранения и периодов хранения.
  • Используйте другие инструменты systemd, такие как systemd-analyze, для анализа производительности загрузки и определения узких мест. Регулярно пересматривайте и оптимизируйте конфигурации юнитов systemd для улучшения производительности и надежности системы.

Заключение

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

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

Для дальнейшего изучения и исследования обратитесь к официальной документации systemd и ресурсам сообщества. Удачного журналирования!

Nazario

Я — Nazario, создатель и автор сайта linuxwin.ru, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем.

Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

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