Linux rsyslog-confСредняя

Ошибка конфигурации rsyslog: причины и способы исправления

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

Обновлено 17 февраля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+CentOS 7+Debian 10+RHEL 8+

Что означает ошибка конфигурации rsyslog

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

Типичные сообщения об ошибке в логах systemd:

rsyslogd: error: could not load module 'imuxsock'...
rsyslogd: invalid PRI value...
rsyslogd: file '/etc/rsyslog.conf' has invalid line...

Ошибка может появиться при попытке запуска службы (systemctl start rsyslog), при перезагрузке системы или при динамической загрузке конфигурации через rsyslogd -f /path/to/config.

Причины возникновения

  1. Синтаксическая ошибка в конфигурационном файле — пропущены скобки, кавычки, используется неправильный оператор (например, : вместо ;), или неверно указан модуль.
  2. Указание несуществующего модуля или файла — в конфиге есть строка module(load="имя_модуля"), но такой модуль не установлен или путь к файлу неверный.
  3. Неправильные права доступа — пользователь syslog (под которым работает rsyslog) не имеет прав на чтение конфигурационных файлов или запись в целевые каталоги логов (например, /var/log).
  4. Конфликт с другим демоном логов — например, systemd-journald может захватывать сообщения, или другой syslog-демон (如 syslog-ng) использует тот же сокет.
  5. Повреждение конфигурационного файла — случайное удаление символов, неправильное копирование, или ошибки при редактировании через редактор с разными переводами строк.
  6. Несовместимость версий — конфигурация написана для старой версии rsyslog, но в системе установлена новая, где изменился синтаксис некоторых директив.

Способ 1: Проверка синтаксиса конфигурации

