Rsyslog 是一个开源日志程序,它使用 IP 网络将所有日志文件发送到集中式日志服务器。 它是 Linux 上 Syslog 的改进版本。 它允许系统管理员从一个位置监控所有服务器。
Rsyslog 在客户端/服务器模型中工作,该模型在端口 514 或任何通过 TCP/UDP 协议配置的自定义端口上接收来自远程客户端的日志。 它还支持用于存储日志的数据库(MySQL、PostgreSQL)。
在本指南中,我们将学习如何在 Debian 10/11 上安装和配置 Rsyslog
第一步:安装 Rsyslog 服务器
首先,在您的服务器机器上安装来自 Debian Repository 的 Rsyslog 包。 跑:
$ sudo apt-get install rsyslog -y
安装完成后,检查 Rsyslog 是否正常运行,如图所示:
$ sudo systemctl status rsyslog
Rsyslog 服务现在已在您的服务器计算机上启动并运行。
第 2 步:配置 Rsyslog 服务器
现在它正在运行,将 Rsyslog 配置为在您的 Debian 系统上作为服务器运行。 打开配置文件就是 /etc/rsyslog.conf.
$ sudo vim /etc/rsyslog.conf
找到下面的行并取消注释它们以接收来自远程客户端的 UDP 和 TCP 日志。
# provides UDP syslog reception module(load="imudp") input(type="imudp" port="514") # provides TCP syslog reception module(load="imtcp") input(type="imtcp" port="514")
接下来,我们需要指定 Rsyslog 守护进程将用于存储来自客户端系统的传入日志的模板。 在配置文件的末尾附加以下行。
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?remote-incoming-logs
重新启动 rsyslog 以使更改生效。
$ sudo systemctl restart rsyslog
rsyslog监听514端口,可以在配置文件中修改默认端口。 要验证 rsyslog 守护程序是否正在侦听端口 514,请执行以下 ss 命令。
$ sudo ss -tunlp | grep 514
第 3 步:为 rsyslog 配置防火墙
rsyslog 守护程序现在已在服务器上配置。 如果您在 UFW 防火墙后面,请允许端口 514,以便服务器可以接收来自客户端的日志消息。 执行命令:
$ sudo ufw allow 514/tcp $ sudo ufw allow 514/udp
重新启动防火墙以应用新规则。 跑:
$ sudo ufw reload
第四步:配置 Rsyslog 客户端
接下来,配置 Rsyslog 客户端以将日志消息发送到 Rsyslog 服务器。 确保 RSyslog 已正确安装在您的客户端计算机上。
一、打开配置文件
$ sudo nano /etc/rsyslog.conf
在文件末尾复制并粘贴以下行:
#Enable sending system logs over UDP to rsyslog server *.* @rsyslog-server-ip:514 #Enable sending system logs over TCP to rsyslog server *.* @@rsyslog-server-ip:514
上面的配置指示客户端使用 TCP 和 UDP 协议将日志文件发送到 rsyslog 服务器。 将 rsyslog-server-ip 替换为您的服务器 IP 地址。
如果远程服务器出现故障并且您需要保留日志,则可以通过将以下行添加到客户端配置文件来设置磁盘队列缓冲区。
##Set disk queue when rsyslog server will be down: $ActionQueueFileName queue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1
Save 和 close 文件。 重新加载 rsyslog 服务以应用更改。
$ sudo systemctl restart rsyslog
第 5 步:查看客户端日志文件
Rsyslog 日志文件保存在 /var/日志/ 服务器上的文件夹。 要查看客户端的日志,请使用以下 ls 命令:
$ ls /var/log/
默认情况下,客户端的日志文件存储在以客户端系统的主机名命名的文件夹中。 就我而言,客户端系统具有主机名 Debian。
接下来,运行以下命令查看客户端目录中包含的日志。
$ sudo ls -l /var/log/debian/
您还可以在终端上实时查看日志。 让我们查看来自 root 用户的日志。 运行命令:
$ sudo tail -f /var/log/debian/sudo.log
结论
rsyslog 服务器现在已在 Debian 11 上配置。您现在可以配置多个客户端以将日志消息发送到集中式服务器。