Linux

Базовая настройка rsyslog: пошаговый гайд для Linux

Узнайте, как правильно установить, настроить и проверить работу rsyslog на серверах Linux. Вы научитесь управлять системными логами, создавать правила фильтрации и отправлять события на центральный сервер.

Обновлено 7 апреля 2026 г.
15-20 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04/24.04 LTSDebian 12/13RHEL 9 / AlmaLinux 9 / Rocky Linux 9rsyslog 8.2110+

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

Системное логирование — первый инструмент диагностики при сбоях сервисов или атаках на сервер. rsyslog является стандартом в большинстве современных дистрибутивов Linux благодаря высокой скорости обработки, гибкой фильтрации и возможности централизованного сбора. Правильная настройка помогает избежать переполнения диска, быстро находить ошибки в конкретных службах и строить отказоустойчивый мониторинг.

После выполнения этого руководства вы получите настроенный демон, который будет разделять события по файлам, хранить критичные записи отдельно и безопасно передавать их на внешний коллектор.

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

Для успешного выполнения инструкций убедитесь в наличии следующих условий:

  • Доступ к серверу с правами root или пользователя в группе sudo.
  • Обновлённые репозитории (sudo apt update или sudo dnf check-update).
  • Открытые сетевые порты на файрволе, если планируете удалённую отправку (TCP/UDP 514 или 6514 для TLS).
  • Текстовый редактор: nano или vim.

💡 Совет: Перед редактированием системных конфигурационных файлов всегда создавайте резервную копию: sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.bak.

Шаг 1: Установка и активация службы

На большинстве серверных сборок rsyslog уже предустановлен. Проверьте статус службы:

sudo systemctl status rsyslog

Если пакет отсутствует, установите его:

# Для Debian/Ubuntu
sudo apt install rsyslog -y

# Для RHEL/AlmaLinux/Rocky
sudo dnf install rsyslog -y

Активируйте автозапуск и запустите демон:

sudo systemctl enable --now rsyslog

Шаг 2: Разбор структуры конфигурации

Основной файл /etc/rsyslog.conf состоит из трёх блоков:

  1. Модули ($ModLoad) — подключают драйверы ввода/вывода. Для работы со стандартным протоколом нужны imuxsock и imklog.
  2. Глобальные директивы — управляют поведением демона, например, $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat.
  3. Правила маршрутизации — строки в формате facility.priority /путь/к/файлу. Они указывают, куда записывать события.

Для удобства обслуживания выносите пользовательские правила в директорию /etc/rsyslog.d/. Файлы в ней обрабатываются в алфавитном порядке.

Шаг 3: Настройка локальной фильтрации

Разделите логи по назначениям, чтобы упростить поиск. Создайте файл 10-custom-rules.conf в директории /etc/rsyslog.d/:

sudo nano /etc/rsyslog.d/10-custom-rules.conf

Добавьте правила маршрутизации:

# Все сообщения аутентификации в отдельный файл
auth,authpriv.*                 /var/log/auth-custom.log

# Сообщения уровня error и выше из всех служб
*.err;mail.none;authpriv.none   /var/log/errors.log

# Отбросить отладочные сообщения ядра для экономии места
kern.=debug                     ~

Символ ~ означает прекращение обработки сообщения (discard). Уровни логирования: emerg, alert, crit, err, warning, notice, info, debug. Звёздочка * означает все уровни, точка с запятой ; — объединение условий.

Шаг 4: Отправка логов на удалённый сервер

Централизованный сбор защищает данные от потери при падении локального диска или компрометации сервера. Откройте основной конфиг или создайте файл 20-forward.conf в /etc/rsyslog.d/.

Для отправки по UDP (быстро, но без гарантий доставки) используйте один символ @:

*.* @192.168.1.100:514

Для TCP (надёжная доставка, рекомендуется) используйте два символа @@:

*.* @@192.168.1.100:514

Замените IP-адрес на адрес вашего сервера сбора логов (например, ELK Stack или Graylog). Если требуется отправка только критических событий, замените первую *.* на *.crit.

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

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

sudo rsyslogd -N1

Вывод должен завершаться строкой End of config validation run. Bye.. Если ошибок нет, примените изменения:

sudo systemctl restart rsyslog

Сгенерируйте тестовое событие и проверьте его появление:

logger -p local0.notice "Тестовое сообщение от FixPedia"
tail -n 5 /var/log/syslog  # или /var/log/messages для RHEL-систем

На удалённом коллекторе также проверьте получение пакета через journalctl -u rsyslog -f или сетевой анализатор.

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

Служба не запускается после редактирования Обычно это вызвано опечаткой в имени модуля или неверным синтаксисом правила. Запустите sudo rsyslogd -N1, чтобы увидеть точную строку с ошибкой. Удалите или закомментируйте проблемный блок символом # и повторите проверку.

Логи не попадают в новый файл Проверьте права доступа и владельца. Демон работает от имени syslog или root, а файлы в /etc/rsyslog.d/ должны заканчиваться на .conf. Если расширение другое, демон его проигнорирует.

SELinux блокирует запись или сетевое соединение На системах с включённым SELinux проверьте аудит-журнал: sudo ausearch -m avc -ts recent. Если видите блокировки, установите правильный контекст для файлов логов через restorecon -Rv /var/log/ или добавьте разрешающее правило через audit2allow.

Дублирование записей в нескольких файлахrsyslog обрабатывает правила последовательно. Если вы указали *.* /var/log/all.log выше, чем правила фильтрации, событие запишется во все файлы, идущие ниже. Используйте оператор stop после нужного правила, чтобы прервать дальнейшую обработку для данного события.

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

Чем rsyslog отличается от классического syslogd?
Нужно ли перезагружать сервер после изменения конфига?
Как проверить, что логи успешно отправляются на удалённый сервер?
Можно ли использовать rsyslog вместе с systemd-journald?

Полезное

Установка пакета rsyslog
Редактирование основного конфига
Настройка локальной фильтрации
Отправка на удалённый сервер