LNMP环境(Linux, Nginx, MySQL, PHP)的日志分析是系统维护和故障排查的重要部分。以下是各类日志的分析方法和工具建议。
/var/log/nginx/access.log
/var/log/nginx/error.log
# 查看实时日志
tail -f /var/log/nginx/access.log
# 统计访问量前10的IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
# 统计最频繁访问的URL
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 20
# 统计HTTP状态码
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
# 查找404错误
grep ' 404 ' /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -nr
# 查看响应时间最长的请求
awk '{print $1, $7, $NF}' /var/log/nginx/access.log | sort -k3 -nr | head -20
/var/log/mysql/error.log
(可能因版本和配置不同)/var/lib/mysql/
下,文件名如hostname-slow.log
# 查看最新错误
tail -n 50 /var/log/mysql/error.log
# 查找特定错误
grep -i "error" /var/log/mysql/error.log | tail -n 20
# 使用mysqldumpslow工具分析慢查询
mysqldumpslow -s t /var/lib/mysql/hostname-slow.log | head -20
# 或使用pt-query-digest(Percona工具)
pt-query-digest /var/lib/mysql/hostname-slow.log
/var/log/php-fpm.log
或/var/log/php7.x-fpm.log
# 查找PHP错误
grep -i "error" /var/log/php-fpm.log
# 统计最常见的PHP错误
grep -i "PHP" /var/log/php-fpm.log | awk -F ':' '{print $4}' | sort | uniq -c | sort -nr
# 安装
apt-get install goaccess # Debian/Ubuntu
yum install goaccess # CentOS/RHEL
# 使用
goaccess /var/log/nginx/access.log -a
适合大规模日志分析和可视化
适合监控和可视化系统指标
LNMP通常使用logrotate管理日志轮转,配置文件位于:
- /etc/logrotate.d/nginx
- /etc/logrotate.d/mysql-server
- /etc/logrotate.d/php-fpm
通过定期分析这些日志,您可以及时发现性能瓶颈、安全威胁和系统错误,确保LNMP环境的稳定运行。