当前位置:首页>Linux>Linux 运维必学(十六)| 日志管理全解:rsyslog+logrotate+journald 实操干货

Linux 运维必学(十六)| 日志管理全解:rsyslog+logrotate+journald 实操干货

  • 2026-09-24 05:20:44
Linux 运维必学(十六)| 日志管理全解:rsyslog+logrotate+journald 实操干货
运维圈内有一句话:日志是排障的最后一道底牌。
服务宕机、登录异常、磁盘爆满、程序报错,绝大多数线上问题,都能靠日志找到根因。
很多运维新手只会简单看日志,却不懂底层逻辑:
日志怎么采集、怎么分类、怎么自动清理、怎么防止丢失、怎么集群统一管理。
一旦遇到日志丢失、磁盘占满、无法溯源,就彻底束手无策。
今天这篇文章,从零梳理Linux完整日志体系,按「基础认知→核心采集→生产避坑→集群进阶→自动轮转→开机日志补全」逻辑展开,全覆盖实操+面试考点,新手也能一次性吃透。

一、基础认知:看懂每条系统日志的4大字段

Linux所有标准日志,都有固定格式。每条日志只包含4个核心信息,看懂就能独立解析日志、定位问题。
✅事件时间:精准记录故障发生时间,锁定时间节点
✅主机名称:多服务器集群中,区分日志来源主机
✅服务/程序名:问题源头(systemd、定时任务、ssh登录等)
✅日志详情:具体报错、执行状态、事件描述(排障核心)

二、核心基石:rsyslog 系统日志采集服务

rsyslog 是Linux日志体系的核心。
系统所有服务、程序产生的日志,都会经过它统一采集、分类、筛选、存储、远程推送。

1. 核心配置文件

主配置路径:/etc/rsyslog.conf
所有日志规则、存储路径、远程推送配置,全部在此文件定义。

2. 核心语法(面试高频必考)

语法格式:服务类别[.=!]讯息等级 存储/推送位置
通俗理解:筛选指定服务、指定严重等级的日志,存入文件或推送远程服务器。
实操示例:mail.info /var/log/maillog_info
释义:mail邮件服务中,大于等于info级别的日志,全部写入指定日志文件。

3. 服务类别:精准区分日志来源

系统将日志按业务分类,快速定位问题所属模块:
0 kern → 内核日志(硬件检测、核心服务)
1 user → 用户操作、自定义日志
2 mail → 邮件服务日志
3 daemon → 系统常驻服务(systemd等)
4 auth → 登录认证日志(ssh、su、login)
5 syslog → rsyslog自身运行日志
6 lpr → 打印机服务日志
9 cron → 定时任务执行日志
10 authpriv → 高级认证、PAM模块私密日志
11 ftp → 文件传输服务日志
16-23 local0-local7 → 自定义预留日志,local7为系统开机专属日志

4. 日志等级:数值越小,问题越严重

日志按严重程度分级,排障优先看高阶报错:
7 debug → 调试信息(日常可忽略)
6 info → 正常运行信息
5 notice → 需轻微关注的正常事件
4 warn → 警告(潜在问题,不影响服务运行)
3 err → 功能错误(服务启动失败、功能异常)
2 crit → 严重错误(核心功能瘫痪)
1 alert → 紧急警报(必须立即处理)
0 emerg → 系统崩溃级错误(濒临宕机,多为硬件/内核问题)
特殊等级:none → 不记录该类别日志

5. 匹配符号:精准筛选日志

●.:当前等级 + 更严重等级(最常用)
●.=:仅严格匹配当前等级
●.!:排除当前等级,记录其余所有日志

6. 日志输出方式(多场景适配)

● 本地文件:/var/log/xxx.log(系统默认)
● 硬件设备:打印机等终端设备
● 在线用户:推送至指定终端
● 远程服务器:@IP(UDP) / @@IP(TCP)(集群必备)
● 全员广播:推送所有在线终端

三、生产避坑:90%新手都会犯的日志错误

很多人清理日志习惯用 vi/vim 清空文件,这是生产致命误区。

1. 核心原理

rsyslog启动后会持续占用日志文件的inode文件句柄持续写入。
vi编辑保存会生成新文件、替换inode,rsyslog依旧绑定旧句柄。

2. 导致后果

✅ 日志无法写入、数据丢失
✅ 磁盘空间已删除但不释放,磁盘依旧爆满

3. 故障恢复命令

