Введение / Зачем это нужно
Централизованное логгирование позволяет собирать логи со всех серверов в одном месте, что упрощает поиск проблем, аудит безопасности и соблюдение требований. Rsyslog — это легковесный и гибкий сервер Syslog для Linux, который идеально подходит для организации такой схемы. После выполнения этого руководства вы настроите rsyslog так, чтобы каждый клиент отправлял логи на один центральный сервер, обеспечивая единую точку просмотра журналов.
Требования / Подготовка
- ОС: Ubuntu 20.04, 22.04, Debian 11, CentOS 8, RHEL 8 (или любая современная дистрибутива на базе Linux).
- Права администратора (
rootилиsudo). - Установленный и работающий rsyslog (инструкция включает установку).
- Сеть, в которой целевые хосты могут достигать central-log-server по TCP/UDP порту 514 (или настроенного порта).
Пошаговая инструкция
Шаг 1: Установка пакета rsyslog
На целевом хосте выполните команду:
# Для Ubuntu/Debian
apt-get update && apt-get install -y rsyslog
# Для CentOS/RHEL
yum install -y rsyslog
Пакет создает базовый конфигурационный файл /etc/rsyslog.conf.
Шаг 2: Настройка клиента для отправки логов
Откройте конфигурационный файл на клиенте:
sudo nano /etc/rsyslog.conf
Добавьте строку в конец файла (замените central-log-server на IP-адрес или DNS имя целевого сервера):
*.info;mail -@central-log-server
Сохраните файл (Ctrl+O), выйдите (Ctrl+X) и примените изменения:
sudo systemctl restart rsyslog
Шаг 3: Настройка центрального сервера для приема логов
На целевом сервере откройте /etc/rsyslog.conf:
sudo nano /etc/rsyslog.conf
Убедитесь, что в файле присутствуют следующие директивы (они обычно уже есть):
module(load="imuxsock") # приём логов из сокетов
module(load="imudp")
input(type="imudp" port="514")
Добавьте правило для записи в файл:
*.* @@central-log-server:514
Если вы хотите записать логи в локальный файл, добавьте:
*.* /var/log/central.log
Сохраните изменения, выйдите и перезапустите сервис:
sudo systemctl restart rsyslog
Шаг 4: Перезапуск rsyslog
Убедитесь, что служба запущена:
sudo systemctl status rsyslog
Если сервис неактивен, запустите его:
sudo systemctl start rsyslog
Шаг 5: Проверка сбора логов
Создайте тестовое сообщение на клиенте:
logger "Test message for central log"
На целевом сервере проверьте, появилось ли сообщение:
tail -f /var/log/central.log
Также на клиенте проверьте /var/log/syslog (или /var/log/messages), чтобы убедиться, что лог отправился.
💡 Совет: Для большего контроля вы можете настроить ротацию лог файлов с помощью
logrotate, добавив конфигурационный файл в/etc/logrotate.d/rsyslog.
Проверка результата
После выполнения всех шагов вы должны увидеть:
- Тестовые логи на центральном сервере в
/var/log/central.log. - Отсутствие ошибок в
rsyslogпри выполненииjournalctl -u rsyslog. - Все клиенты успешно отправляют логи (проверьте через
grep "Test message"на сервере).
Если какой-то клиент не отправляет логи, проверьте сетевую доступность (ping central-log-server) и убедитесь, что правила конфигурации применены (sudo rsyslogd -c /etc/rsyslog.conf -t).
Возможные проблемы
- Ошибка подключения:
Can't connect to remote syslog server. Убедитесь, что central-log-server доступен (telnet central-log-server 514) и брандмауэр не блокирует трафик. - Нет записей в центральном логе: Проверьте синтаксис конфигурации (
rsyslogd -c /etc/rsyslog.conf -t), перезапустите сервис и проверьтеgrep "central-log-server" /var/log/syslogна клиенте. - Rsyslog не устанавливается: Убедитесь, что все необходимые репозитории установлены (
apt-get install -y rsyslogилиyum install -y rsyslog). На некоторых дистрибутивах может потребоватьсяyum groupinstall "System Tools".