Отредактировано 1 день назад от ExtremeHow Редакционная команда
ДебианjournalctlЛогиКомандная строкаАдминистрирование системыЛинуксМониторингОткрытый исходный кодУстранение неполадокПрограммное обеспечение
Перевод обновлен 1 день назад
Debian известен своей стабильностью и обширным репозиторием программных пакетов. Одним из ключевых аспектов поддержания стабильной и безопасной системы является регулярное мониторинг системных журналов. Логи помогают системным администраторам понять, что происходит в системе. Они могут предоставить бесценную информацию для устранения неполадок или понимания работы системы.
Традиционный метод управления логами в Linux-системах - это использование текстовых файлов, расположенных в каталоге /var/log
. Эти логи управляются различными службами, такими как syslog
или, более конкретно, rsyslog
в многих системах Debian. Однако с появлением systemd
была внедрена новая система логирования под названием journald
, которая предлагает некоторые важные улучшения и функции по сравнению с традиционными методами логирования.
В этом документе мы подробно обсудим, как можно использовать команду journalctl
для просмотра и управления логами systemd
в Debian. Давайте исследуем эту мощную команду и узнаем, как она может помочь вам эффективно управлять своими системными логами.
Прежде чем обсуждать использование journalctl
, важно иметь базовое понимание systemd
и journald
. systemd
- это менеджер системы и сервисов для операционных систем Linux. Он разработан для предоставления лучшего управления сервисами и производительности запуска системы. journald
- это компонент логирования systemd
, который отвечает за сбор и хранение логов.
В отличие от традиционных методов логирования, которые хранят логи в виде обычных текстовых файлов, journald
сохраняет логи в бинарном формате, что может предоставить несколько преимуществ, включая улучшенную производительность, индексацию и возможности фильтрации.
Команда journalctl
используется для запроса этих бинарных данных логов с широким диапазоном параметров фильтрации, чтобы сделать его как можно более универсальным.
Самый простой способ использовать journalctl
- запустить его без аргументов или опций. Это отобразит все доступные записи логов, начиная с самой старой.
$ journalctl
Лог будет отображаться с отметкой времени и сообщением для каждой записи. Однако, учитывая потенциально большой объем записей, использование опции для просмотра лога ежедневно обычно непрактично, особенно на системах, которые работают длительное время.
Часто вас интересует только просмотр самых последних логов, а не просмотр старых записей. С помощью флага -n
с последующим числом можно указать, сколько последних строк вы хотите видеть:
$ journalctl -n 50
Эта команда получает последние 50 записей лога. Поведение по умолчанию, без указания числа, заключается в отображении последних десяти строк:
$ journalctl -n
Еще одной полезной функцией является возможность отслеживать логи в реальном времени, по мере их создания, аналогично команде tail -f
для традиционных логов. Это можно сделать с помощью флага -f
:
$ journalctl -f
Эта команда будет отображать новые записи лога по мере их появления, что особенно полезно для мониторинга вывода логов во время сеансов устранения неполадок.
Одним из мощных аспектов journalctl
является его способность фильтровать логи, используя различные критерии. Это важно, когда вам нужно точно определить определенные события или типы записей лога.
Вы можете легко фильтровать логи по определенному временному диапазону, используя опции --since
и --until
. Обе опции принимают различные форматы времени, включая относительное время:
$ journalctl --since "2023-03-01 00:00:00" --until "2023-03-01 23:59:59"
Вы также можете использовать относительное время:
$ journalctl --since "1 hour ago"
Здесь отображаются логи за последний час.
Поскольку journald
глубоко интегрирован с systemd
, который управляет сервисами как "единицами", вы можете фильтровать логи для определенной единицы сервиса. Используйте флаг -u
с последующим названием единицы:
$ journalctl -u apache2.service
Это покажет только логи, связанные с сервисом Apache Web Server, что полезно при диагностике проблем, связанных с конкретными сервисами.
Логи systemd имеют разные приоритеты. Если вас интересуют только более серьезные сообщения лога, вы можете фильтровать логи по этим приоритетам:
$ journalctl -p err
Эта команда отобразит только записи лога с уровнем приоритета "ошибка" или выше, что может включать сообщения "критичные", "предупреждение" и "аварийные".
Вы можете комбинировать различные фильтры, чтобы еще более точно ограничить количество логов. Например, если вам нужно получить сообщения об ошибках для сервиса Apache2 за последний час:
$ journalctl -u apache2.service -p err --since "1 hour ago"
Эта гибкость позволяет быстро сосредотачивать внимание на интересующих вас логах.
По умолчанию journald
может не сохранять постоянные логи между перезагрузками на некоторых системах. Это можно подтвердить, просмотрев логи после перезагрузки. Если вы хотите включить постоянное логирование, убедитесь, что каталог /var/log/journal
существует. Если его нет, создайте его:
$ sudo mkdir -p /var/log/journal $ sudo systemctl restart systemd-journald
Это настроит journald
на хранение логов постоянно между перезагрузками в бинарном формате журналов.
Со временем журналы могут накапливаться и занимать значительное пространство на диске. Вы можете управлять использованием дискового пространства с помощью команды journalctl
:
Вы можете увидеть, сколько пространства занимают журналы, используя опцию --disk-usage
:
$ journalctl --disk-usage
Эта команда отобразит общее пространство, занимаемое журналами.
Вы можете удалить старые логи, используя опции --vacuum-time
, --vacuum-size
или --vacuum-files
. Например, если вы хотите удалить логи старше двух недель, используйте следующую команду:
$ sudo journalctl --vacuum-time=2weeks
Чтобы хранить только определенный объем мегабайт логов (например, 500 МБ), используйте:
$ sudo journalctl --vacuum-size=500M
Этот метод позволит журналу использовать до указанного объема места на диске.
Иногда вам может потребоваться поделиться или изучить логи за пределами среды журнала. Вы можете экспортировать логи в различных форматах с помощью journalctl
:
Вы можете перенаправить вывод журнала в текстовые файлы для легкого обмена или архивирования:
$ journalctl > /path/to/your/output.txt
Эта команда скопирует весь лог в текстовый файл. Вы можете применить фильтры, чтобы ограничить вывод.
Чтобы вывести логи в формате JSON, который может быть программно разобран различными инструментами, используйте опцию -o json
:
$ journalctl -o json-pretty > /path/to/your/output.json
Эта команда создаст JSON-представление логов, что облегчает программный разбор данных логов.
Если вы хотите создать бинарную резервную копию, включающую все дополнительные метаданные, вы можете использовать опцию --output-export
:
$ journalctl --output-export > /path/to/backup.journal
Это позволяет сохранить всю специфичную для журнала информацию в формате, который можно легко импортировать обратно в systemd-journal
с помощью journalctl --merge
с файлом резервной копии.
Команда journalctl
является мощным инструментом в системах Debian, где systemd
используется для управления логами через journald
. Она предоставляет мощные возможности для просмотра, фильтрации и управления системными логами, обеспечивая значительное преимущество по сравнению с традиционными методами логирования в отношении гибкости и эффективности.
С помощью простых команд journalctl
позволяет просматривать логи в хронологическом порядке, отслеживать их в реальном времени, фильтровать по различным условиям и управлять данными логов, хранящимися в вашей системе. Для системных администраторов и пользователей понимание того, как использовать journalctl
, может привести к лучшему мониторингу системных событий и более быстрому устранению неполадок, что в конечном итоге способствует поддержанию бесперебойной работы системы.
Если вы найдете что-то неправильное в содержании статьи, вы можете