【日志及存储】

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 重点配"来源+级别+输出路径"。
相关推荐
踢足球09292 小时前
寒假打卡:2026-2-12
数据库
thginWalker2 小时前
Redis的常用命令
数据库·redis·缓存
NineData2 小时前
NineData 社区版 V4.9.0 发布!支持应用切换能力以降低迁移风险,慢查询新增外部采集来源
数据库·sql·ninedata·社区版·v4.9.0·sql开发工具·navicat平替
TongSearch2 小时前
Tongsearch分片的分配、迁移与生命周期管理
java·服务器·数据库·elasticsearch·tongsearch
龙山云仓2 小时前
No152:AI中国故事-对话祖冲之——圆周率与AI精度:数学直觉与极限探索
大数据·开发语言·人工智能·python·机器学习
云境天合小科普2 小时前
无人机用能见度检测仪:预测能见度骤降风险
大数据
跨境小技2 小时前
2026 Shopee数据抓取逐步教程:技术难点、解决思路与实战方法
前端·数据库·网络爬虫
一个天蝎座 白勺 程序猿2 小时前
Apache IoTDB(14):IoTDB结果集排序与查询对齐模式——ORDER BY与ALIGN BY DEVICE使用
大数据·ai·apache·时序数据库·iotdb
一个天蝎座 白勺 程序猿2 小时前
Apache IoTDB(9):数据库操作——数据写入从CLI到集群部署的六种实战
数据库·apache·时序数据库·iotdb