【日志及存储】

Syslog、journald、rsyslog

一、核心概念(强化版)

名称 核心定位 核心特征
Syslog 日志标准协议 仅定义格式+传输规则,无实际进程
journald 系统日志统一收集器 二进制、结构化、依赖systemd
rsyslog 日志处理/分发引擎 文本化、分类过滤、跨节点转发

二、工作流程(可视化+关键补充)

stdout/syslog API
二进制存储
/run/systemd/journal/syslog socket
分类过滤
分类过滤
可选
应用/内核/服务
journald
run/var/log/journal
rsyslog
var/log/messages
var/log/secure
远程日志服务器

关键补充:

  • journald 是第一入口:系统所有日志(包括内核、服务、应用)先过 journald,无遗漏;
  • rsyslog 是加工出口:仅处理 journald 转发的日志,专注"分类、持久化、转发";
  • 二者协同:默认情况下 journald 负责"存",rsyslog 负责"用"(文本化便于查阅/分析)。

三、核心操作命令(背诵级)

1. journald 操作(journalctl)

命令 作用 备注
journalctl 查看所有日志 默认按时间倒序
journalctl -f 实时跟踪日志(类似 tail -f) 排障常用
journalctl -u nginx.service 只看nginx服务的日志 指定unit,高频使用
journalctl --since "10min ago" 查看最近10分钟日志 时间筛选:"2026-02-12"、"yesterday"
journalctl -p err 只看错误级别日志 p=priority,级别:info/warning/err/emerg
journalctl --disk-usage 查看journal日志占用磁盘空间 检查存储配置是否生效
mkdir /var/log/journal && systemctl restart systemd-journald 开启journald永久存储 默认仅存内存,需手动创建目录

2. rsyslog 操作

命令 作用 备注
systemctl restart rsyslog 重启rsyslog(配置生效) 修改rsyslog.conf后必执行
systemctl enable rsyslog 开机自启rsyslog 生产环境建议开启
tail -f /var/log/messages 实时查看系统核心日志 排障最常用
grep "error" /var/log/secure 筛选安全日志中的错误信息 结合grep高效分析

四、核心配置示例(可直接套用)

1. journald.conf 关键配置(/etc/systemd/journald.conf)

ini 复制代码
[Journal]
Storage=persistent       # 强制永久存储(必配)
SystemMaxUse=2G          # 日志最大占用2GB磁盘
SystemMaxFileSize=200M   # 单个日志文件最大200MB
MaxRetentionSec=1month   # 日志保留1个月
ForwardToSyslog=yes      # 转发给rsyslog(默认开启,勿改)
RuntimeMaxUse=100M       # 内存日志上限100MB

配置生效:systemctl restart systemd-journald

2. rsyslog.conf 关键配置(/etc/rsyslog.conf)

ini 复制代码
# 1. 加载对接journald的模块(必加)
module(load="imjournal" StateFile="imjournal.state")

# 2. 核心规则示例(过滤+输出)
*.info;mail.none;authpriv.none;cron.none  /var/log/messages  # 普通日志存messages
authpriv.*                                /var/log/secure   # 认证日志存secure
mail.*                                    -/var/log/maillog # -表示异步写入,提升性能
cron.*                                    /var/log/cron     # 定时任务日志存cron
*.emerg                                   *                 # 紧急日志广播给所有登录用户
# 可选:转发到远程日志服务器
# *.info;mail.none;authpriv.none;cron.none  @192.168.1.10:514

配置生效:systemctl restart rsyslog

五、故障排查核心思路

  1. 日志看不到?

    • 先查 journald:journalctl -f → 确认日志是否产生;
    • 再查 rsyslog:systemctl status rsyslog → 确认服务是否运行;
    • 最后查配置:grep -v "^#" /etc/rsyslog.conf → 确认规则是否匹配。
  2. journald 日志重启丢失?

    • 检查 /var/log/journal 目录是否存在 → 不存在则创建并重启 journald;
    • 检查 Storage=persistent 是否配置。
  3. rsyslog 不生成文本日志?

    • 确认 journald 的 ForwardToSyslog=yes
    • 确认 rsyslog 加载了 imjournal 模块;
    • 检查日志文件权限:ls -l /var/log/messages → 确保rsyslog可写入。

总结

  1. 核心分工:journald 管"收集+二进制存储",rsyslog 管"加工+文本化+分发",Syslog 是二者遵循的协议;
  2. 关键操作:journalctl 查二进制日志,tail/less 查rsyslog生成的文本日志,修改配置后需重启对应服务;
  3. 核心配置:journald 重点配"持久化(Storage=persistent)",rsyslog 重点配"来源+级别+输出路径"。
相关推荐
广州灵眸科技有限公司11 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
大模型码小白12 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
憧憬成为web高手14 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学14 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
延凡科技15 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
ifenxi爱分析16 小时前
爱分析最新报告解读:AI数据基础设施与数据中台的区别
大数据·人工智能
oradh16 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
品牌全球行16 小时前
共商共建共享 链接数字未来——“一带一路数字新城(深圳)会客厅筹备办”揭牌仪式在深圳隆重举行
大数据·人工智能
z1234567898617 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD17 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关