CentOS 系统中的日志文件是系统运行、故障排查和安全审计的核心依据。以下从日志分类、查看方法、应用场景及案例三个维度系统说明:
📁 一、常用系统日志文件(存储于 /var/log)
以下是 CentOS 中最关键的日志文件及其作用:
| 日志文件 | 存储内容 | 查看命令示例 | 典型应用场景 |
|---|---|---|---|
/var/log/messages |
系统主日志(内核消息、服务状态、硬件事件) | tail -f /var/log/messages |
系统服务异常、硬件故障排查 |
/var/log/secure |
认证与安全事件(SSH登录、sudo操作、密码失败记录) | grep "Failed" /var/log/secure |
SSH暴力破解分析、用户权限审计 |
/var/log/boot.log |
系统启动过程详情(服务加载顺序、启动耗时) | cat /var/log/boot.log |
系统启动卡顿、服务启动失败定位 |
/var/log/cron |
定时任务执行记录(创建、执行结果、错误输出) | grep "CMD" /var/log/cron |
定时任务未执行、脚本错误调试 |
/var/log/maillog |
邮件服务活动(发送/接收记录、SMTP错误) | journalctl -u postfix |
邮件投递失败分析 |
/var/log/httpd/ |
Apache/Nginx访问日志(access_log)及错误日志(error_log) |
tail -f /var/log/httpd/error_log |
Web服务500错误、访问路径优化 |
/var/log/dmesg |
内核环缓冲区日志(硬件检测、驱动加载、内存错误) | `dmesg | grep "error"` |
| 二进制日志 | |||
/var/log/lastlog |
用户最后一次登录信息 | lastlog |
可疑账户登录追溯 |
/var/log/wtmp |
历史登录/注销记录 | last |
用户活动时间轴重建 |
/var/log/btmp |
失败登录尝试 | lastb |
爆破攻击源IP统计 |
💡 注:部分日志需
root权限访问(如secure、btmp)。
🔍 二、日志查看与分析命令
(1) 基础命令(文本日志)
| 命令 | 参数示例 | 功能说明 | 适用场景 |
|---|---|---|---|
tail |
-f(实时追踪)-n 100(末100行) |
监控日志尾部更新 | 服务启动实时监控 |
grep |
-i(忽略大小写)-C 5(上下文) |
关键词过滤(如 "error") | 快速定位错误事件 |
less |
/(搜索)Shift+G(跳转末尾) |
分页浏览大文件 | 历史日志回溯分析 |
awk |
awk '{print $4}'(提取第4列) |
按列提取数据 | 统计HTTP状态码分布 |
示例:
# 统计Nginx日志中500错误的IP来源
awk '$9 == 500 {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
(2) journalctl(systemd日志管理)
-
实时追踪服务日志:
journalctl -u nginx.service -f -
按时间筛选:
journalctl --since "2025-08-04 09:00" --until "12:00" -
按优先级过滤:
journalctl -p err -b(本次启动的错误日志)
(3) 高级工具
-
lnav:多文件高亮分析(lnav /var/log/httpd/*.log) -
Logwatch:生成日报摘要(logwatch --detail High) -
GoAccess:Web日志可视化(生成HTML报表)
⚙️ 三、应用场景与案例分析
场景1:SSH暴力破解攻击分析
-
日志文件:
/var/log/secure -
分析命令:
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr -
输出示例:
120 192.168.1.100 45 61.177.173.10结论:IP
192.168.1.100发起高频破解,需封锁。
场景2:系统无故重启原因
-
日志文件:
journalctl+/var/log/messages -
分析步骤:
- 查询重启记录:
journalctl --list-boots(获取启动ID) - 检查上次启动日志:
journalctl -b -1 | grep "kernel panic" - 结合硬件日志:
dmesg -T | grep "oom"(检查内存溢出)。
- 查询重启记录:
场景3:Web服务器响应缓慢
-
日志文件:
/var/log/nginx/access.log -
分析命令:
# 统计最慢的10个请求(按响应时间排序) awk '{print $7, $NF}' access.log | sort -k2 -nr | head -10输出示例:
/api/data 12.7s /images/load.jpg 8.2s结论:优化数据接口
/api/data性能。
💎 四、总结建议
-
权限管理:普通用户需加入
adm组或使用sudo访问受限日志。 -
日志轮转:通过
logrotate自动分割旧日志(配置在/etc/logrotate.d/)。 -
安全审计:定期分析
secure和btmp,结合fail2ban自动封禁恶意IP。 -
企业级方案:大型环境推荐
ELK Stack(Elasticsearch+Logstash+Kibana)实现日志集中分析。
通过定向分析场景日志(如安全用
secure、服务故障用messages),可快速收敛问题范围。对高频操作(如IP统计、错误聚合)建议封装为脚本或别名(例:alias logerr='journalctl -p err -b')提升效率。
浙公网安备 33010602011771号