Использование journalctl в Linux для просмотра и управления журналами системы

Утилита journalctl в Linux используется для просмотра и управления журналами системы (логи), которые собираются службой systemd-journald, частью системы инициализации и управления службами systemd. Она предоставляет централизованный доступ к логам, собираемым из разных источников на системе, включая ядро, начальную загрузку, и службы. journalctl тесно интегрирована с systemd, основной системой инициализации и управления службами в современных дистрибутивах Linux. systemd использует systemd-journald для сбора и хранения логов.

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

Зачем нужна journalctl:

  1. Централизованное логирование: journalctl обеспечивает единый доступ к логам системы, что упрощает процесс поиска и анализа журналов событий.
  2. Подробные логи: Журналы, собранные systemd-journald, содержат подробную информацию, включая метаданные о процессе, который сгенерировал сообщение, временные метки с высокой точностью и многое другое.
  3. Фильтрация и поиск: journalctl предлагает мощные возможности для фильтрации и поиска в журналах, позволяя пользователям легко находить записи, соответствующие определенным критериям, таким как диапазон дат, приоритет сообщений или связанные с определенной службой.
  4. Управление журналами: journalctl позволяет настраивать поведение журналов, например, контролировать размер журналов, настраивать их ротацию и период хранения.

Утилита journalctl предлагает множество опций для просмотра и фильтрации логов системы. Вот несколько примеров использования journalctl:

  • Для просмотр всех логов просто введите команду journalctl
  • Просмотр логов определенной службы (например, nginx.service):
journalctl -u nginx.service
  • Просмотр логов за определенный период времени: например, "2023-01-01":
journalctl --since "2023-01-01"
journalctl --since "2023-01-01" --until "2023-01-02"

Логи за последние 24 часа:

journalctl --since "1 day ago"
  • Для непрерывного просмотра логов в реальном времени, аналогично тому как работает tail -f, вы можете использовать -f (follow) опцию с journalctl. Эта команда будет выводить новые журналы по мере их поступления, что особенно полезно для мониторинга текущих событий системы в реальном времени. Например, мы хотим увидеть кто пытается получить доступ по протоколу SSH:
journalctl -f -u ssh.service
  • Просмотр логов с пагинацией (прокрутка вверх и вниз по страницам):
journalctl | less

Просмотр определенного количества последних записей (например, последние 20 записей):

journalctl -n 20
  • Фильтрация по приоритету (например, показать только ошибки):
journalctl -p err
  • Просмотр логов в обратном порядке (последние события первыми):
journalctl -r

Посмотреть размер всех файлов логов systemd-journald

journalctl --disk-usage

Чтобы очистить до нужного размера файлы логов для systemd версии 218 и выше можно использовать ключи vacuum-size и vacuum-time. Опция –vacuum-size=10M позволяет управлять размером журнала, удаляя старые записи до тех пор, пока общий размер не уменьшится до указанного значения. Опция указывает journalctl удалить старые записи до тех пор, пока общий размер журнала не станет равным или меньше 10 мегабайт.

journalctl --vacuum-size=10M

Если вы хотите удалить записи по времени, вы можете использовать опцию –vacuum-time. Например, чтобы удалить записи старше 1 дня, выполните:

$ journalctl --vacuum-time=1d

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

PQ VPS сервера в 28+ странах.