【日志及存储】

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 重点配"来源+级别+输出路径"。
相关推荐
不会摸鱼的小鱼几秒前
WSL 安装 Ubuntu 22.04 到指定磁盘
数据库·postgresql·php
m0_702036538 分钟前
mysql如何导出特定条件的查询数据_使用mysqldump加where参数
jvm·数据库·python
正在走向自律9 分钟前
标量子查询消除:数据库优化器的一场“等价变戏法”
数据库·sql 优化·金仓数据库·数据库性能调优·标量子查询·数据库优化器
逻极9 分钟前
SQLite 从入门到精通:深入理解嵌入式数据库的艺术与科学
数据库·sqlite·记忆·sqlite从入门到精通
未来之窗软件服务22 分钟前
数据库优化(九)随机抽选系统数据表 ——东方仙盟
大数据·数据库·数据库优化·仙盟创梦ide·东方仙盟
b***251129 分钟前
动力电池自动生产线的工艺逻辑与运维要点
大数据·人工智能
爱喝水的鱼丶34 分钟前
SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行
运维·服务器·数据库·学习·sap·abap
一切皆是因缘际会36 分钟前
本地大模型轻量化部署
大数据·人工智能·机器学习·架构
m0_733565461 小时前
bootstrap怎么实现响应式的文章瀑布流布局
jvm·数据库·python
TE-茶叶蛋1 小时前
sql优化思维
数据库·sql