Что означает ошибка rsyslog
Ошибка rsyslog в Linux указывает на сбой в работе системного демона логгирования. Это может проявляться как:
- Сервис
rsyslogне запущен или падает сразу после старта - Системные сообщения не записываются в файлы (
/var/log/syslog,/var/log/messages) - Логи либо отсутствуют, либо содержат только старые записи
- В выводе
systemctl status rsyslogвидно состояниеfailedилиinactive
Типичное сообщение в логах systemd:
● rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2026-02-16 10:30:00 MSK; 1min 30s ago
Причины возникновения
- Сервис не запущен — rsyslog отключён или не включён в автозагрузку.
- Ошибки в конфигурации — синтаксическая ошибка в
/etc/rsyslog.confили файлах в/etc/rsyslog.d/. - Недостаточно прав — пользователь
syslog(илиroot) не может записывать в каталог/var/log. - Конфликт портов — другой процесс уже использует порт 514 (UDP/TCP), который требует rsyslog.
- Повреждённые модули — битые или несовместимые модули в
/etc/rsyslog.d/или/usr/lib/rsyslog/. - Недостаток дискового пространства — раздел с
/var/logзаполнен на 100%. - Проблемы с SELinux/AppArmor — политики безопасности блокируют запись.
Способ 1: Проверка и перезапуск сервиса
Чаще всего проблема решается простым перезапуском сервиса.
- Проверьте текущий статус:
systemctl status rsyslog
- Если сервис не активен, попробуйте запустить:
sudo systemctl start rsyslog
- Включите автозагрузку (если не включена):
sudo systemctl enable rsyslog
- После запуска проверьте, что сервис работает:
systemctl is-active rsyslog && echo "Rsyslog работает" || echo "Rsyslog не запущен"
- Отправьте тестовое сообщение и убедитесь, что оно появится в логах:
logger "Тестовое сообщение от FixPedia"
tail -f /var/log/syslog | grep "Тестовое сообщение"
Способ 2: Проверка конфигурации на синтаксис
Неправильный синтаксис в конфигурационных файлах — частая причина падения rsyslog.
- Проверьте конфигурацию без перезапуска:
sudo rsyslogd -N1
Если вывод содержит error или invalid, Means есть ошибки.
- Проверьте основные конфиги:
# Основной конфиг
sudo rsyslogd -N1 -f /etc/rsyslog.conf
# Все файлы в /etc/rsyslog.d/
for f in /etc/rsyslog.d/*.conf; do
echo "Проверка $f"
sudo rsyslogd -N1 -f "$f" || echo "Ошибка в $f"
done
- Если нашли ошибку, исправьте файл. Частые проблемы:
- Лишние или недостающие кавычки
- Неправильный синтаксис директитив (
*.*вместо*.*;) - Опечатки в именах модулей (
imtcpвместоimtcp)
- После исправлений снова проверьте синтаксис и перезапустите:
sudo systemctl restart rsyslog
Способ 3: Проверка прав доступа и места на диске
Rsyslog должен иметь возможность записывать в каталог логов.
- Проверьте права на
/var/log:
ls -ld /var/log
Ожидаемый вывод: drwxr-xr-x и владелец root. Подкаталоги логов должны быть доступны для записи пользователю syslog.
- Проверьте, что пользователь
syslogсуществует:
id syslog
Если пользователь отсутствует, переустановите пакет rsyslog.
- Проверьте место на диске:
df -h /var/log
Если раздел заполнен на 100%, очистите старые логи или увеличьте размер раздела.
- Проверьте владельца файлов логов:
ls -l /var/log/syslog /var/log/messages
Владельцем должен быть syslog или root. Если нет, исправьте:
sudo chown syslog:adm /var/log/syslog
sudo chmod 640 /var/log/syslog
Способ 4: Восстановление конфигурации по умолчанию
Если конфигурация сильно повреждена, проще восстановить оригинальные файлы.
- Debian/Ubuntu:
sudo apt-get install --reinstall rsyslog
Это вернёт файлы из пакета. Конфиг /etc/rsyslog.conf будет заменён, но файлы в /etc/rsyslog.d/ останутся.
- RHEL/CentOS/Fedora:
sudo yum reinstall rsyslog
# Или для новых версий:
sudo dnf reinstall rsyslog
- После переустановки проверьте конфигурацию (Способ 2) и перезапустите сервис.
- Если у вас были кастомные настройки, сравните новый конфиг со старым бэкапом (если есть) и перенесите только необходимые правки.
Способ 5: Диагностика через journalctl
Systemd сохраняет логи всех сервисов, включая rsyslog, даже если он не работает.
- Просмотрите логи rsyslog напрямую:
sudo journalctl -u rsyslog --no-pager -n 50
- Ищите конкретные ошибки:
sudo journalctl -u rsyslog | grep -i "error\|failed\|invalid"
- Если rsyslog не может стартовать из-за модуля, вы увидите что-то вроде:
rsyslogd: could not load module 'imtcp', errors: 1
В этом случае проверьте, установлен ли нужный модуль:
dpkg -l | grep rsyslog # Debian/Ubuntu
rpm -qa | grep rsyslog # RHEL/CentOS
- Если проблема в порту 514, проверьте, не занят ли он:
sudo ss -tulpn | grep :514
Если порт занят другим процессом, остановите его или измените порт rsyslog в конфиге.
Профилактика
Чтобы избежать повторения ошибок:
- Тестируйте конфигурацию перед применением — всегда используйте
rsyslogd -N1после правки конфигов. - Делайте бэкапы — сохраняйте оригинальные конфиги:
sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.backup. - Мониторьте логи — настройте алерты на падение сервиса (например, через systemd
Restart=on-failureв юните). - Обновляйте осторожно — после обновления rsyslog проверяйте совместимость конфигурации (синтаксис может меняться).
- Используйте включение модулей по необходимости — не подключайте модули, которые не используете, особенно экспериментальные.
- Регулярно проверяйте место на диске — настройте ротацию логов через
logrotate(обычно настроен по умолчанию).