服务宕机、登录异常、磁盘爆满、程序报错,绝大多数线上问题,都能靠日志找到根因。日志怎么采集、怎么分类、怎么自动清理、怎么防止丢失、怎么集群统一管理。一旦遇到日志丢失、磁盘占满、无法溯源,就彻底束手无策。今天这篇文章,从零梳理Linux完整日志体系,按「基础认知→核心采集→生产避坑→集群进阶→自动轮转→开机日志补全」逻辑展开,全覆盖实操+面试考点,新手也能一次性吃透。
一、基础认知:看懂每条系统日志的4大字段
Linux所有标准日志,都有固定格式。每条日志只包含4个核心信息,看懂就能独立解析日志、定位问题。✅服务/程序名:问题源头(systemd、定时任务、ssh登录等)✅日志详情:具体报错、执行状态、事件描述(排障核心)
二、核心基石:rsyslog 系统日志采集服务
系统所有服务、程序产生的日志,都会经过它统一采集、分类、筛选、存储、远程推送。1. 核心配置文件
所有日志规则、存储路径、远程推送配置,全部在此文件定义。2. 核心语法(面试高频必考)
语法格式:服务类别[.=!]讯息等级 存储/推送位置通俗理解:筛选指定服务、指定严重等级的日志,存入文件或推送远程服务器。实操示例:mail.info /var/log/maillog_info释义:mail邮件服务中,大于等于info级别的日志,全部写入指定日志文件。3. 服务类别:精准区分日志来源
3 daemon → 系统常驻服务(systemd等)4 auth → 登录认证日志(ssh、su、login)10 authpriv → 高级认证、PAM模块私密日志16-23 local0-local7 → 自定义预留日志,local7为系统开机专属日志4. 日志等级:数值越小,问题越严重
4 warn → 警告(潜在问题,不影响服务运行)3 err → 功能错误(服务启动失败、功能异常)0 emerg → 系统崩溃级错误(濒临宕机,多为硬件/内核问题)5. 匹配符号:精准筛选日志
6. 日志输出方式(多场景适配)
● 本地文件:/var/log/xxx.log(系统默认)● 远程服务器:@IP(UDP) / @@IP(TCP)(集群必备)
三、生产避坑:90%新手都会犯的日志错误
很多人清理日志习惯用 vi/vim 清空文件,这是生产致命误区。1. 核心原理
rsyslog启动后会持续占用日志文件的inode文件句柄持续写入。vi编辑保存会生成新文件、替换inode,rsyslog依旧绑定旧句柄。2. 导致后果
3. 故障恢复命令
systemctl restart rsyslog4. 生产安全加固(必做)
给日志文件添加仅追加属性,禁止删除、修改、覆盖,只能新增:
四、集群进阶:搭建远程集中日志服务器
通过rsyslog可搭建统一日志服务器,所有机器日志统一汇总、统一排障。1. 服务端配置(接收所有日志)
1、编辑配置文件:vim /etc/rsyslog.confinput(type="imudp" port="514")input(type="imtcp" port="514")3、重启服务生效:systemctl restart rsyslog2. 客户端配置(推送本机日志)
1、编辑配置文件:vim /etc/rsyslog.conf3、重启服务生效:systemctl restart rsyslog
五、自动化运维:logrotate 日志自动轮转
Linux依靠logrotate实现无人值守自动轮转、备份、压缩、清理日志。1. 工作机制
由crond每日定时触发,脚本路径:/etc/cron.daily/logrotate流程:旧日志改名备份 → 新建空日志 → 压缩归档 → 清理过期日志2. 两大核心配置
● 全局配置:/etc/logrotate.conf(系统默认规则)● 自定义配置:/etc/logrotate.d/(单服务专属规则,优先级更高)3. 全局默认参数
4. 生产常用参数
● sharedscripts:所有日志轮转完成后,仅执行一次脚本(优化性能)5. 实操案例
系统核心日志轮转配置:/etc/logrotate.d/syslog管控cron、maillog、secure等核心日志,轮转后重载rsyslog,保证日志写入不中断。6. 手动调试命令
logrotate -v /etc/logrotate.conf 查看详细轮转过程logrotate -f /etc/logrotate.conf 强制立即轮转(测试/紧急清理)
六、体系补全:systemd-journald 开机日志
而 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. 创建目录并授权
chown root:systemd-journal /var/log/journalchmod 2775 /var/log/journal# 2. 修改配置持久化
vim /etc/systemd/journald.conf# 3. 重启服务生效
systemctl restart systemd-journald
七、核心总结(全文体系闭环)
💡rsyslog:日志采集核心,负责系统运行期间所有日志的分类、存储、推送。💡日志安全机制:禁止vi清空日志,chattr加固文件,杜绝日志丢失与磁盘异常占用。💡远程日志服务:基于514端口,实现集群多机器日志统一集中管理。💡logrotate:自动化轮转清理日志,彻底解决磁盘爆满问题。💡journald:补全开机日志盲区,实现全程日志无死角溯源。五大模块相辅相成,吃透这套Linux日志完整体系,足以应对99%的运维排障与面试场景!