在CentOS / RHEL 8中使用Rsyslog设置集中式日志服务器

本文介绍了如何在CentOS / RHEL 8服务器上使用Rsyslog创建集中式日志服务器,以监视日志文件并观察客户端的运行状况。

为了使系统管理员能够识别或分析CentOS 8RHEL 8服务器上的问题,从/var/log的日志文件中了解并查看特定时间段内服务器上发生的事件非常重要。系统中的目录。

服务器上的Syslog系统日志协议 )系统可以充当网络上的中央日志监视点,在该网络上,所有服务器,网络设备,交换机,路由器和内部服务均会创建日志,无论是链接到特定的内部问题还是仅提供信息性消息可以发送他们的日志。

CentOS / RHEL 8服务器上, Rsyslog守护程序是默认安装的最重要的日志服务器,其次是Systemd Journal守护程序journald )。

Rsyslog是一个开放源代码实用程序,作为客户端/服务器体系结构服务开发,可以独立实现这两个角色。 它可以作为服务器运行,并收集其他设备通过网络传输的所有日志,也可以作为客户端运行,方法是将记录的所有内部系统事件发送到远程Syslog服务器。

要求

  1. 使用截图安装“ CentOS 8.0”
  2. 使用截图安装RHEL 8

为了在CentOS / RHEL 8服务器上设置集中式日志服务器,您需要检查/var分区是否有足够的空间(最小几个GB)以存储由其他人发送的所有记录的日志文件。网络上的设备。 我建议您有一个单独的驱动器( LVMRAID )来挂载/var/log/目录。

如何在CentOS / RHEL 8中配置Rsyslog服务器

1.如我所说, Rsyslog服务已安装并在CentOS / RHEL 8服务器中自动运行。 为了验证守护程序正在系统中运行,请运行以下命令。

# systemctl status rsyslog.service
在CentOS 8中检查Rsyslog状态

在CentOS 8中检查Rsyslog状态

如果默认情况下该服务未运行,请运行以下命令以启动rsyslog守护程序。

# systemctl start rsyslog.service

2.如果默认情况下未计划在要用作集中式日志记录服务器的系统上安装Rsyslog实用程序,请运行以下yum命令以安装rsyslog软件包并启动守护程序。

# yum install rsyslog
# systemctl start rsyslog.service

3.安装Rsyslog实用程序后,现在可以通过打开主配置文件/etc/rsyslog.conf来将rsyslog配置为集中式日志记录服务器,以便接收外部客户端的日志消息。

# vi /etc/rsyslog.conf

/etc/rsyslog.conf配置文件中,查找并取消注释以下行,以通过514端口将UDP传输接收授予Rsyslog服务器。 Rsyslog使用标准的UDP协议进行日志传输。

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
在CentOS 8中配置Rsyslog服务器

在CentOS 8中配置Rsyslog服务器

4. UDP协议没有TCP开销,它使数据传输比TCP协议快。 另一方面, UDP协议不能保证传输数据的可靠性。

但是,如果要将TCP协议用于日志接收,则必须在/etc/rsyslog.conf配置文件中找到并取消注释以下行,以配置Rsyslog守护程序绑定并监听514端口上的TCP套接字。

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 & ~
为Rsyslog服务器创建模板

为Rsyslog服务器创建模板

$template RemoteLogs指令根据客户端名称和基于模板配置中添加的概述属性创建消息的远程客户端应用程序,指导Rsyslog守护程序收集所有传输的日志消息并将其写入不同的文件中: %HOSTNAME% and %PROGRAMNAME%

所有接收到的日志文件都将以客户端计算机的主机名命名的已分配文件写入本地文件系统,并保存在/ var / log /目录中。

& ~重定向规则指示本地Rsyslog服务器停止进一步处理收到的日志消息并删除消息(而不是将其写入内部日志文件)。

RemoteLogs是为此模板指令指定的任意名称。 您可以使用最适合您模板的任何名称。

要配置更复杂的Rsyslog模板,请通过运行man rsyslog.conf命令阅读Rsyslog配置文件手册,或查阅Rsyslog联机文档

# man rsyslog.conf

6.完成上述配置更改后,可以运行以下命令来重新启动Rsyslog守护程序,以应用最新更改。

# service rsyslog restart

7.重新启动Rsyslog服务器后,它现在应充当集中式日志服务器,并记录来自Syslog客户端的消息。 要确认Rsyslog网络套接字,请运行netstat命令并使用grep实用程序过滤rsyslog字符串。

# netstat -tulpn | grep rsyslog 
检查Rsyslog监听套接字

检查Rsyslog监听套接字

8.如果您在CentOS / RHEL 8中激活了SELinux ,请运行以下命令以允许rsyslog通信,具体取决于网络套接字类型。

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

9.如果系统上有活动的防火墙,请运行以下命令以添加所需的规则,以允许在Firewalld中的端口上进行rsyslog通信。

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

就这样! Rsyslog现在配置为集中式日志服务器,可以从远程客户端收集日志。 在下一篇文章中,我们将看到如何在CentOS / RHEL 8服务器上配置Rsyslog客户端。