如何在 Debian 11 上设置 Rsyslog 服务器
本教程适用于这些操作系统版本
- Debian 11(Bullseye)
- Debian 9(Stretch)
在此页
- 先决条件
- 安装 Rsyslog
- 配置 Rsyslog
- 为 Rsyslog 配置防火墙
- 配置 Rsyslog 客户端
- 验证客户端日志文件
- 结论
Rsyslog 是一个免费开源的日志记录软件,它通过 IP 网络将所有日志文件转发到集中式日志服务器。它可以帮助系统管理员从中心点关注所有服务器。 Rsyslog 在客户端/服务器模型中工作,它通过 TCP/UDP 协议在端口 514 上从远程客户端接收日志。
在本文中,我们将向您展示如何在 Debian 11 上设置 Rsyslog 服务器。
先决条件
- 两台运行 Debian 11 的服务器。
- 在服务器上配置了根密码。
安装 Rsyslog
首先,您需要在服务器计算机上安装 Rsyslog 服务器包。您可以使用以下命令安装它:
apt-get install rsyslog -y
安装后,使用以下命令验证 Rsyslog 状态:
systemctl status rsyslog
您应该看到以下输出:
? rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-10-03 13:35:32 UTC; 1h 44min ago
TriggeredBy: ? syslog.socket
Docs: man:rsyslogd(8)
man:rsyslog.conf(5)
https://www.rsyslog.com/doc/
Main PID: 283 (rsyslogd)
Tasks: 4 (limit: 2341)
Memory: 5.0M
CPU: 90ms
CGroup: /system.slice/rsyslog.service
??283 /usr/sbin/rsyslogd -n -iNONE
Oct 03 13:35:32 debian11 systemd[1]: Starting System Logging Service...
Oct 03 13:35:32 debian11 rsyslogd[283]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd. [v8.2102.0]
Oct 03 13:35:32 debian11 rsyslogd[283]: [origin software="rsyslogd" swVersion="8.2102.0" x-pid="283" x-info="https://www.rsyslog.com"] start
Oct 03 13:35:32 debian11 systemd[1]: Started System Logging Service.
Oct 03 13:35:34 debian11 systemd[1]: rsyslog.service: Sent signal SIGHUP to main process 283 (rsyslogd) on client request.
Oct 03 13:45:33 debian11 rsyslogd[283]: [origin software="rsyslogd" swVersion="8.2102.0" x-pid="283" x-info="https://www.rsyslog.com"] rsyslog>
配置 Rsyslog
接下来,您需要将 Rsyslog 配置为在服务器模式下运行。您可以通过编辑 Rsyslog 主配置文件来完成此操作:
nano /etc/rsyslog.conf
取消注释以下行:
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
接下来,添加以下行来定义模板以存储来自客户端系统的传入日志:
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
保存并关闭文件,然后重新启动 Rsyslog 服务以应用更改:
systemctl restart rsyslog
此时Rsyslog启动,监听514端口,可以使用以下命令查看:
ss -tunlp | grep 514
您应该看到以下输出:
udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=26276,fd=6))
udp UNCONN 0 0 [::]:514 [::]:* users:(("rsyslogd",pid=26276,fd=7))
tcp LISTEN 0 25 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=26276,fd=8))
tcp LISTEN 0 25 [::]:514 [::]:* users:(("rsyslogd",pid=26276,fd=9))
为 Rsyslog 配置防火墙
接下来,您需要允许端口 514 通过 UFW 防火墙。您可以使用以下命令允许它:
ufw allow 514/tcp
ufw allow 514/udp
接下来,重新加载防火墙以应用更改:
ufw reload
配置 Rsyslog 客户端
接下来,您需要配置 Rsyslog 客户端以将日志文件发送到 Rsyslog 服务器。您可以通过编辑 Rsyslog 主配置文件来完成。
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
此外,添加以下行以在 rsyslog 服务器关闭时设置磁盘队列:
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
保存并关闭文件,然后重新启动 Rsyslog 服务以应用更改:
systemctl restart rsyslog
验证客户端日志文件
所有客户端日志文件都存储在服务器计算机上的 /var/log 目录中。
您可以使用以下命令检查它:
ls -l /var/log/
您应该看到与客户端系统的主机名相对应的客户端日志文件:
alternatives.log auth.log.2.gz daemon.log debian11 dpkg.log kern.log.1 messages.1 private syslog.3.gz
clientpc auth.log.3.gz daemon.log.1 debug dpkg.log.1 kern.log.2.gz messages.2.gz runit syslog.4.gz
apt btmp daemon.log.3.gz debug.2.gz icinga2 kern.log.4.gz messages.4.gz syslog
auth.log.1 csm.log dbconfig-common debug.4.gz kern.log messages ntpstats syslog.2.gz
可以看到,clientpc是clients系统的日志目录。
结论
在上面的指南中,我们解释了如何在 Debian 11 上设置 Rsyslog 服务器和客户端。您现在可以从中央位置监控您的客户端。如果您有任何问题,请随时问我。