如何使用 rsyslog 在 Linux 上设置远程日志记录
使用单独的远程 Linux 服务器来存储日志有其好处。以下是如何使用 rsyslog 设置远程日志聚合服务器。
日志记录是 Linux 服务器管理的一个重要方面。日志消息对于根本原因分析和避免将来发生潜在错误非常有用。分析和调试服务器错误是 IT 工程师和系统管理员都应具备的核心技能。
本指南将向您展示如何在 Linux 上设置远程日志服务器(也称为日志主机)。日志主机允许您将本地 Linux 日志聚合到远程集中服务器,以便于访问和分析。
为什么要有专用的日志服务器?
Linux 操作系统使用 syslog(系统日志记录协议)守护程序记录服务器上的大多数活动,以便进行审核和调试。所以您可能想知道,为什么我需要一个专用服务器来存储我的日志?以下是拥有专用日志服务器的一些优点:
更好的安全性,因为远程日志服务器只有少数端口对外开放。
提高了服务器性能,因为远程日志记录主机不运行许多服务(除了用于日志记录的服务)。
简化日志消息的归档和管理。
日志消息对于审核服务器和基线非常重要,并且是服务器基础设施预防性维护过程的核心部分。
步骤1:在Linux上安装rsyslog
本指南重点介绍 Ubuntu 20.04,但如果您使用其他主流 Linux 发行版,该过程应该几乎相同。
rsyslog 是 Linux 的远程日志记录服务,默认情况下预安装在大多数现代 Linux 发行版上,例如 Ubuntu 和其他基于 Debian 的系统。
rsyslog 服务是 syslog 的一个现代且改进的守护进程,它只允许您在本地管理日志。使用 rsyslog 守护进程,您可以将本地日志发送到某些已配置的远程 Linux 服务器。
如果您的 PC 上没有安装 rsyslog,则可以在基于 Debian 的发行版上使用以下命令轻松安装:
sudo apt install rsyslog
在 Red Hat Linux 上,您可以通过键入以下命令来安装它:
yum install rsyslog
在 Fedora 及其衍生产品上,运行:
dnf install rsyslog
要在 Arch Linux 上安装 rsyslog:
yay -S rsyslog
要检查 rsyslog 的状态,请运行以下命令:
systemctl status rsyslog
输出 :
步骤二:配置日志主机服务器
日志主机是配置为接收来自其他服务器或PC的日志消息的服务器。 rsyslog 配置位于 /etc/rsyslog.conf 文件中。
您可以使用您选择的任何文本编辑器打开 /etc/rsyslog.conf 文件。在本指南中,我们将使用 Vim。
您需要提升权限才能更改配置文件。
在开始编辑配置文件之前,您应该备份或复制该文件。为此,请运行命令:
sudo cp /etc/rsyslog.conf /etc/rsyslog_original.config
接下来,使用文本编辑器打开 /etc/rsyslog.conf 文件。
sudo vim /etc/rsyslog.conf
有两种协议可用于通过 rsyslog 发送/接收日志文件:TCP 和 UDP。本指南向您展示如何配置两者。
您无需同时配置 UDP 和 TCP 即可使远程日志记录正常工作。两者只选其一。
如果您更喜欢使用 UDP,请查找以下行并通过删除行前的前导井号 (#) 符号来取消注释。您可以在配置文件的模块部分下找到这些行。
module(load="imudp")
input(type="imudp" port="514")
如果您更喜欢使用 TCP,请通过删除位于行开头的前导 井号 (#) 符号来取消注释以下行:
module(load="imtcp")
input(type="imtcp" port="514")
下图显示了配置为使用UDP通信的rsyslog配置文件:
接下来,配置 rsyslog 存储日志的位置。为了更好地组织,您应该按来源对传入日志进行分类。通过添加以下行在 rsyslog 配置文件中定义模板:
$template remote-incoming-logs, "/var/log/remote/%HOSTNAME%".log
*.* ?remote-incoming-logs
上述行命令 rsyslog 将日志存储在文件夹 /var/log/remote/hostname 中,其中 hostname 是将日志消息发送到的远程客户端的名称日志主机。
现在,保存您所做的更改。如果您使用 Vim,以下是保存和退出文件的方法。
最后,重新启动 rsyslog 服务以使所做的更改生效。
sudo systemctl restart rsyslog
第 3 步:配置防火墙
如果您的防火墙已启用,请确保您上面配置的端口能够与外界通信。您需要编辑防火墙规则以允许传入日志。
对于基于 Debian 的发行版,只需使用 UFW 工具即可启用 UDP 或 TCP 传输协议。
如果您使用 UDP,请运行以下命令,其中 514 是配置的端口号:
sudo ufw 514/udp
如果您在端口 514 上使用 TCP,只需运行:
sudo ufw 514/tcp
在 Fedora 上,您可以使用 firewall-cmd 来实现类似的结果。
firewall-cmd --zone=zone --add-port=514/udp
对于 Red Hat Linux,使用您选择的文本编辑器打开位于 /etc/sysconfig/iptables 的 iptables 文件,并添加以下规则:
-A INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT
重新启动 iptables 服务以使更改生效。
service iptables restart
步骤 4:配置日志记录客户端
客户端是将其日志发送到远程或集中式日志主机服务器的机器。打开位于 /etc/rsyslog.conf 的 rsyslog 配置文件:
sudo vim /etc/rsyslog.conf
如果您使用 UDP,请添加以下行,其中 192.168.12.123 是远程服务器的 IP 地址,您将把日志写入到:
*.* @192.168.12.123:514
如果您使用 TCP,请添加以下行。请注意,该行有两个 @ 符号。
*.* @@192.168.12.123:514
保存更改并使用以下命令在客户端上重新启动 rsyslog 服务:
sudo systemctl restart rsyslog
步骤5:查看服务器上的日志消息
您可以使用 SSH 登录远程服务器并查看从客户端服务器发送的日志。在这种情况下,rsyslog 配置为将客户端日志存储在远程服务器的 /var/log/remote 目录中。
cd /var/logs/remote
然后使用 ls 命令列出目录的内容:
ls -l
正如您在输出中看到的,该目录包含名为 andiwa 和 rukuru 的远程服务器的日志消息。它们的日志文件分别命名为 andiwa.log 和 rukuru.log。
然后,您可以使用文本编辑器或 Linux 文件查看工具(例如 cat 或 less)查看日志文件。
远程记录为您提供更多控制
本指南介绍了如何在 Linux 上设置远程日志服务器(日志主机)。
在日志记录方面,日志主机可以为您提供更好的组织和控制。即使在系统损坏或无法访问的情况下,您仍然可以从日志主机查看其日志并找出问题所在。