← К вики

journalctl: системные логи

Как читать системные логи через journalctl и фильтровать по сервису, времени или уровню.

Время: 5 мин · Сложность: ★☆☆☆☆

Подходит: ✓ Ubuntu 22.04 · ✓ Debian 12 · ✓ AlmaLinux 9


Краткое описание

journalctl — инструмент для чтения журналов systemd. Хранит логи всех сервисов, ядра и загрузки. Позволяет фильтровать по сервису, времени и уровню важности.

Когда пригодится

  • Сервис упал — найти причину в логах
  • Отладка конфигурации nginx, apache, postgresql
  • Мониторинг ошибок SSH
  • Диагностика проблем при загрузке системы
  • Проверить, что происходило на сервере в определённое время

Что понадобится

  • Доступ к терминалу
  • journalctl входит в systemd, установка не нужна

Пошаговая инструкция

Все логи — листать стрелками, выйти через q:

journalctl

Логи конкретного сервиса:

journalctl -u nginx
journalctl -u sshd

Следить за новыми записями в реальном времени:

journalctl -u nginx -f

Логи с определённого времени:

journalctl --since "2024-01-15 10:00:00"
journalctl --since "1 hour ago"

Только ошибки и выше:

journalctl -p err

Предупреждения и выше:

journalctl -p warning

Последние 100 строк сервиса:

journalctl -u nginx -n 100

Вывод без постраничной прокрутки (удобно для grep):

journalctl -u nginx --no-pager

Комбинировать фильтры — ошибки nginx за последний час:

journalctl -u nginx -p err --since "1 hour ago"

Проверка результата

Пример вывода:

Jan 15 10:23:41 myserver nginx[12345]: 2024/01/15 10:23:41 [error] 12345#0: *1 open() "/var/www/html/missing.html" failed (2: No such file or directory)
Jan 15 10:23:42 myserver sshd[12346]: Failed password for invalid user admin from 1.2.3.4 port 54321 ssh2

Каждая строка содержит: дата и время, имя хоста, сервис с PID, сообщение.

Возможные ошибки

Логи не отображаются для сервиса — проверьте правильное имя: systemctl list-units --type=service | grep имя.

journalctl занимает много места на диске — очистить, оставив не более 500 МБ:

journalctl --vacuum-size=500M

Удалить логи старше 30 дней:

journalctl --vacuum-time=30d

Permission denied — запустите через sudo journalctl.

FAQ

Где физически хранятся логи? В /var/log/journal/ (если включено постоянное хранение) или в /run/log/journal/ (только до перезагрузки). Проверить настройку: cat /etc/systemd/journald.conf | grep Storage.

Как сохранить логи в файл для отправки в поддержку?

journalctl -u nginx --since "1 hour ago" --no-pager > nginx-logs.txt

Какие уровни логирования есть?emerg, alert, crit, err, warning, notice, info, debug. При -p err показываются уровни err и выше.

Как посмотреть логи предыдущей загрузки?journalctl -b -1 — логи предыдущей загрузки. journalctl -b -2 — позапрошлой.

Полезные ссылки

Следующие статьи

Сейчас работают только те cookie, без которых сайт не откроется. Разрешите ещё аналитические — будем видеть, где интерфейс мешает, и чинить это.