Linux

Настройка rsyslog в Linux: пошаговая конфигурация и сбор логов

Гайд по быстрой и надёжной настройке rsyslog на Linux: вы научитесь собирать, фильтровать и хранить системные журналы локально или с удалённых узлов.

Обновлено 28 апреля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04/24.04Debian 11/12RHEL 8/9CentOS Stream 8/9

Введение / Зачем это нужно

Rsyslog — это широко распространённый системный журнал, который позволяет собирать, фильтровать и хранить логи с локальной машины или сети. Настройка rsyslog помогает централизовать мониторинг, упростить поиск инцидентов и защитить важные журналы ротацией и правильными правами. После этой инструкции у вас будет работающий сервер логов и, при необходимости, клиенты, отправляющие на него события.

Требования / Подготовка

  • Сервер и клиент на базе поддерживаемых дистрибутивов (Ubuntu 22.04/24.04, Debian 11/12, RHEL 8/9).
  • Права root или пользователь с sudo.
  • Открытый порт 514/udp (и/или 514/tcp) на сервере в файрволле, если планируется приём по сети.
  • Установленный пакет rsyslog (в большинстве систем он предустановлен).

Шаг 1: Установка и запуск rsyslog

Убедитесь, что rsyslog установлен, и включите его автозапуск:

# Ubuntu/Debian
sudo apt update && sudo apt install -y rsyslog

# RHEL/CentOS
sudo dnf install -y rsyslog

Запустите службу и проверьте статус:

sudo systemctl enable --now rsyslog
sudo systemctl status rsyslog

Если служба активна, базовая конфигурация готова к редактированию.

Шаг 2: Настройка сервера приёма логов

Откройте главный конфигурационный файл:

sudo nano /etc/rsyslog.conf

Включите модули для UDP и TCP (раскомментируйте или добавьте):

module(load="imudp")
input(type="imudp" port="514")

module(load="imtcp")
input(type="imtcp" port="514")

Создайте файл с правилами для клиентов:

sudo nano /etc/rsyslog.d/10-remote.conf

Пример правила: сохранять логи от клиентов в отдельные файлы по IP-адресу:

if $fromhost-ip != '127.0.0.1' then /var/log/remote/%HOSTNAME%.log
& stop

Создайте каталог и задайте права:

sudo mkdir -p /var/log/remote
sudo chown syslog:adm /var/log/remote
sudo chmod 750 /var/log/remote

Перезапустите rsyslog:

sudo systemctl restart rsyslog

Проверьте, что порт слушается:

sudo ss -ulnp | grep 514
sudo ss -tlnp | grep 514

Шаг 3: Настройка клиента (пересылка логов)

На клиенте создайте файл конфигурации для пересылки. Для отправки всех локальных журналов используйте:

sudo nano /etc/rsyslog.d/20-forward.conf

Пример пересылки по UDP (замените 10.0.0.1 на IP сервера):

*.* @10.0.0.1:514

Для TCP используйте двойное @@:

*.* @@10.0.0.1:514

Если нужно отправлять только ошибки и критические события, укажите уровень:

*.err;kern.warning;auth.notice @10.0.0.1:514

Сохраните файл и перезапустите клиента:

sudo systemctl restart rsyslog

Шаг 4: Ротация и права для логов

Настройте ротацию для файлов в /var/log/remote/. Создайте конфиг logrotate:

sudo nano /etc/logrotate.d/rsyslog-remote

Пример конфигурации:

/var/log/remote/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 0640 syslog adm
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

Примените права к существующим файлам:

sudo chown -R syslog:adm /var/log/remote
sudo chmod -R 750 /var/log/remote

Проверка результата

С клиента отправьте тестовое сообщение:

logger -n 10.0.0.1 -P 514 "Test message from $(hostname)"

На сервере проверьте, появился ли файл клиента и содержит ли он сообщение:

tail -f /var/log/remote/<имя_клиента>.log

Убедитесь, что ошибок нет в журнале службы:

journalctl -u rsyslog --since "1 minute ago"

Возможные проблемы

  • Логи не доходят — проверьте, открыт ли порт 514/udp (или 514/tcp) на сервере и не блокирует ли его файрволл. Убедитесь, что клиент использует правильный IP и синтаксис (@ для UDP, @@ для TCP).
  • Права на файлы — если логи не пишутся, проверьте владельца каталога /var/log/remote и правило create в logrotate.
  • Дублирование сообщений — используйте & stop в правилах сервера, чтобы предотвратить дальнейшую обработку одного и того же события.
  • Проблемы с именами хостов — при использовании динамических имён убедитесь, что клиент корректно передаёт HOSTNAME, либо фильтруйте по $fromhost-ip.

Часто задаваемые вопросы

Зачем использовать rsyslog, если есть journald?
Как проверить, что rsyslog работает и принимает логи?
Безопасно ли открывать UDP 514 для rsyslog?

Полезное

Установить rsyslog
Настроить сервер (приём логов)
Настроить клиент (отправка логов)
Применить ротацию и права
Проверить работу