Какой стандартный инструмент логирования используется в Linux?

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

Ответ

В современных дистрибутивах Linux используется комбинация двух основных систем:

  1. systemd-journald (демон journald):

    • Часть системы инициализации systemd.
    • Собирает логи ядра, системных служб и приложений в структурированном бинарном формате.
    • Управляется утилитой journalctl.
      # Просмотр логов конкретного сервиса за последний час
      journalctl -u nginx.service --since "1 hour ago"
      # Вывод в формате JSON для дальнейшей обработки
      journalctl -o json
  2. 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.