Гид по технологиям

Чтение и анализ журналов systemd с помощью journalctl

5 min read Linux Обновлено 31 Dec 2025
journalctl: читать и анализировать журналы systemd
journalctl: читать и анализировать журналы systemd

journalctl — стандартный инструмент для чтения журналов, которые собирает служба journald (часть systemd). Он позволяет фильтровать записи по юнитам, pid/uid, времени, приоритету и формату вывода. Для полного доступа к системным журналам запускайте команды с sudo; при необходимости включите постоянное хранение в /var/log/journal.

Важно: по умолчанию journald может хранить логи в оперативной памяти — они не переживут перезагрузку, если не настроено постоянное хранилище.

студент-инженер анализирует логи на ПК

Что такое journald?

Journald — это системная служба логирования, входящая в состав systemd. Она агрегирует структурированные сообщения (журналы) от ядра, системных служб и пользовательских процессов в бинарный журнал. Коротко:

  • Что это в одной строке: бинарный, индексируемый журнал сообщений событий для Linux под управлением systemd.
  • Где хранится: в оперативной памяти по умолчанию; при включении постоянства — в каталоге /var/log/journal.
  • Почему важно: удобная фильтрация и структурированные поля облегчают поиск и автоматизацию анализа.

Основные понятия

  • Systemd — системный менеджер инициализации и сервисов в современных дистрибутивах Linux.
  • journald — подсистема логирования systemd.
  • journalctl — клиент для чтения и фильтрации данных journald.

Как работает journalctl

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

Примеры навигации в просмотрщике: F — переход в режим «следить», B — прокрутка назад, q — выйти.

Доступ и права

journalctl выводит все записи только если у пользователя есть соответствующие права. Для системного исследования используйте sudo:

sudo journalctl

Если вы работаете от обычного пользователя и не видите нужных записей, запросите повышение прав или настройте доступ с помощью групп systemd-journal (зависит от дистрибутива).

Просмотр всех записей

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

sudo journalctl

Вывод journald в хронологическом порядке

Чтобы показать последние записи сверху (обратный порядок):

sudo journalctl -r

Просмотр логов ядра

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

sudo journalctl -k

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

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

journalctl поддерживает гибкую фильтрацию по полям и параметрам.

  • По юниту (systemd service):
sudo journalctl -u cron
  • По PID, UID или GID (пример для root):
sudo journalctl _UID=0
  • Просмотр логов в реальном времени (аналог tail -f):
sudo journalctl -f

Нажмите Ctrl+C, чтобы выйти из режима «следить».

  • По времени (с и до):
sudo journalctl --since=yesterday
sudo journalctl --since="2021-07-17 12:00:00" --until="2021-07-17 15:00:00"
  • По приоритету (уровню): от самых серьёзных (emerg) до отладочных (debug):
sudo journalctl -p err

Сокращённые уровни: emerg, alert, crit, err, warning, notice, info, debug.

Форматы вывода

По умолчанию вывод читается как текст. Для машинной обработки есть форматы JSON и др.:

sudo journalctl -o json-pretty

Вывод journald в формате JSON (pretty)

Другие форматы: short, short-iso, verbose, export, json и т.д. Формат json-pretty удобен для дальнейшей передачи в анализаторы или SIEM.

Экспорт и сохранение выборки

Чтобы сохранить выборку в файл (текстовом или JSON):

sudo journalctl -u nginx --since=today -o json > /tmp/nginx-today.json
sudo journalctl --since="1 hour ago" > /tmp/recent.log

Для переноса бинарного журнала используйте режим экспорта/импорта systemd-journal:

sudo journalctl --rotate
sudo journalctl --vacuum-time=7d
sudo journalctl --output=export > /tmp/journal-archive.export

Конфигурация journald

Файл конфигурации:

/etc/systemd/journald.conf

Ключевые параметры (кратко):

  • Storage — auto/volatile/persistent/none. persistent включает запись в /var/log/journal.
  • SystemMaxUse, RuntimeMaxUse — лимиты по использованию диска/памяти для журнала.
  • MaxRetentionSec — максимальное время хранения.

