Поиск по сайту:

Настройка централизованного сервера журналов с помощью Rsyslog в CentOS/RHEL 8


Чтобы системные администраторы могли распознавать или анализировать проблемы на сервере CentOS 8 или RHEL 8, важно знать и просматривать события, произошедшие на сервере, в определенный период времени из файлов журналов, находящихся в /var/log каталоге системы.

Система Syslog (Протокол системного журнала) на сервере может действовать как центральная точка мониторинга журналов в сети, где все серверы, сетевые устройства, коммутаторы, маршрутизаторы и внутренние службы, которые создавать журналы, независимо от того, связаны ли они с конкретной внутренней проблемой или просто с информационными сообщениями, которые можно отправлять в свои журналы.

На сервере CentOS/RHEL 8 демон Rsyslog является наиболее важным сервером журналов, который предустановлен по умолчанию, за ним следует Systemd Journal Daemon (журнал).

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

Требования

  1. Установка «CentOS 8.0″ со скриншотами
  2. Установка RHEL 8 со скриншотами

Чтобы настроить централизованный сервер журналов на сервере CentOS/RHEL 8, вам необходимо убедиться, что в разделе /var достаточно места (минимум несколько ГБ). ) для хранения всех записанных файлов журналов в системе, которые отправляются другими устройствами в сети. Я рекомендую вам иметь отдельный диск (LVM или RAID) для монтирования каталога /var/log/.

Как настроить сервер Rsyslog в CentOS/RHEL 8

1. Как я уже сказал, служба Rsyslog устанавливается и запускается автоматически на сервере CentOS/RHEL 8. Чтобы убедиться, что демон работает в системе, выполните следующую команду.

systemctl status rsyslog.service

Если служба не запущена по умолчанию, выполните следующую команду, чтобы запустить демон rsyslog.

systemctl start rsyslog.service

2. Если утилита Rsyslog не установлена по умолчанию в системе, которую вы планируете использовать в качестве централизованного сервера журналирования, выполните следующую команду dnf, чтобы установить пакет rsyslog и запустить демона.


dnf install rsyslog
systemctl start rsyslog.service

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

vi /etc/rsyslog.conf

В файле конфигурации /etc/rsyslog.conf найдите и раскомментируйте следующие строки, чтобы разрешить прием транспорта UDP на сервер Rsyslog через порт 514. . Rsyslog использует стандартный протокол UDP для передачи журналов.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. Протокол UDP не имеет накладных расходов TCP и обеспечивает более быструю передачу данных, чем протокол TCP. С другой стороны, протокол UDP не гарантирует надежность передаваемых данных.

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

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. Теперь создайте новый шаблон для получения удаленных сообщений, так как этот шаблон будет указывать локальному серверу Rsyslog, где сохранять полученные сообщения, отправленные сетевыми клиентами Syslog.


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

Директива $template RemoteLogs указывает демону Rsyslog собирать и записывать все переданные сообщения журнала в отдельные файлы на основе имени клиента и удаленного клиентского приложения, создавшего сообщения на основе описанных свойств, добавленных в конфигурация шаблона: %HOSTNAME% и %PROGRAMNAME%.

Все полученные файлы журналов будут записаны в локальную файловую систему в выделенный файл с именем по имени хоста клиентского компьютера и сохранены в каталоге /var/log/.

Правило перенаправления & ~ предписывает локальному серверу Rsyslog прекратить дальнейшую обработку полученного сообщения журнала и удалить сообщения (не записывать их во внутренние файлы журнала).

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

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

man rsyslog.conf

6. После внесения вышеуказанных изменений конфигурации вы можете перезапустить демон Rsyslog, чтобы применить последние изменения, выполнив следующую команду.

service rsyslog restart

7. После перезапуска сервера Rsyslog он должен теперь действовать как централизованный сервер журналов и записывать сообщения от клиентов системного журнала. Чтобы проверить сетевые сокеты Rsyslog, запустите команду netstat и используйте утилиту grep для фильтрации строки rsyslog.

netstat -tulpn | grep rsyslog 

Если команда netstat не установлена в CentOS 8, вы можете установить ее с помощью следующей команды.


dnf whatprovides netstat
dnf install net-tools

8. Если у вас активен SELinux в CentOS/RHEL 8, выполните следующую команду, чтобы разрешить трафик rsyslog в зависимости от типа сетевого сокета.

semanage port -a -t syslogd_port_t -p udp 514
semanage port -a -t syslogd_port_t -p tcp 514

Если команда semanage не установлена в CentOS 8, вы можете установить ее с помощью следующей команды.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

9. Если в вашей системе активен брандмауэр, выполните следующую команду, чтобы добавить необходимые правила для разрешения трафика rsyslog на портах в Firewalld.


firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload

Вы также можете ограничить входящие соединения через порт 514 из диапазонов IP-адресов из белого списка, как показано.


firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
firewall-cmd --reload

Вот и все! Rsyslog теперь настроен как центральный сервер журналов и может собирать журналы от удаленных клиентов. В следующей статье мы увидим, как настроить клиент Rsyslog на сервере CentOS/RHEL 8.