How-to-Setup-Central-Logging-Server-with-Rsyslog-in-Linux

Как настроить центральный сервер ведения логов с помощью Rsyslog в Linux?

Мониторинг

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

Rsyslog — это мощная, безопасная и высокопроизводительная система обработки логов, которая собирает данные из разных источников (систем/приложений) и выводит их в несколько форматов.

Rsyslog эволюционировал из обычного демона syslog до полнофункциональной системы ведения логов уровня предприятия. Rsyslog разработан в двух моделях (клиент/сервер), поэтому его можно настроить как клиент и/или как центральный сервер ведения логов для других серверов, сетевых устройств и удаленных приложений.

 

Испытательная среда

Для целей данной статьи мы будем использовать следующие хосты:

  • Сервер: 192.168.241.140
  • Клиент: 172.31.21.58

Как установить и настроить сервер Rsyslog?

Большинство дистрибутивов Linux поставляются с предустановленным пакетом rsyslog. Если он не установлен, вы можете установить его с помощью вашего менеджера пакетов Linux, как показано ниже:

$ sudo yum update && yum install rsyslog #CentOS 7
$ sudo apt update && apt install rsyslog #Ubuntu 16.04, 18.04

 

После установки rsyslog вам нужно запустить службу, включить автозапуск при загрузке и проверить статус с помощью команды systemctl:

$ sudo systemctl start rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl status rsyslog

 

Основной файл конфигурации rsyslog находится в каталоге /etc/rsyslog.conf, который загружает модули, определяет глобальные директивы, содержит правила для обработки сообщений журнала, а также включает все файлы конфигурации в /etc/rsyslog.d/ для различных приложений/служб:

$ sudo vim /etc/rsyslog.conf

 

По умолчанию rsyslog использует модули imjournal и imusock для импорта структурированных сообщений логов из журнала systemd и для приема сообщений syslog из приложений, запущенных в локальной системе через сокеты Unix, соответственно:

Rsyslog-Modules-for-Logging

 

 

Чтобы настроить rsyslog как сетевой/центральный сервер протоколирования, вам необходимо установить протокол (UDP, либо TCP, либо оба), который он будет использовать для удаленного приема syslog, а также для порта, который он прослушивает.

Если вы хотите использовать UDP-соединение, которое является более быстрым, но менее надежным, выполните поиск и раскомментируйте приведенные ниже строки (замените 514 на порт, который вы хотите прослушать, значение должно соответствовать адресу порта, на который отправляются сообщения клиентов).

$ModLoad imudp
$UDPServerRun 514

 

Чтобы использовать TCP-соединение (которое медленнее, но надежнее), выполните поиск и раскомментируйте приведенные ниже строки:

$ModLoad imtcp
$InputTCPServerRun 514

 

В нашем случае мы хотим одновременно использовать как UDP, так и TCP-соединения.

Configure-Rsyslog-Logging-Server

 

 

Затем вам нужно определить набор правил для обработки удаленных логов в следующем формате:

facility.severity_level destination (where to store log)

 

Где:

  • facility: это тип сообщения о процессе/приложении, к которому относятся auth, cron, daemon, kernel, local0..local7. Использование «*» означает все объекты.
  • severity_level: это тип сообщения журнала: out-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. Использование «*» означает все уровни severity, а «none» означает ни одного уровня severity.
  • destination: локальный файл, либо удаленный сервер rsyslog (определенный в форме IP:порт).

 

Мы будем использовать следующий набор правил для сбора логов с удаленных хостов, используя шаблон RemoteLogs. Обратите внимание, что эти правила должны применяться до любых правил обработки локальных сообщений, как показано на скриншоте ниже:

 

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& ~

 

Define-Ruleset-for-Rsyslog-Logging

 

 

Глядя на вышеприведенный набор правил, первое правило:

$template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log”

 

В директиве $template говорится, что демон rsyslog собирает и записывает все полученные удаленные сообщения в различные журналы в /var/log на основе имени хоста (имя клиентского компьютера) и средства удаленного клиента (программа/приложение), которые генерируют сообщения как определенные по правилам, присутствующим в шаблоне RemoteLogs.