Самый быстрый способ выявить проблему — проверить синтаксис без запуска службы. Rsyslog предоставляет встроенную утилиту для валидации.

  1. Откройте терминал.
  2. Выполните команду:
    rsyslogd -N1
    
    Она проверит все конфигурационные файлы, указанные в основной конфигурации (обычно /etc/rsyslog.conf и файлы из /etc/rsyslog.d/).
  3. Если синтаксис корректен, вы увидите:
    rsyslogd: End of config validation run. Done
    
    Если есть ошибки, вывод покажет номер строки и файл, например:
    rsyslogd: error: could not load module 'imuxsock'... (try loading it with module(load=\"imuxsock\")) [try https://www.rsyslog.com/e/2212 ]
    
  4. Исправьте указанные ошибки в соответствующих файлах (обычно с помощью sudo nano /etc/rsyslog.conf или sudo vim /etc/rsyslog.d/your-config.conf).
  5. После исправлений повторно запустите проверку.

💡 Совет: Если проверка проходит, но rsyslog всё равно не запускается, проблема может быть в правах доступа или конфликте модулей. Переходите к следующим способам.

Способ 2: Анализ логов systemd для rsyslog

Если служба падает при запуске, systemd сохраняет её логи. Их можно просмотреть без запуска rsyslog.

  1. Проверьте статус службы:
    systemctl status rsyslog
    
    Если служба неактивна, в выводе может быть краткое сообщение об ошибке.
  2. Для детального просмотра используйте journalctl:
    journalctl -u rsyslog -b --no-pager
    
    Ключ -b показывает логи с текущей загрузки, --no-pager выводит всё сразу.
  3. Ищите строки, начинающиеся с rsyslogd: или rsyslog:. Частые ошибки:
    • cannot open file — проблема с путями или правами.
    • module does not exist — отсутствует модуль.
    • syntax error — ошибка в конфиге.
  4. На основе сообщения исправьте конфигурацию или настройки системы (например, установите недостающий пакет: apt-get install rsyslog-imuxsock).

Способ 3: Проверка и исправление прав доступа

Rsyslog работает под пользователем syslog (иногда rsyslog). Если этот пользователь не может читать конфиги или писать в каталоги логов, служба завершится с ошибкой.

  1. Убедитесь, что конфигурационные файлы доступны для чтения:
    ls -l /etc/rsyslog.conf /etc/rsyslog.d/
    
    Права должны включать r для группы или всех (например, -rw-r--r--). Если нет, исправьте:
    sudo chmod 644 /etc/rsyslog.conf
    sudo chmod 644 /etc/rsyslog.d/*.conf
    
  2. Проверьте владельца каталога логов:
    ls -ld /var/log
    
    Владельцем должен быть root, а группа — adm или syslog. Пользователь syslog должен иметь права на запись (w).
  3. Если нужно, измените группу для каталога:
    sudo chgrp syslog /var/log
    sudo chmod g+w /var/log
    
    Но будьте осторожны: изменение прав на /var/log может повлиять на другие службы. Лучше проверить права на конкретные файлы логов, которые создаёт rsyslog (например, /var/log/syslog).

Способ 4: Восстановление стандартной конфигурации

Если вы не можете найти ошибку или конфиг сильно повреждён, проще восстановить оригинальные файлы.

Для Debian/Ubuntu:

  1. Переустановите пакет rsyslog (сохранит ваши изменения в /etc/rsyslog.conf? Нет, переустановка может перезаписать конфиг. Поэтому сначала сделайте резервную копию):
    sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.backup
    sudo apt-get install --reinstall rsyslog
    
    После переустановки сравните старый и новый конфиг, перенесите нужные настройки вручную.
  2. Или скопируйте примеры из документации:
    sudo cp /usr/share/doc/rsyslog/examples/rsyslog.conf /etc/rsyslog.conf
    

Для RHEL/CentOS:

sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.backup
sudo yum reinstall rsyslog

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

Способ 5: Отключение конфликтующих модулей или демонов

Иногда rsyslog конфликтует с systemd-journald, который по умолчанию собирает логи в бинарный журнал. Rsyslog может пытаться читать из journald через модуль imjournal, но если настройки неверны, возникают ошибки.

  1. Проверьте, загружен ли модуль imjournal в конфиге:
    grep -r "imjournal" /etc/rsyslog.conf /etc/rsyslog.d/
    
  2. Если вы не хотите использовать journald, закомментируйте строку:
    #module(load="imjournal")
    
    И раскомментируйте классический модуль для сокетов:
    module(load="imuxsock")
    
  3. Также убедитесь, что systemd-journald не слушает тот же сокет. Проверьте /etc/systemd/journald.conf:
    Storage=volatile
    
    Если нужно, перезапустите journald: sudo systemctl restart systemd-journald.
  4. Если вы хотите, чтобы rsyslog читал из journald, проверьте настройки модуля imjournal (например, PollingInterval).

Профилактика

Чтобы избежать ошибок конфигурации rsyslog в будущем:

  • Всегда проверяйте синтаксис перед применением конфигурации. Интегрируйте команду rsyslogd -N1 в ваш workflow.
  • Создавайте резервные копии перед редактированием: sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.$(date +%F).
  • Используйте тестовые среды для сложных изменений (например, виртуальные машины или контейнеры).
  • Документируйте изменения — оставляйте комментарии в конфигах с описанием, что и почему добавлено.
  • Избегайте ручного редактирования бинарных файлов или конфигов с непонятным содержимым.
  • Следите за обновлениями rsyslog: при переходе на новую мажорную версию проверьте официальную документацию на предмет изменений в синтаксисе.
  • Настраивайте мониторинг — добавьте проверку статуса службы rsyslog в ваши системы мониторинга (например, через systemctl is-active rsyslog).

Эти шаги помогут поддерживать надёжное логирование в вашей Linux-системе и быстро выявлять проблемы.

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

Почему rsyslog не записывает логи в файл?
Как проверить синтаксис конфига rsyslog без перезапуска?
Что делать, если rsyslog падает с ошибкой 'invalid PRI value'?
Можно ли временно отключить rsyslog для диагностики?

Полезное

Проверьте синтаксис конфигурации rsyslog
Проанализируйте логи systemd для rsyslog
Проверьте права доступа к файлам и каталогам логов
Восстановите стандартную конфигурацию
Перезапустите службу rsyslog
Убедитесь, что служба активна и не падает