Возникла необходимость в настройке Syslog-сервера для централизованного сбора логов с нескольких серверов. Изначально, я решил, что rsyslog слишком банален и поэтому решил настроить “syslog-ng”, однако его гибкая настройка размещения логов в отдельных директориях по дате и названию сервера оказалось вовсе мне не нужным функционалом, но кому-то это возможно необходимо тогда вот очень хорошая статья, которая работает: http://blog.acmenet.ru/2014/09/15/syslog-ng-centos/
Изучение материала в интернете позволило мне сделать вывод, что все статьи не раскрывают настройку в полной мере, поэтому опишу весь процесс.
И так для настройки Syslog-сервера нам потребуется пакет rsyslog, который обычно уже предустановлен в системе. Поэтому переходим сразу к настройке сервера. Стоить отметить, что по дефолту rsyslog (и классический syslog) работает на 514 UDP порту.
Настройка сервера.
Редактируем файл /etc/rsyslog.conf
Расскомментируем следующие записи:
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
Для повышения безопасности можно перечислить IP адреса, с которых разрешаем доступ для приёма логов на сервер:
$AllowedSender UDP, 192.168.1.20, 192.168.2.50
В конце конфига указываем источник (адрес клиента) и куда сохранять логи:
if $fromhost-ip contains '192.168.1.20' then /var/log/server-20.log
if $fromhost-ip contains '192.168.2.50' then /var/log/server-50.log
Перезапускам сервис rsyslog:
systemctl restart rsyslog.service
Также не забываем добавить правило в firewall для открытия 514 порта:
firewall-cmd --add-port=514/udp --permanent
firewall-cmd --reload
Настройка клиента.
Следующим этапом приступим к настройке клиента, который будет отправлять логи, но для RedHat/CentOS 7 стоит сделать важную надстройку по причине использования сервиса “systemd-journald”, (иначе не будем получать сообщения в rsyslog). Для этого откроем любым редактором файл /etc/systemd/journald.conf и расскомментируем следующую запись:
ForwardToSyslog=yes
Затем перезапустим сервис:
systemctl restart systemd-journald.service
Отредактируем файл rsyslog.conf добавив записи:
*.info;mail.none;authpriv.none;cron.none @192.168.1.100:514
kern.* @192.168.1.100:514
kern.* - означает отправлять все логи журнала ядра. Многие администраторы не настраивают данный журнал, что на мой взгляд является большой ошибкой, так как в случае сбоя системы все логи попадают именно туда, а по дефолту в системе это отключено.
Перезапускам сервис rsyslog и приступаем к тестированию, для этого необходимо удалить либо установить какой-нибудь пакет либо воспользоваться командой logger:
logger -t DEONIS TEST
На этом настройка Syslog-сервера завершена.