在 Linux 系统运维与开发中,日志是定位问题、审计安全事件、分析系统状态的核心依据。
在 Linux 系统环境下,rsyslog 和 journald 是两款应用最为广泛的日志系统,前者以灵活的转发机制和丰富的过滤规则著称,后者则凭借与 systemd 的深度集成和高效的二进制日志存储特性成为主流选择。本文将从日志系统的基础认知出发,详细讲解 rsyslog 与 journald 的配置方法、常用操作,并对比两者的核心差异,帮助运维人员根据实际场景选择合适的日志解决方案。
日志系统的核心价值体现在以下四个方面:
特性 | rsyslog | journald |
---|---|---|
日志存储 | 文本文件(/var/log/) | 二进制日志(journal 文件) |
性能 | 高性能,支持异步写入 | 内存+磁盘混合存储 |
过滤与路由 | 强大规则引擎,支持条件转发 | 基本过滤,需配合 journalctl |
网络传输 | 支持 TCP/UDP、加密传输 | 不直接支持 |
兼容性 | 兼容 syslog 协议 | systemd 环境原生支持 |
适用场景 | 集中日志、跨主机收集 | 本地日志管理、systemd 服务调试 |
/etc/systemd/journald.conf
常用配置项:
[Journal]
Storage=persistent # 持久化到磁盘(/var/log/journal)
Compress=yes # 压缩旧日志
SystemMaxUse=1G # 限制总占用空间
MaxFileSec=1month # 单文件最大保存时间
修改后重启:
systemctl restart systemd-journald
# 查看所有日志
journalctl
# 查看指定服务日志
journalctl -u nginx
# 实时跟踪日志
journalctl -f
# 查看指定时间段
journalctl --since "2025-09-01" --until "2025-09-08"
/etc/rsyslog.conf
/etc/rsyslog.d/*.conf
# 接收本地日志
module(load="imuxsock") # Unix socket
module(load="imklog") # 内核日志
# 保存不同类型日志
authpriv.* /var/log/secure
mail.* -/var/log/maillog
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# 远程日志转发
*.* @@192.168.1.100:514 # TCP
重启服务:
systemctl restart rsyslog
在大多数 systemd 系统中,journald 会先收集日志,再转发给 rsyslog,由 rsyslog 进行持久化或转发。 配置转发:
# /etc/systemd/journald.conf
ForwardToSyslog=yes
这样可以:
Storage=persistent
logrotate
定期压缩、删除旧日志/var/log/
权限,防止敏感信息泄露客户端(Web 服务器)配置:
# /etc/rsyslog.d/nginx.conf
module(load="imfile")
input(type="imfile"
File="/var/log/nginx/access.log"
Tag="nginx-access"
Severity="info"
Facility="local7")
local7.* @@logserver.example.com:514
日志服务器配置:
# /etc/rsyslog.conf
module(load="imtcp")
input(type="imtcp" port="514")
local7.* /var/log/nginx_access.log
日志系统是 Linux 运维的 “眼睛”,rsyslog 与 journald 作为主流方案,分别代表了传统文本日志与现代二进制日志的技术方向。rsyslog 以兼容性强、远程转发灵活的优势,在分布式日志收集场景中不可或缺;journald 则凭借结构化查询、systemd 深度集成的特性,成为单机运维的高效工具。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。