Если вы работаете на современном дистрибутиве linux, то почти наверняка используете systemd, а значит - и journald для сбора логов. Это система логирования, которая умеет куда больше, чем просто показывать логи командой journalctl. Сегодня - о том, как удобно фильтровать и разделять логи по уровню важности (info, warning, error и т.д.) и сервисам, чтобы быстро находить нужную информацию.
▪️ Фильтрация логов по юниту. Чтобы посмотреть логи конкретного сервиса:
journalctl -u nginx.service
Добавьте -b для вывода только с текущей загрузки:
journalctl -u ssh.service -b
▪️ Логи по уровню важности. Вы можете указать минимальный уровень важности:
journalctl -p err # Только ошибки и критичнее
Список уровней (от менее к более важным):
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
Пример: показать все warning и выше от sshd:
journalctl -u ssh.service -p warning
▪️ Ограничение по времени. Чтобы не утонуть в огромных логах:
journalctl --since "1 hour ago"
journalctl --since "2025-09-18" --until "2025-09-19 03:00"
▪️ Разделение логов по каталогам. По умолчанию journald пишет в
/run/log/journal (в RAM), если /var/log/journal отсутствует. Чтобы сохранять логи между перезагрузками:
mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald
▪️ Настройка persist-логирования и лимитов. В файле
/etc/systemd/journald.conf можно настроить:
Storage=persistent
SystemMaxUse=500M
RuntimeMaxUse=100M
MaxRetentionSec=7day
После правок - перезапустите journald:
systemctl restart systemd-journald
▪️ Глубокие фильтры. Вывести только ошибки от ядра:
journalctl _TRANSPORT=kernel -p err
Фильтр по PID:
journalctl _PID=1234
По имени бинарника:
journalctl _COMM=nginx
#logs #systemd
🧑💻 NetworkAdmin