lin 发表于 4 天前

如何通过日志排查出现的问题(附操作方法)

在服务器运维、系统管理以及应用运维过程中,日志是我们排查问题最重要的依据。日志不仅能帮我们了解系统和服务运行状态,还能准确定位故障原因,加快修复效率。
本篇文章将系统讲解:通过日志排查问题的思路、方法和常用命令。
一、为什么要查看日志?
日志是系统和应用自动生成的重要记录,它包含了:

[*]系统、服务、应用的重要事件
[*]运行时的异常、错误和警告
[*]用户操作记录、登录信息
[*]资源使用情况变化
一句话:没有日志,不动手。先看日志,再动脑,最后再动手。
学会高效地查看和分析日志,是每一个运维、开发必备的基本功。
二、常见日志分类和路径

日志类型常见位置描述
系统日志/var/log/messages、/var/log/syslog操作系统层面的事件、警告、错误
认证日志/var/log/auth.log、/var/log/secureSSH登录、sudo授权、认证失败等记录
服务日志/var/log/nginx/、/var/log/httpd/、/var/log/mysql/各类服务运行日志
内核日志/var/log/dmesg内核启动、硬件相关事件
应用日志程序自定义目录,如 /opt/xxx/logs/应用内部输出
三、查看日志的常用方法
1. 快速查看(小日志适用)
直接用 cat:
cat /var/log/syslog但如果日志很大,不推荐 cat,会直接刷屏。
2. 分页查看(大日志推荐)
使用 less(更灵活)或 more:
less /var/log/syslog
[*]上下方向键滚动
[*]/关键词 搜索
[*]q 退出

3. 查看最后几行(最新内容)
用 tail 查看最后部分:
tail -n 100 /var/log/syslog动态实时刷新的方式:
tail -f /var/log/syslog适合监控服务崩溃、重启时的日志变化。
4. 搜索特定关键字
只想找出错误类信息,可以用 grep:
grep -i "error" /var/log/syslog
[*]-i 忽略大小写
[*]也可以组合使用,例如找出过去5分钟内所有 warning 和 error

5. 查看 systemd 管理的服务日志
如果系统是基于 systemd 的(如 CentOS 7+,Ubuntu 20+),用 journalctl:
journalctl -xe查看最新严重错误
实时跟踪某个服务:
journalctl -u nginx -f四、日志排查问题的标准流程
第一步:确定问题发生的时间点

[*]参考用户反馈时间
[*]查看监控告警的时间戳
[*]结合 uptime/who/last 命令了解系统状态

第二步:锁定相关日志文件

[*]网站问题 → Nginx/Apache 日志
[*]登录失败 → 认证日志
[*]服务挂掉 → 系统日志 + 具体服务日志

第三步:根据关键词筛查
常用关键词有:
error、fail、warning、timeout、refused、denied、panic、crash利用 grep 快速定位异常。
第四步:多日志交叉验证

[*]一个故障可能同时引发系统、服务、应用多个地方报警
[*]通过多份日志交叉分析,更准确找到根因

五、常见故障排查示例
1. 网站502错误排查
排查流程:
查看 Nginx 错误日志 /var/log/nginx/error.log
grep -i "error" /var/log/nginx/error.log
[*]查看后端服务(如 PHP-FPM、Node.js)是否宕机
[*]检查系统负载是否过高 top 或 htop

2. SSH登录失败排查
排查流程:
查看认证日志
tail -f /var/log/auth.log或
grep "Failed password" /var/log/secure
[*]确认是否被防火墙封禁或端口异常
[*]查看 iptables 或 firewalld 配置

3. MySQL连接异常排查
排查流程:

[*]查看 MySQL 错误日志 /var/log/mysql/error.log
[*]搜索关键词 like "Out of memory" 或 "Too many connections"
[*]检查系统内存 free -m、磁盘空间 df -h

六、总结

[*]日志排查的本质是:
[*]找到正确的日志
[*]用合适的方法查看
[*]快速锁定异常关键字
[*]交叉验证分析
[*]掌握了日志排查,就等于掌握了服务器的一双慧眼。遇到任何问题,都能从容应对,不慌不乱。

运维的第一原则:日志在手,天下我有。

页: [1]
查看完整版本: 如何通过日志排查出现的问题(附操作方法)