systemctl restart rsyslog
或重载配置(不中断服务)
systemctl reload rsyslog

4. 生产安全加固(必做)

给日志文件添加仅追加属性,禁止删除、修改、覆盖,只能新增:
chattr +a /var/log/*.log
查看属性确认生效
lsattr /var/log/*.log

四、集群进阶:搭建远程集中日志服务器

多服务器集群环境,单台查看日志效率极低。
通过rsyslog可搭建统一日志服务器,所有机器日志统一汇总、统一排障。
默认通信端口:514(TCP/UDP)

1. 服务端配置(接收所有日志)

1、编辑配置文件:vim /etc/rsyslog.conf
2、开启日志接收模块:
UDP轻量化接收
module(load="imudp")
input(type="imudp" port="514")
TCP稳定接收(生产推荐,不丢日志)
module(load="imtcp")
input(type="imtcp" port="514")
3、重启服务生效:systemctl restart rsyslog

2. 客户端配置(推送本机日志)

1、编辑配置文件:vim /etc/rsyslog.conf
2、末尾添加推送规则:
TCP生产稳定模式
*.* @@日志服务器IP
UDP测试模式(按需开启)
#*.* @日志服务器IP
3、重启服务生效:systemctl restart rsyslog

五、自动化运维:logrotate 日志自动轮转

日志会持续增长,不清理一定会占满磁盘。
Linux依靠logrotate实现无人值守自动轮转、备份、压缩、清理日志。

1. 工作机制

由crond每日定时触发,脚本路径:/etc/cron.daily/logrotate
流程:旧日志改名备份 → 新建空日志 → 压缩归档 → 清理过期日志

2. 两大核心配置

● 全局配置:/etc/logrotate.conf(系统默认规则)
● 自定义配置:/etc/logrotate.d/(单服务专属规则,优先级更高)

3. 全局默认参数

● weekly:每周轮转一次
● rotate 4:保留4份备份,超出自动删除
● create:轮转后自动新建空日志
● dateext:备份日志带日期后缀,方便溯源

4. 生产常用参数

● daily:按天轮转(线上业务首选)
● missingok:日志不存在不报错
● notifempty:空日志不轮转
● compress:gzip压缩,节省磁盘空间
● sharedscripts:所有日志轮转完成后,仅执行一次脚本(优化性能)

5. 实操案例

系统核心日志轮转配置:/etc/logrotate.d/syslog
管控cron、maillog、secure等核心日志,轮转后重载rsyslog,保证日志写入不中断。

6. 手动调试命令

logrotate -v /etc/logrotate.conf    查看详细轮转过程
logrotate -f /etc/logrotate.conf    强制立即轮转(测试/紧急清理)

六、体系补全:systemd-journald 开机日志

rsyslog有短板:系统开机初期无法采集日志。
而 journald 专门负责记录开机全过程、服务启动、启动报错日志,是排查开机故障的核心工具。

1. 核心特点

默认临时存储在 /run/log/,重启丢失;可配置持久化永久保存。

2. journalctl 高频查询命令

journalctl -n 10        # 查看最新10条日志

journalctl -r           # 反向输出,最新日志在前(阅读友好)

journalctl -f           # 实时监控日志

journalctl --since "10 minutes ago"  # 近10分钟日志

journalctl _SYSTEMD_UNIT=sshd.service  # 只看指定服务日志

3. 手动生成测试日志

logger -p daemon.info "测试系统服务日志采集"

4. 日志持久化(永久保存)

# 1. 创建目录并授权

mkdir /var/log/journal
chown root:systemd-journal /var/log/journal
chmod 2775 /var/log/journal

# 2. 修改配置持久化

vim /etc/systemd/journald.conf
Storage=persistent

# 3. 重启服务生效

systemctl restart systemd-journald

七、核心总结(全文体系闭环)

💡rsyslog:日志采集核心,负责系统运行期间所有日志的分类、存储、推送。
💡日志安全机制:禁止vi清空日志,chattr加固文件,杜绝日志丢失与磁盘异常占用。
💡远程日志服务:基于514端口,实现集群多机器日志统一集中管理。
💡logrotate:自动化轮转清理日志,彻底解决磁盘爆满问题。
💡journald:补全开机日志盲区,实现全程日志无死角溯源。
五大模块相辅相成,吃透这套Linux日志完整体系,足以应对99%的运维排障与面试场景!

最新文章

随机文章