Ответ
В современных дистрибутивах Linux используется комбинация двух основных систем:
-
systemd-journald (демон
journald):- Часть системы инициализации systemd.
- Собирает логи ядра, системных служб и приложений в структурированном бинарном формате.
- Управляется утилитой
journalctl.# Просмотр логов конкретного сервиса за последний час journalctl -u nginx.service --since "1 hour ago" # Вывод в формате JSON для дальнейшей обработки journalctl -o json
-
Rsyslog (или его предшественник Syslog):
- Более традиционная, гибкая система для обработки и маршрутизации логов.
- Позволяет записывать логи в файлы (
/var/log/), отправлять на удалённый сервер или в базу данных. - Конфигурация находится в
/etc/rsyslog.confи файлах в/etc/rsyslog.d/.# Пример правила в rsyslog.conf: все логи kernel сохранять в отдельный файл kern.* /var/log/kernel.log
Для ротации и архивации логов используется утилита logrotate. Она сжимает старые логи, удаляет их по истечении срока и переименовывает файлы.
В DevOps-практике эти системы часто дополняются агентами (например, Fluentd, Vector, Filebeat), которые собирают логи из файлов и журнала journald, парсят их и отправляют в централизованное хранилище, такое как Elasticsearch (ELK/EFK стек) или Grafana Loki.