Ubuntu下LNMP日志分析方法
小樊
40
2025-09-14 13:19:47
日志文件位置
- Nginx:
/var/log/nginx/access.log(访问日志)、/var/log/nginx/error.log(错误日志)。
- MySQL:
/var/log/mysql/error.log(错误日志)、/var/log/mysql/slow.log(慢查询日志,需手动开启)。
- PHP:
/var/log/php-fpm.log 或 /var/log/php7.x-fpm.log(错误日志,需在 php.ini 中配置)。
- 系统:
/var/log/syslog、/var/log/auth.log。
常用命令行工具
- 基础查看:
cat、less、tail -f(实时查看)。
- 关键词搜索:
grep '关键字' /path/to/log。
- 统计分析:
- 统计IP访问量:
awk '{print $1}' access.log | sort | uniq -c | sort -nr。
- 分析状态码分布:
awk '{print $9}' access.log | sort | uniq -c。
- 日志轮转:
logrotate(自动切割、压缩旧日志)。
专用分析工具
- GoAccess:实时可视化分析Nginx日志,生成HTML报告。
- ELK Stack:用于大规模日志的存储、搜索和可视化分析。
- mysqldumpslow:分析MySQL慢查询日志,按执行频率或耗时排序。
分析场景示例
- Nginx异常请求:通过
grep '404\|500' access.log 定位错误请求,结合 awk 提取异常IP或URL。
- MySQL性能优化:用
mysqldumpslow -s t -t 10 slow.log 找出耗时最长的10条查询,优化索引或SQL语句。
- PHP错误定位:根据
php-fpm.log 中的 Fatal error 信息,结合代码行号快速修复bug。
最佳实践
- 定期清理旧日志,避免占用磁盘空间。
- 生产环境中关闭
display_errors,仅记录日志。
- 对关键日志(如安全相关)配置集中式存储(如ELK)。