Введение / Зачем это нужно
rsyslog — это стандартный инструмент логгирования в большинстве дистрибутивов Linux. Правильная настройка rsyslog помогает централизовать системные логи, ускорять устранение проблем и защищать журналы от потери. После выполнения этого руководства у вас будет полностью работоспособная система логгирования, настроенная под ваши потребности, с возможностью отправки логов на удалённые сервера.
Требования / Подготовка
- Поддерживаемая Linux-система (Ubuntu 20.04+, Debian 11+, CentOS 8/RHEL 8).
- Права суперпользователя (
sudo). - Установленный пакет
rsyslog(обычно уже присутствует в базовой системе). - Сеть, позволяющая подключаться к целевому серверу для удалённой отправки логов.
- Опционально — TLS-сертификаты для защищённой передачи.
Пошаговая инструкция
Шаг 1: Установка пакета rsyslog
Установите rsyslog с помощью менеджера пакетов вашей дистрибутивы:
# Для Ubuntu/Debian
sudo apt update && sudo apt install rsyslog
# Для RHEL/CentOS
sudo yum install rsyslog
После установки служба автоматически запускается (systemctl is-active rsyslog вернёт active).
Шаг 2: Создание пользовательских правил логирования
Основной конфигурационный файл находится в /etc/rsyslog.conf. Для удобства добавьте пользовательские правила в каталог /etc/rsyslog.d/. Например, создайте файл 10-custom-rules.conf:
# Пример пользовательских правил
auth,authpriv.* /var/log/auth.log
*.info;mail.none;auth,authpriv.none;cron.none /var/log/syslog
local7.* /var/log/custom.log
Сохраните файл и выйдите из редактора.
Шаг 3: Настройка отправки логов на удалённый сервер
Чтобы отправить логи на удалённый хост, добавьте действие remote в конфигурационный файл:
# Отправка всех информационных и более важных сообщений на удалённый сервер
*.info @remote-server.example.com:514
# Защищённая TCP-зеркальная отправка (TLS/SSL)
local7.* @@remote-server.example.com:6514
Если требуется TLS, скопируйте приватный ключ и сертификат в /etc/rsyslog.d/ca.pem, а затем укажите их в правилах.
Шаг 4: Проверка конфигурации и перезапуск службы
Перед перезапуском проверьте синтаксис:
sudo rsyslog -t
Если ошибок нет, перезапустите службу:
sudo systemctl restart rsyslog
Шаг 5: Проверка работы rsyslog
Проверьте, что служба работает корректно:
sudo systemctl status rsyslog
Проведите просмотр журнала в режиме реального времени:
tail -f /var/log/syslog
Если вы настроили удалённую отправку, проверьте целевой сервер на наличие новых записей.
Шаг 6: Дополнительные настройки
- Ротация логов – настройте
logrotate, добавив/var/log/syslogи/var/log/auth.log. - Фильтрация сообщений – используйте
grep-шаблоны внутри правил для отбора целевых событий. - Специальные события – для Kernel-логов добавьте
kernel.* /dev/kmsg.
Проверка результата
После выполнения всех шагов убедитесь, что:
- Локальные файлы логов (
/var/log/auth.log,/var/log/syslog) регулярно обновляются. - Удалённый сервер получает трафик (проверьте журналы на целевом хосте).
- Служба rsyslog отображается как активная (
systemctl is-active rsyslog). - Конфигурационные правила синтаксически корректны (
rsyslog -tне выводит ошибок).
Возможные проблемы
- Служба не запускается: выполните
sudo journalctl -u rsyslog -bдля просмотра логов ошибок. - Логи не поступают на удалённый хост: проверьте сетевую доступность (
telnet remote-server.example.com 514) и правила брандмауэра. - TLS-сертификаты отклонены: убедитесь, что сертификат подписан доверенным CA и корректно скопирован в
/etc/rsyslog.d/ca.pem. - Переполнение лог-файлов: настройте
logrotateили используйте внешние системы сбора логов (ELK, Graylog).
Если проблема сохраняется, проверьте права доступа на конфигурационные файлы (chmod 644 /etc/rsyslog.conf) и перезапустите службу после каждого изменения.