Если вы хотите, чтобы логи сохранялись между перезагрузками, установите Storage=persistent и создайте каталог /var/log/journal с подходящими правами.

Практический метод расследования (мини-методология)

  1. Сбор: определить время инцидента и юниты, которые могли участвовать.
  2. Фильтрация: сузить выборку по –since/–until, -u, -p или полям _PID/_UID.
  3. Контекст: посмотреть логи ядра (-k) и предыдущие загрузки (-b, -b -1).
  4. Экспорт: сохранить результаты в json-pretty для командной обработки.
  5. Корреляция: сопоставить с другими источниками (syslog, /var/log, мониторинг).

Пример: искать отказ сервиса за последние 2 часа:

sudo journalctl -u myservice --since "2 hours ago" -p err

Ролевые чек-листы

Администратор:

  • Проверить Storage в /etc/systemd/journald.conf.
  • Убедиться, что /var/log/journal существует (если нужен persistent).
  • Настроить вакуумирование и лимиты (SystemMaxUse).

Разработчик:

  • Логировать структурированные поля (_PID, _COMM, MESSAGE).
  • Тестировать локально с journalctl -f при разработке сервисов.

Инженер безопасности:

  • Включить постоянный журнал для аудита.
  • Ограничить доступ к журналу, использовать безопасную передачу в SIEM.

Когда journalctl не поможет — альтернативы и ограничения

  • Некоторые дистрибутивы или старые системы не используют systemd/journald; там остался rsyslog/syslog-ng.
  • Если journald настроен как volatile (в памяти), логи после перезагрузки потеряются.
  • Для долгосрочного хранения, поиска по большим объёмам и аналитики лучше использовать централизованные системы (ELK/Elastic, Graylog, Splunk, Fluentd).

Альтернативные подходы:

  • rsyslog/syslog-ng для текстовых логов в /var/log.
  • Forwarding journald -> rsyslog -> централизованный стек логирования.

Частые ошибки и советы по устранению

  • Не видно нужных записей: проверьте права и запустите с sudo.
  • Журналы быстро заполняют диск: настройте SystemMaxUse/RuntimeMaxUse и vacuum-политику.
  • Потеря данных после перезагрузки: включите Storage=persistent и создайте /var/log/journal.

Критерии приёмки

  • Можно вывести все логи командой sudo journalctl.
  • Можно отфильтровать логи по юниту, времени и приоритету.
  • Логи сохраняются между перезагрузками, если Storage=persistent настроен и /var/log/journal доступен.

Быстрый справочник (cheat sheet)

  • Показать последние 100 строк: sudo journalctl -n 100
  • Следить за логом сервиса: sudo journalctl -u ssh -f
  • Просмотр логов текущей загрузки: sudo journalctl -b
  • Просмотр предыдущей загрузки: sudo journalctl -b -1
  • Фильтр по сообщению: sudo journalctl | grep “ошибка”

Риск и безопасность

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

Краткое резюме

Journalctl — мощный и гибкий инструмент для чтения журналов systemd. Он удобен для локального расследования и предварительной фильтрации перед отправкой логов в SIEM. Настройте persistent storage, лимиты и ротацию, чтобы обеспечить надёжное и предсказуемое хранение логов.

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


Краткая справка по путям и файлам:

  • Конфиг journald: /etc/systemd/journald.conf
  • Постоянное хранилище: /var/log/journal
  • Команда чтения: journalctl
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Очистка и организация Evernote
Продуктивность

Очистка и организация Evernote

Как печатать дизайны Canva — пошагово
Дизайн

Как печатать дизайны Canva — пошагово

Отключить уведомления iPhone для одного контакта
Мобильные

Отключить уведомления iPhone для одного контакта

Tcpdump в Linux — руководство по захвату пакетов
Сеть

Tcpdump в Linux — руководство по захвату пакетов

Ограничение времени запросов curl
Инструменты

Ограничение времени запросов curl

Apple Watch для пожилых: настройка и советы
Здоровье

Apple Watch для пожилых: настройка и советы