网站搜索

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


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

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

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

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

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

systemctl start rsyslog.service

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


dnf install rsyslog
systemctl start rsyslog.service

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

vi /etc/rsyslog.conf

/etc/rsyslog.conf 配置文件中,找到并取消注释以下行,以通过 514 端口向 Rsyslog 服务器授予 UDP 传输接收权限。 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守护进程绑定并侦听 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

$template RemoteLogs 指令引导 Rsyslog 守护进程根据客户端名称和远程客户端应用程序收集所有传输的日志消息并将其写入不同的文件,该远程客户端应用程序根据在模板配置:%HOSTNAME% 和 %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 

如果CentOS 8上没有安装netstat命令,您可以使用以下命令安装它。


dnf whatprovides netstat
dnf install net-tools

8. 如果您在 CentOS/RHEL 8 中激活了 SELinux,请运行以下命令以根据网络套接字类型允许 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. 如果系统上有活动的防火墙,请运行以下命令以添加允许 Firewalld 中端口上的 rsyslog 流量所需的规则。


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 现在配置为集中日志服务器,可以从远程客户端收集日志。在下一篇文章中,我们将了解如何在 CentOS/RHEL 8 服务器上配置 Rsyslog 客户端。