Настройка Syslog-сервера в Redhat/CentOS 7

Возникла необходимость в настройке 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-сервера завершена.

1 Like

Ай, спасибо… Как раз сижу думаю как бы настроить… держи +

Я вот тоже этим вопросом задавался, спасибо :good: (плюсанул)

Можно прикрутить БД (mysql, postgresql), писать все туда, потом селектовать проще :smile3:

Блин… советую GrayLog2. Времени нету инструкцию написать…

Ну или LogAnalyzer если что попроще…