Чтобы системные администраторы могли распознать или проанализировать проблемы на сервере CentOS 8 или RHEL 8, важно знать и просматривать события, произошедшие на сервере за определенный период времени, из файлов журналов, находящихся в /var/log.
Система Syslog (System Logging Protocol) на сервере может выступать в качестве центральной точки наблюдения за журналами в сети, где все серверы, сетевые устройства, коммутаторы, маршрутизаторы и внутренние службы создают журналы, независимо от того, связаны ли они с определенной внутренней проблемой или только с информативными сообщениями.
На сервере CentOS / RHEL 8 демон Rsyslog является наиболее важным сервером журналов, который предварительно устанавливается по умолчанию, за ним следует демон Systemd Journal (journald).
Rsyslog – это утилита с открытым исходным кодом, разработанная как служба архитектуры клиент-сервер и способная независимо выполнять обе роли.
Он может работать как сервер и собирать все журналы, передаваемые другими устройствами по сети, или он может запускаться как клиент, отправляя все внутренние системные события, зарегистрированные на удаленный сервер Syslog.
Чтобы настроить централизованный сервер журналов на сервере CentOS / RHEL 8, необходимо проверить то, что раздел /var имеет достаточно места (минимум несколько ГБ) для хранения всех логов в системе, которые отправляются другими устройствами в сети.
Я рекомендую вам иметь отдельный диск (LVM или RAID) для монтирования каталога /var/log/.
Как настроить сервер Rsyslog в CentOS / RHEL 8
Чтобы убедиться, что демон работает, выполните следующую команду.
# systemctl status rsyslog.service
# systemctl start rsyslog.service
# yum install rsyslog # systemctl start rsyslog.service
# vi /etc/rsyslog.conf
module(load="imudp") # needs to be done just once input(type="imudp" port="514")
С другой стороны, протокол UDP не гарантирует надежность передачи данных.
Однако, если вы хотите использовать протокол TCP для приема журнала, вы должны найти и раскомментировать следующие строки в /etc/rsyslog.conf в файле конфигурации, чтобы настроить демон Rsyslog для привязки и прослушивания сокета TCP на порту 514.
module(load="imtcp") # needs to be done just once input(type="imtcp" port="514")
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" . ?RemoteLogs & ~
Директива $template RemoteLogs направляет демон Rsyslog собирать и записывать все передаваемые сообщения журнала в отдельные файлы на основе имени клиента и приложения удаленного клиента, которое создавало сообщения на основе описанных свойств, добавленных в конфигурацию шаблона: %HOSTNAME% и %ProgramName%.
Все полученные файлы журнала будут записаны в локальную файловую систему в выделенный файл, названный в честь имени хоста клиентского компьютера и сохраненный в каталоге /var/log/.
RemoteLogs – это произвольное имя, данное этой директиве шаблона. Вы можете использовать любое имя, которое вы хотите, которое лучше всего подходит для вашего шаблона.
Чтобы настроить более сложные шаблоны Rsyslog, прочитайте руководство по файлу конфигурации Rsyslog, выполнив команду man rsyslog.conf или обратитесь к онлайн-документации
# man rsyslog.conf
# service rsyslog restart
# netstat -tulpn | grep rsyslog
# yum whatproviders netstat # yum install net-tools
# semanage port -a -t syslogd_port_t -p udp 514 # semanage port -a -t syslogd_port_t -p tcp 514
# yum whatproviders semanage # yum install policycoreutils-python-utils
# firewall-cmd --permanent --add-port=514/tcp # firewall-cmd --permanent --add-port=514/udp # firewall-cmd --reload