Логирование в Linux: journald, rsyslog, Loki
Логирование в Linux: journald, rsyslog, Loki
Логи — это глаза и уши системного администратора. Когда что-то идёт не так, именно журналы первыми дают ответ на вопрос «что произошло и когда». Современный Linux предлагает несколько уровней логирования: встроенный journald, классический rsyslog и современный Loki для централизованного сбора.
journald: системный журнал по умолчанию
systemd-journald — стандартный сборщик логов во всех современных дистрибутивах. Он собирает сообщения от systemd-юнитов, ядра, syslog и приложений. Основной инструмент для работы с ним — journalctl.
Просмотр всех логов:
journalctl
Логи конкретного сервиса:
journalctl -u nginx.service
Следить за логами в реальном времени:
journalctl -u nginx.service -f
Логи за последний час:
journalctl --since "1 hour ago"
Логи за конкретный период:
journalctl --since "2026-04-01 00:00" --until "2026-04-02 00:00"
Только ошибки и критические сообщения:
journalctl -p err
По умолчанию journald хранит логи в памяти. Чтобы включить персистентное хранение, отредактируйте /etc/systemd/journald.conf:
[Journal]
Storage=persistent
SystemMaxUse=2G
rsyslog: классика для пересылки логов
Rsyslog — зрелый и гибкий демон логирования, который умеет фильтровать, трансформировать и пересылать логи по сети. На многих серверах он работает параллельно с journald.
Конфигурация rsyslog находится в /etc/rsyslog.conf и /etc/rsyslog.d/. Пример пересылки всех логов на удалённый сервер по UDP:
*.* @192.168.1.100:514
Для TCP (надёжнее):
*.* @@192.168.1.100:514
Пример фильтрации — писать только сообщения nginx в отдельный файл:
if $programname == 'nginx' then /var/log/nginx-custom.log
& stop
Loki: современный агрегатор логов
Loki от Grafana Labs — это как Prometheus, но для логов. Он не индексирует содержимое логов, только метки (labels), что делает его очень экономным по ресурсам. В связке с Promtail (агент сбора) и Grafana (визуализация) получается мощная система.
Установка Promtail для отправки логов в Loki:
# Скачать бинарник
wget https://github.com/grafana/loki/releases/latest/download/promtail-linux-amd64.zip
unzip promtail-linux-amd64.zip
chmod +x promtail-linux-amd64
mv promtail-linux-amd64 /usr/local/bin/promtail
Минимальный конфиг /etc/promtail/config.yml:
server:
http_listen_port: 9080
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*.log
В Grafana можно строить дашборды и настраивать алерты на основе логов так же, как и для метрик.
Что выбрать
- journald — для просмотра логов на конкретном сервере, всегда доступен
- rsyslog — если нужна централизованная пересылка по syslog-протоколу, совместимость с legacy-системами
- Loki — для современной инфраструктуры с Grafana, особенно если уже используется Prometheus
Три инструмента прекрасно сосуществуют: journald собирает, rsyslog пересылает, Loki агрегирует и хранит.
Loki — огонь, особенно в связке с Grafana. Перешли на него полгода назад и не жалеем, ресурсов жрёт в разы меньше чем ELK при сопоставимом функционале.