Linux 中的日志系统:从 journald 到 rsyslog 全景解析
引言
日志是系统诊断的核心。本文将解析 systemd-journald
、rsyslog
等工具的协作机制与配置方法。
1. systemd-journald
1.1 核心功能
集中化日志 :收集内核、服务日志到
/var/log/journal/
过滤与查询 :
# 查看特定服务日志 journalctl -u nginx.service # 实时监控 journalctl -f
1.2 日志轮转
通过 /etc/systemd/journald.conf
配置存储策略:
Storage=persistent
SystemMaxUse=5G
2. rsyslog:传统日志管理
2.1 配置文件结构
- 主配置 :
/etc/rsyslog.conf
- 模块与规则 :
/etc/rsyslog.d/*.conf
2.2 日志过滤规则
# 将 kernel 警告写入单独文件
kern.warning /var/log/kernel-warnings.log
# 过滤特定服务
if $programname == 'nginx' then /var/log/nginx/access.log
3. 两者的协同工作
3.1 数据流
内核/服务日志 →
systemd-journald
rsyslog 从
journald
读取日志并持久化:# 在 rsyslog 配置中启用 journald 输入模块 module(load="imjournal")
3.2 共存场景
- journald :实时查询与临时存储
- rsyslog :长期归档与远程传输(如
rsyslog → ELK Stack
)
4. 高级配置示例
4.1 远程日志收集
# 在 rsyslog 中配置远程服务器
*.* @@logserver:514 # 使用 TCP 协议
4.2 日志过滤与告警
# 当出现 "error" 关键词时发送邮件
if $msg contains 'error' then :ommail:admin@example.com
总结
systemd-journald
与 rsyslog
各有优势:前者适合实时分析,后者擅长长期存储与远程传输。根据需求选择或组合使用,可构建高效日志系统。