精读笔记 · 第11章 日志管理
大约 4 分钟
精读笔记 · 第11章 日志管理
精读整理自 RHCE9 随堂讲义(原文字版 9 页)|同名视频约 10 节(第02套) 关联知识文件:
分章笔记/01-Linux/02-04-日志与网络、02-05-服务管理与安全
一、日志体系总览
- 关心问题:哪类程序 → 产生什么日志 → 放到什么地方。
- 两大任务:rsyslog 系统日志管理;logrotate 日志轮转(切割+删旧)。
- 处理日志的进程两类:① rsyslogd 系统专职日志(登录、程序启停、错误信息);② httpd/nginx/mysql 等应用各自记录(访问日志等)。
- 观察 rsyslogd:
ps aux | grep rsyslogd(进程名/usr/sbin/rsyslogd -n)。
二、常见日志文件
| 日志文件 | 记录内容 |
|---|---|
/var/log/messages | 系统主日志(默认不含 mail/auth/cron) |
/var/log/secure | 认证与安全(SSH 登录) |
/var/log/yum.log | yum 安装记录(CentOS9 用 yum history info) |
/var/log/maillog | postfix 邮件相关 |
/var/log/cron | crond/at 计划任务日志 |
/var/log/httpd/access_log | Web 访问日志(应用类示例) |
/var/log/mysqld.log | MySQL |
/var/log/xferlog | FTP 传输日志 |
/var/log/wtmp | 当前登录用户(w) |
/var/log/btmp | 最近登录失败(last 系) |
/var/log/lastlog | 所有用户最后登录(lastlog) |
/var/log/audit/audit.log | 内核审计(了解) |
- 查看技巧:
tail -10看尾部、tail -f/tailf动态跟踪。
三、rsyslogd 主配置
- 配置文件:主配置
/etc/rsyslog.conf;辅助/etc/sysconfig/rsyslog(级别定义,了解);轮转子配置/etc/logrotate.d/syslog。 - 规则 RULES = facility(设备) + level(级别) + file(存放位置) 三部分。
- 常见默认规则:
authpriv.* /var/log/secure(SSH)、mail.* -/var/log/maillog(- 异步写,日志大)、cron.* /var/log/cron、*.info;mail.none;authpriv.none;cron.none /var/log/messages(messages 排除邮件/认证/计划)。 - facility 设备:authpriv 安全认证、cron 调度(at/cron)、mail 邮件、daemon 后台、kern 内核、ftp、lpr 打印、user(默认)、syslog 自身、local0~7 用户自定义。
- level 级别(低→高,记录越来越少):debug → info → notice → warning → err → crit → alert → emerg;
*= 所有级别。- emerg 紧急(如配置文件丢失)、alert 报警(如磁盘 95%)、crit 致命、err 错误、warning 警告、notice 普通重要、info 标准、debug 调试。
- 应用自定义实验(把 SSH 日志单独放):
vim /etc/ssh/sshd_config改SyslogFacility AUTH;vim /etc/rsyslog.conf加规则auth.* /var/log/anquan.log;systemctl restart rsyslog sshd;- 另开终端登录,
tail -f /var/log/anquan.log观察。
四、logrotate 日志轮转
- 作用:日志按时间或大小切成多份,删除久远日志,防止磁盘写满。
- 配置位置:主配置
/etc/logrotate.conf(全局默认)+/etc/logrotate.d/*(各应用子配置,include引入)。 - 主配置常用全局项:
weekly周期、rotate 4保留 4 份、create轮转后新建、dateext日期后缀、compress压缩(默认注释)、include /etc/logrotate.d。 - 独立日志块示例(/var/log/wtmp):
monthly一月一次 +minsize 1M(两条件同时满足才转)+create 0664 root utmp+rotate 1。 - 关键选项:
missingok丢失不报错;copytruncate拷贝改名后清空原文件(避免程序锁旧文件);sharedscripts+postrotate ... endscript轮转后发信号重载服务(如systemctl kill -s HUP rsyslog)。 - 自定义轮转 messages:(注意先删掉
/var/log/messages { missingok daily # 周期缩短到每天 rotate 3 # 保留 3 份 create 0660 root root }/etc/logrotate.d/rsyslog里对 messages 的旧配置,避免冲突。) - 测试与状态:手动把时间拨快
date 04011000后执行/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf→ls /var/log/messages*看到多份;cat /var/lib/logrotate/logrotate.status看各日志最近轮转时间。
五、命令速查表
| 场景 | 命令 |
|---|---|
| 查看日志 | tail -10 /var/log/messages、tail -f /var/log/secure、tailf |
| 登录类日志 | w、last、lastlog |
| rsyslog 进程 | `ps aux |
| 规则调试 | man 3 syslog(设备/级别)、man rsyslog.conf |
| 服务改规则后 | systemctl restart rsyslog sshd |
| 轮转子配置 | ls /etc/logrotate.d、cat /etc/logrotate.d/syslog |
| 手动轮转 | /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf |
| 查看轮转状态 | cat /var/lib/logrotate/logrotate.status |
六、易错点
/var/log/messages默认不含 mail/authpriv/cron(用 none 排除),找 SSH 记录要看 secure。- rsyslog 规则改完必须
systemctl restart rsyslog(sshd 改 facility 后还要重启 sshd)。 - 轮转配置冲突:子配置与 rsyslog 里同一文件重复配置会告警/不生效,先清理旧规则。
logrotate由 cron/anacron 定时跑:手动测试前先date拨时间或用-f强制;改完记得把时间改回。- 生产排查顺序:先看 messages/secure/cron,再看应用日志(httpd/mysql),最后看 audit。
七、实操清单
tail -f /var/log/secure + 另终端 SSH 登录观察 → 按“三、4”做 SSH 日志独立文件实验 → 删 messages 旧规则 → 自定义 daily/rotate 3 → 拨时间手动触发轮转 → ls /var/log/messages* 验证 → 看 logrotate.status。
八、本章自测
- messages 默认排除哪三类设备?2. facility 与 level 分别是什么?由低到高列 4 个级别?3. SSH 登录日志默认在哪个文件?4. logrotate 的 rotate 4 和 dateext 含义?5. copytruncate 适用什么场景?6. 轮转后如何通知 rsyslog 重载?
