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 — позапрошлой.