Вторая строка «*.*?RemoteLogs» означает запись сообщений со всех объектов на всех уровнях severity с использованием конфигурации шаблона RemoteLogs.

Последняя строка «&~» указывает rsyslog прекратить обработку сообщений после их записи в файл. Если вы не укажете «&~», сообщения будут записаны в локальные файлы.

Есть много других шаблонов, которые вы можете использовать, для получения дополнительной информации, загляните в справочную страницу конфигурации rsyslog (man rsyslog.conf) или обратитесь к онлайн-документации Rsyslog.

Это вся настройка сервера rsyslog. Сохраните и закройте файл конфигурации. Чтобы применить последние изменения, перезапустите демон rsyslog с помощью следующей команды:

$ sudo systemctl restart rsyslog

 

Теперь проверьте сетевые сокеты rsyslog. Используйте команду ss (или netstat с теми же флагами) и передайте вывод grep для фильтрации соединений rsyslogd:

$ sudo ss -tulnp | grep "rsyslog"

 

Check-Rsyslog-Network-Status

 

 

Далее, в CentOS 7, если вы включили SELinux, запустите следующие команды, чтобы разрешить трафик rsyslog сгруппированный  по типу сетевого сокета:

$ sudo semanage -a -t syslogd_port_t -p udp 514
$ sudo semanage -a -t syslogd_port_t -p tcp 514 

 

Если в системе включен брандмауэр, вам необходимо дать доступ через порт 514, чтобы разрешить оба соединения UDP/TCP с сервером rsyslog:

------------- On CentOS -------------
$ sudo firewall-cmd --permanent --add-port=514/udp
$ sudo firewall-cmd --permanent --add-port=514/tcp
$ sudo firewall-cmd --reload

 

 

------------- On Ubuntu -------------
$ sudo ufw allow 514/udp
$ sudo ufw allow 514/tcp
$ sudo ufw reload

 

 

Как настроить клиент Rsyslog для отправки логов на сервер Rsyslog?

Теперь в клиентской системе проверьте, запущена ли служба rsyslog с помощью следующей команды:

$ sudo systemctl status rsyslog

 

Если он не установлен, установите его и запустите службу, как показано ранее:

$ sudo yum update && yum install rsyslog #CentOS 7
$ sudo apt update && apt install rsyslog #Ubuntu 16.04, 18.04

 

$ sudo systemctl start rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl status rsyslog

 

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

$ sudo vim /etc/rsyslog.conf

 

Чтобы заставить демон rsyslog действовать как клиент журнала и перенаправить все локально созданные сообщения логов на удаленный сервер rsyslog, добавьте это правило пересылки в конец файла, как показано на следующем скриншоте:

*. * @@192.168.100.10:514

 

Configure-Rsyslog-Client

 

 

Вышеупомянутое правило будет отправлять сообщения со всех объектов и на всех уровнях severity. Чтобы отправлять сообщения из определенного объекта, например auth, используйте следующее правило:

auth. * @@192.168.100.10:514

 

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

$ sudo systemctl restart rsyslog

 

Как отслеживать удаленное ведение логов на сервере Rsyslog?

Последний шаг — проверить, действительно ли rsyslog принимает и регистрирует сообщения от клиента /var/log в форме hostname/programname.log.

Запустите команду ls для вывода полного списка каталога родительских журналов и проверьте, есть ли каталог с именем ip-172.31.21.58 (или каким-либо именем хоста вашего клиентского компьютера).

$ ls -l /var/log/

 

Check-Rsyslog-Client-Logging

 

 

Если каталог существует, проверьте файлы логов внутри него, выполнив:

$ sudo ls -l /var/log/ip-172-31-21-58/

 

Check-Rsyslog-Client-Logs

 

Итоги

Rsyslog — это высокопроизводительная система обработки логов, разработанная в архитектуре клиент/сервер. Мы надеемся, что вы сможете установить и настроить Rsyslog в качестве центрального/сетевого сервера веления логов, как показано в этой статье.

 

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасности от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
Мониторинг

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Most Viewed Posts
Меню