Rsyslog是Ubuntu系统上一个强大且灵活的系统日志守护进程,用于收集、过滤、存储和转发由操作系统及应用程序生成的日志消息。它是传统syslog服务的增强版本,提供了额外功能,如高性能日志记录、高级过滤能力以及对多种日志协议的支持,包括TCP、UDP和RELP(可靠事件日志协议)。Rsyslog可以处理来自各种来源的日志消息,并将它们定向到不同的目标位置,如文件、数据库或远程服务器。它广泛应用于集中式日志系统中,用于监控、故障排除和审计目的。通过允许详细的配置,Rsyslog使Ubuntu管理员能够高效地管理系统日志,确保重要信息被安全地捕获和存储。
日志对于分析和排查Linux系统及应用程序相关问题非常有用。默认情况下,所有日志文件都位于基于Linux的操作系统中的/var/log目录内。有几种类型的日志文件,包括cron、kernel、users和security,其中大多数文件由Rsyslog服务控制。
在本教程中,我将解释如何在Ubuntu 24.04服务器上配置Rsyslog服务器。
前提条件
两台运行Ubuntu 24.04的服务器。
Rsyslog服务器机器上配置了静态IP地址192.168.0.101,Rsyslog客户端机器上配置了192.168.0.102。
两台服务器上都配置了root密码。
安装Rsyslog
你可以通过运行以下命令来安装Rsyslog:
apt install rsyslog -y安装Rsyslog后,你可以使用以下命令检查Rsyslog的版本:
rsyslogd -v你还可以使用以下命令检查Rsyslog的状态:
systemctl status rsyslog你应该看到类似以下的输出:
? rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2024-08-22 04:28:55 UTC; 1min 31s ago
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
Main PID: 724 (rsyslogd)
Tasks: 4 (limit: 1114)
CGroup: /system.slice/rsyslog.service
??724 /usr/sbin/rsyslogd -n
Aug 22 04:28:53 ubuntu2404 systemd[1]: Starting System Logging Service...
Aug 22 04:28:54 ubuntu2404 rsyslogd[724]: imuxsock: Acquired UNIX socket \'/run/systemd/journal/syslog\' (fd 3) from systemd. [v8.32.0]
Aug 22 04:28:54 ubuntu2404 rsyslogd[724]: rsyslogd\'s groupid changed to 106
Aug 22 04:28:54 ubuntu2404 rsyslogd[724]: rsyslogd\'s userid changed to 102
Aug 22 04:28:54 ubuntu2404 rsyslogd[724]: [origin software="rsyslogd" swVersion="8.32.0" x-pid="724" x-info="http://www.rsyslog.com"] start
Aug 22 04:28:55 ubuntu2404 systemd[1]: Started System Logging Service.Rsyslog现已安装并运行。接下来,你必须配置它以服务器模式运行。你可以编辑文件/etc/rsyslog.conf。
首先,你需要定义协议,可以是UDP、TCP或两者兼有。
要同时使用UDP和TCP连接,搜索并取消注释以下行:
nano /etc/rsyslog.conf配置Rsyslog服务端
取消注释以下行以启用UDP和TCP模块:
$ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514
接下来,定义特定的子网、IP或域名以限制访问,如下所示:
$AllowedSender TCP, 127.0.0.1, 192.168.0.0/24, *.example.com $AllowedSender UDP, 127.0.0.1, 192.168.0.0/24, *.example.com
接下来,你必须创建一个模板来告诉Rsyslog服务器如何存储传入的syslog消息。在GLOBAL DIRECTIVES部分之前添加以下行:
$template remote-incoming-logs, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?remote-incoming-logs
完成后保存并关闭文件。然后,使用以下命令检查Rsyslog配置是否存在语法错误:
rsyslogd -f /etc/rsyslog.conf -N1你应该看到以下输出:
rsyslogd: version 8.32.0, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.
最后,使用以下命令重启Rsyslog服务:
systemctl restart rsyslog现在,使用以下命令验证Rsyslog是否正在监听TCP/UDP端口:
netstat -4altunp | grep 514你应该得到以下输出:
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1332/rsyslogd udp 0 0 0.0.0.0:514 0.0.0.0:* 1332/rsyslogd
Rsyslog服务器已安装并配置完毕,可以接收来自远程主机的日志。
配置Rsyslog客户端
现在,你必须配置Rsyslog客户端将syslog消息发送到远程Rsyslog服务器。
登录到客户端机器,打开Rsyslog配置文件,如下所示:
nano /etc/rsyslog.conf在文件末尾添加以下行:
##Enable sending of logs over UDP add the following line: *.* @192.168.0.101:514 ##Enable sending of logs over TCP add the following line: *.* @@192.168.0.101:514 ##Set disk queue when rsyslog server will be down: $ActionQueueFileName queue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1
保存并关闭文件。然后,重启Rsyslog服务以应用配置更改:
systemctl restart rsyslog此时,Rsyslog客户端已配置完毕,可以将日志发送到Rsyslog服务器。
查看客户端日志
登录到Rsyslog服务器并检查/var/log目录。你应该能看到客户端机器主机名的条目,包括多个日志文件:
ls /var/log/rsyslog-client/输出:
CRON.log kernel.log rsyslogd-2039.log rsyslogd.log sudo.log wpa_supplicant.log
总结
在本文中,我们学习了如何在Ubuntu 24.04服务器上安装和配置Rsyslog服务器,以及如何配置Rsyslog客户端将日志发送到Rsyslog服务器。如果你有任何问题,请随时提出。