Где можно посмотреть логи Systemd unit?

«Где можно посмотреть логи Systemd unit?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Логи Systemd управляются через journald. Основной инструмент для их просмотра — команда journalctl. Вот наиболее полезные варианты использования:

# Показать логи конкретного сервиса (unit)
journalctl -u nginx.service

# Следить за логами в реальном времени (аналог tail -f)
journalctl -u postgresql.service -f

# Логи за последний час
journalctl -u docker.service --since "1 hour ago"

# Логи с подробным выводом (включая PID, UID, команду)
journalctl -u sshd.service -o verbose

# Логи только с текущей загрузки системы
journalctl -u kubelet.service -b

# Экспорт логов в JSON для дальнейшей обработки
journalctl -u myapp.service -o json

Практическое применение в DevOps:

  • Мониторинг и отладка: Используем -f для отслеживания запуска сервисов в CI/CD пайплайнах.
  • Сбор метрик: Фильтруем логи по уровню (journalctl -p err) для алертинга в Prometheus/Grafana.
  • Аудит безопасности: Анализируем логи входа через journalctl _COMM=sshd.

Где физически хранятся логи? Бинарные журналы находятся в /var/log/journal/. Для персистентного хранения нужно создать директорию:

sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald