Linux 日志系统详解 - 管理、审计与排障最佳实践
原创2022年3月21日约 1666 字大约 6 分钟
👨🎓博主简介
🏅CSDN博客专家
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
1. 日志系统概述
Linux 日志系统,主要记录了操作系统、内核、服务、应用等运行日志,它既是运维排障的"时光机",也是安全审计的"证据链",更是业务洞察的"数据油田",所以我们要对Linux系统的日志有一定的了解,了解他是干什么的,主要存储什么日志的,就可以进一步去分析问题所在,所以是很重要的。
1.1 为什么需要日志系统
| 维度 | 没有日志 | 有日志 |
|---|---|---|
| 故障排查 | 盲猜,重启玄学 | 秒级定位根因 |
| 安全合规 | 口说无凭 | 满足等保/ISO 27001 审计 |
| 业务指标 | 拍脑袋决策 | UV/PV/转化率一目了然 |
| 系统健康 | 被动告警 | 主动预测磁盘、内存、流量趋势 |
2. 常见日志分类与路径
日志路径为:
/var/log/
| 类型 | 日志名称(Centos / Ubuntu) | 说明 |
|---|---|---|
| 内核日志 | dmesg / kern.log | 系统启动、硬件检测、驱动加载、内核报错 等日志 |
| 通用系统日志 | messages / syslog | 系统通用信息日志(info 级别为主) |
| 认证授权日志 | secure / auth.log | SSH、sudo、su、login 成功/失败记录 |
| 守护进程日志 | daemon.log | 系统后台服务(非 systemd 管理)运行状态 |
| 邮件日志 | maillog / mail.log | 邮件服务(Postfix、Sendmail)发送/接收记录 日志 |
| 引导日志 | boot.log | 系统本次启动过程、服务启动结果 |
| 定时任务日志 | cron | crond 执行记录(任务开始/结束/报错) |
| 用户登录记录 | wtmp(成功登录)btmp(失败登录)lastlog(最后登录) | 用于如下一些命令:last:最近登录的用户who:当前登录的用户lastb:最近登录失败的用户lastlog:用户最近一次登录的信息 |
| 审计日志 | audit/audit.log | auditd 安全审计(权限、文件、系统调用) |
| 软件包日志 | yum.logdpkg.log、apt/history.log | 软件安装、升级、卸载记录 |
| 容器日志 | pods/*/0.log(默认路径) | Kubernetes 容器标准输出(通过 CNI 插件或 cri-o/docker) |
| 业务日志(示例) | nginx/access.logmysql/error.logphp-fpm/www-error.log | 各应用程序自定义路径,需配合 logrotate 管理 |
3. 常用日志命令速查
| 场景 | 命令 |
|---|---|
| 查看全部日志 | journalctl |
| 最近报错详情 | journalctl -xe |
| 仅看 nginx 服务 | journalctl -u nginx |
| 本次开机日志 | journalctl -b |
| 近 1 小时 | journalctl --since "1 hour ago" |
| 磁盘占用 | journalctl --disk-usage |
| 实时滚动 | journalctl -u docker -f |
| 内核信息 | dmesg -T |
| 最近登录失败的用户 | lastb |
| 登录历史 | last / last -n5 |
| 查看用户最后一次登录时间 | lastlog / lastlog | grep root |
4. 日志的级别(8个):
| 级别 | 名称 | 含义 |
|---|---|---|
| 0 | emerg | 系统崩溃级,机器已不可用 |
| 1 | alert | 必须立即处理,否则业务中断 |
| 2 | crit | 关键资源出错,风险极高 |
| 3 | err | 运行错误,功能受损 |
| 4 | warning | 潜在问题,需关注 |
| 5 | notice | 正常但重要的事件 |
| 6 | info | 一般运行信息 |
| 7 | debug | 调试细节,排障时开启 |
5. 日志轮转:logrotate
logrotate 是 Linux 的“日志保洁员”:
按时间或大小把旧日志切成压缩包,保留指定份数,多余自动删除,并可让服务平滑重载继续写新日志。防止它们把磁盘撑爆。
✅ 一句话总结
logrotate 就是帮你自动打包、压缩、清理、重载日志,防止磁盘被日志撑爆的幕后工具。
会按时间 / 大小归档、压缩、删除。
5.1 配置路径
| 文件 | 作用 |
|---|---|
/etc/logrotate.conf | 全局“总章程” |
/etc/logrotate.d/xxx | 每个服务自己的“保洁细则” 可以每个服务创建一个属于自己的配置。 |
5.2 Nginx 示例逐行解释
- 文件名:
nginx
/var/log/nginx/*.log { # 对哪些文件生效
daily # 每天切一次(也可 weekly/monthly/size 100M)
rotate 7 # 只留 7 份,第 8 份自动删除
compress # 切完后 gzip 压缩(节省 80%+ 空间)
missingok # 文件不存在也不报错
notifempty # 空文件跳过不切
create 0640 nginx adm # 新日志文件权限/属主/属组
postrotate
systemctl reload nginx # 切完后让 nginx 重新打开日志文件
endscript
}5.3 Redis 二进制安装切割实例
区别在于重启命令。
- 文件名:
redis
/usr/local/redis_cluster/redis_6379/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 root root
postrotate
/bin/kill -USR1 `cat /usr/local/redis_cluster/redis_6379/pid/redis_6379.pid 2>/dev/null` 2>/dev/null || true
endscript
}解压缩需要用
gunzip命令。
logrotate命令更多详解请查看:Linux 系统管理 : logrotate 命令详解
6. 安全审计日志(auditd)
- 路径:
/var/log/audit/audit.log - 查询示例:
| 场景 | 命令 |
|---|---|
| 所有 sudo 提权 | ausearch -x sudo |
| 指定用户行为 | ausearch -ua alice |
| 指定文件被谁动过 | ausearch -f /etc/passwd -i |
| 一段时间内的异常 | ausearch -ts today -k passwd_change |
| 按 key 关键字 | ausearch -k webconf |
| 生成汇总报表 | aureport -x --summary |
| 登录统计(btmp 范围) | aureport --auth --summary |
| 异常事件(AVC/SELinux) | aureport -a |
| 系统调用统计 | aureport -s --summary |
| 导出 csv | aureport -f --format csv -o /tmp/file_access.csv |
ausearch命令更多详解请查看:Linux 系统管理 : ausearch 命令详解
7. 实际排障场景对照表
| 问题现象 | 排查命令 / 日志 |
|---|---|
| 服务无法启动 | systemctl status 服务名 或 journalctl -u 服务名 |
| SSH 登录失败 | cat /var/log/secure (CentOS) / auth.log (Ubuntu) |
| Nginx 报错 | cat /var/log/nginx/error.log |
| 系统崩溃 | journalctl --since "YYYY-MM-DD HH:MM" |
| 定时任务未执行 | cat /var/log/cron 或 journalctl -u cron |
8. 日志管理最佳实践
| 建议 | 说明 |
|---|---|
| ✅ 启用 logrotate | 控制大小、备份、压缩 |
| ✅ 权限管控 | 日志中可能含密码、Token,防止越权读取 |
| ✅ 集中收集 | rsyslog → ELK / Graylog / Loki,统一检索 |
| ✅ 远程备份 | 防止本地篡改,满足合规 |
| ✅ 分级记录 | 关键服务设 error_log warn/error 级,减少噪音 |
| ✅ 定期清理 | 保留 7–30 天,磁盘告警前自动清理 |
9. 总结
| 模块 | 工具 / 文件 | 用途 |
|---|---|---|
| 主日志系统 | rsyslog / systemd-journald | 采集+存储 |
| 查看命令 | journalctl dmesg tail less | 检索+排障 |
| 登录审计 | last lastlog btmp wtmp | 用户行为 |
| 轮转归档 | logrotate | 自动压缩+清理 |
| 安全审计 | auditd auth.log | 权限&文件事件 |
