Введение / Зачем это нужно
rsyslog — это современная реализация syslog, которая позволяет централизованно собирать, фильтровать и передавать системные логи. С её помощью вы можете отслеживать важные события, быстро реагировать на ошибки и обеспечивать соответствие требованиям аудита. После выполнения этого гайда у вас будет настроенный rsyslog, готовый к работе как на локальной машине, так и для удалённой передачи логов.
Требования / Подготовка
- Linux-система (Ubuntu 20.04/22.04, Debian 11, CentOS 8)
- Права администратора (
sudo) - Установленный rsyslog (мы установим его в шаге 1)
- Текстовый редактор (например,
nanoилиvi) - Сеть (необходима для опциональной удалённой передачи)
Пошаговая инструкция
Шаг 1: Установите rsyslog
Для Debian‑based систем:
sudo apt update && sudo apt install rsyslog
Для RHEL‑based систем (CentOS 8, Rocky Linux и т.п.):
sudo yum install rsyslog
# или, если используется dnf:
# sudo dnf install rsyslog
После установки пакет готов к настройке.
Шаг 2: Настройте основной конфигурационный файл
Откройте /etc/rsyslog.conf и проверьте, что модуль imuxsock включён:
module(load="imuxsock") # приём логов через сокеты
Добавьте необходимые правила логирования. Пример базовой конфигурации:
# Записывать все системные логи в файл /var/log/syslog
*.info;mail.none;auth.none;cron.none /var/log/syslog
# Локальные логи отдельного типа
local0.* /var/log/local0.log
Сохраните изменения (Ctrl+O, Enter) и выйдите из редактора.
Шаг 3: Создайте правила логирования
Создайте новый файл в /etc/rsyslog.d/ (например, custom-rules.conf). В нём определите специфичные для вас правила:
# Пример: логирование всего, что содержит слово ERROR, в отдельный файл
if $msg contains "ERROR" then /var/log/error.log
&stop
Перезапустите rsyslog, чтобы применить новые правила:
sudo systemctl restart rsyslog
Шаг 4: Настройте удалённую передачу логов (опционально)
Если вам нужно отправлять логи на удалённый сервер, добавьте в конфигурацию (в основной файл или в созданный вами файл в /etc/rsyslog.d/):
*.info @remote-server:514
Замените remote-server на IP‑адрес или хостнейм удалённой машины. После редактора снова выполните:
sudo systemctl restart rsyslog
Шаг 5: Запустите и проверьте работу rsyslog
Убедитесь, что служба запущена и будет автоматически стартовать при загрузке системы:
sudo systemctl restart rsyslog
sudo systemctl enable rsyslog
Проверьте статус:
sudo systemctl status rsyslog
Начните просмотр системного лога в режиме реального времени:
tail -f /var/log/syslog
Если логи появляются, настройка успешна.
Проверка результата
- Статус службы:
systemctl is-active rsyslogдолжен возвращатьactive. - Проверка файлов логов: убедитесь, что файлы, на которые ссылаются в конфигурации (
/var/log/syslog,/var/log/local0.log,/var/log/error.log), существуют и имеют правильные права (-rw------- root root). - Удалённая передача: на удалённом хосте настройте
rsyslogдля приёма (например,module(load="imudp")иinput(type="imudp" port="514")), затем выполнитеsystemctl restart rsyslog. Проверьте лог на удалённой стороне:tail -f /var/log/syslog.
Возможные проблемы
- Служба rsyslog не запускается:
- Проверьте
sudo systemctl status rsyslogна наличие ошибок. - Убедитесь, что зависимые пакеты установлены (
sudo apt install rsyslogилиsudo yum install rsyslog). - Проверьте синтаксис конфигурации:
sudo rsyslogd -vилиsudo rsyslogd -f /etc/rsyslog.conf.
- Проверьте
- Нет записи логов в файлы:
- Убедитесь, что путь к файлу корректен и директория доступна для записи.
- Проверьте права:
chmod 600 /var/log/local0.logиchown root:root /var/log/local0.log.
- Синтаксис конфигурации неверен:
- Используйте
sudo rsyslogd -v -f /etc/rsyslog.confдля проверки без запуска. - Ошибки обычно выделены красным цветом в редакторе.
- Используйте
- Проблемы с удалённой передачей:
- Проверьте сетевую доступность (
ping remote-serverилиtelnet remote-server 514). - Убедитесь, что брандмауэр (iptables, firewalld, ufw) не блокирует UDP‑порт 514.
- На удалённом сервере убедитесь, что
rsyslogнастроен на приём UDP‑трафика.
- Проверьте сетевую доступность (
- Дублирование логов:
- Проверьте правила в
/etc/rsyslog.d/на наличие дублирующих записей. - Используйте
&stopпосле записи, если не хотите дальнейшей обработки сообщения.
- Проверьте правила в
Эти советы помогут быстро устранить наиболее распространённые трудности при настройке rsyslog. Если проблема сохраняется, проверьте системный лог (journalctl -u rsyslog) или ищите конкретный код ошибки в нашей базе знаний.