通过rsyslog进行日志转发的存储管理
日志文件是Linux管理员工作的关键组成部分。它们使系统管理员能够检测硬件故障、服务配置错误和其他问题迹象。
如今的网络环境比以往更加分布式,因此必须找到存储和分析日志文件的有效方法。为合规性和服务级别协议访问日志文件也至关重要。
rsyslog服务通过集中存储、分类和保留关键的操作系统及应用程序日志文件来实现这些功能。它所需资源少且配置相对简单,是在考虑存储成本的同时管理远程服务器日志文件的绝佳选择。
本文提供了一个场景:由作为日志文件存储库的中心总部(HQ)服务器和多个向其转发日志文件的远程服务器组成。包含配置选项和命令,便于适应您自己的环境。
通用rsyslog要求
仔细考虑中央日志存储服务器的硬件组件。虽然rsyslog本身是轻量级服务,但如果许多远程服务器同时向其写入,仍可能对网络和存储子系统造成压力。
从以下最低硬件规格开始:
- 两个或多个多核CPU
- 4 GB内存
- 1 Gbps网络连接
存储是需要考虑的关键子系统。NVMe SSD因其速度和可靠性是标准选择。
磁盘配置在此服务器上也至关重要。首先将Linux /var/log目录放在与操作系统分开的分区上。将两者隔离到不同的物理存储设备可减少I/O竞争。最后启用磁盘加密以保持日志文件条目的安全性和隐私性。
评估中央rsyslog服务器
大多数企业级Linux发行版默认包含rsyslog。在修改其配置文件之前,使用发行版首选的包管理器安装或更新rsyslog。
在Red Hat Enterprise Linux、Rocky、AlmaLinux和类似发行版上,键入以下命令之一:
|
|
在Debian、Ubuntu Server或类似发行版上,键入以下命令之一:
|
|
启动服务并使其在系统启动时自动运行:
|
|
配置中央rsyslog服务器
配置中央服务器接收来自远程服务器的入站日志文件。首先备份默认配置文件:
|
|
使用文本编辑器(如Vim或Nano)打开/etc/rsyslog.conf文件:
|
|
确定您希望日志传输使用TCP还是UDP。UDP通常可接受,但TCP增加了错误处理和可靠性。
取消注释或添加匹配以下文本的/etc/rsyslog.conf行:
|
|
这些行指定使用标准rsyslog端口514的TCP。但是,您可以基于每个远程服务器配置自定义端口号以更好地组织传入数据。
您几乎肯定需要为每个远程服务器维护单独的日志文件存储。使用rsyslog规则实现此目的。此示例按远程服务器名称remote_server1分离日志:
|
|
重复此条目,根据您的环境适当修改服务器名称。
配置中央服务器的防火墙以接受TCP端口514上的入站网络连接:
|
|
最后,实施管理工具(如logrotate)在中央服务器上归档日志。
配置分支办公室rsyslog客户端
在分支办公室的远程服务器上设置要简单得多。如果需要,在每个设备上安装rsyslog。编辑/etc/rsyslog.conf配置文件以转发所有日志或选定的日志文件。
要使用TCP转发所有日志,将以下行添加到配置文件的规则部分:
|
|
如果要转发特定服务的日志(如FTP日志条目),使用以下设置:
|
|
编辑配置文件后,务必使用以下命令重新启动rsyslog服务:
|
|
测试配置
使用logger命令从每个远程服务器生成测试消息。确认消息已到达中央服务器。
最佳实践
Rsyslog是一种可靠的机制。使用以下最佳实践以充分利用它:
- 使用快速可靠的存储设备
- 考虑将当前日志放在热存储上
- 考虑将归档日志放在冷存储上
- 将服务器日志文件分离到特定目录中
- 使用TCP协议以获得最高可靠性
- 使用Linux权限、SELinux和磁盘加密保护日志文件
- 使用logrotate等工具轮换和归档日志文件
确保日志文件满足服务级别协议和合规性要求。最重要的是,阅读日志。当您使用自动化或手动审查过程时,检查日志文件以查找异常、可疑活动和错误配置。定期审查rsyslog配置以确保您从服务、应用程序和操作系统中记录所需的信息。