首页/安全/等保与合规速查/systemd-journald:持久化与查询

systemd-journald:持久化与查询

journald 默认只存内存,重启即丢:需开启持久化存储、设置容量上限,并将关键日志转发到集中平台长期留存。

等保与合规速查安全更新于 2026-10-13

journald 的默认行为

systemd-journald 负责收集内核、服务与标准输出日志,在很多发行版上默认使用易失存储:日志放在内存中,重启后就没了。这在家用或调试场景够用,但用于审计与留存时不满足要求。生产环境需要开启持久化、设置容量上限,并把关键日志转发到集中平台做长期留存与关联分析。

基本信息

适用平台使用 systemd 的 Linux 发行版(RHEL、Debian、Ubuntu 等)
配置文件/etc/systemd/journald.conf
默认行为易失存储,重启后历史日志丢失
关键参数Storage、SystemMaxUse、ForwardToSyslog
查询工具journalctl,支持按服务、优先级与时间过滤

典型使用场景

  • 等保留存整改:把系统日志持久化并保留足够时长
  • 故障排查:按服务与时间窗口快速定位启动或崩溃日志
  • 审计取证:导出结构化日志作为事件时间线证据
  • 容量治理:限制日志占用,避免写满根分区
  • 集中汇聚:转发到 rsyslog 或日志平台统一留存

持久化配置(/etc/systemd/journald.conf)

持久化配置(/etc/systemd/journald.conf)
Storage=persistent          # 持久化到 /var/log/journal
SystemMaxUse=2G             # 限制系统日志占用上限
RuntimeMaxUse=256M          # 限制内存中日志占用
MaxRetentionSec=180day      # 最长保留时间(按需设置)
ForwardToSyslog=yes         # 同时转发给 rsyslog 统一归档

查询与维护

查询与维护
journalctl -u sshd --since "1 hour ago"   # 按服务与时间过滤
journalctl -p err --since today            # 只看错误级别
journalctl _PID=1234 -o json-pretty | head # 结构化输出,便于解析
journalctl --disk-usage                    # 查看当前占用
journalctl --vacuum-size=500M              # 按大小清理旧日志
systemctl restart systemd-journald         # 改配置后重载

参数速查

参数作用建议
Storage存储方式生产设为 persistent
SystemMaxUse磁盘日志上限按磁盘容量设置
MaxRetentionSec最长保留时间与留存要求对齐
ForwardToSyslog是否转发 syslog需要集中归档时开启

运维要点

  • 开启持久化:确认 /var/log/journal 目录存在并有足够空间
  • 设置容量上限:同时限制内存与磁盘占用,避免影响业务分区
  • 权限收紧:日志目录只允许管理员与指定组访问
  • 转发归档:关键日志转发到集中平台,本地只做过渡缓存
  • 定期核对:检查日志时间范围是否覆盖留存要求,发现断档及时排查
journald 与 rsyslog 同时采集同一批日志时会出现重复条目,建议明确分工:一端作为主存储,另一端只做转发,并在查询侧做去重。

易错点

  • 默认易失存储:不配置 Storage=persistent 时,重启后历史日志不可查
  • 不设容量上限:日志无限增长可能写满根分区,导致系统异常
  • journald 与 rsyslog 重复采集:口径与去重未设计时,统计与实际数量对不上
  • 改配置不重启服务:journald.conf 修改后需要重启 systemd-journald 才生效

数据来源与参考

  • systemd-journald 文档(journald.conf / journalctl)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