插件窝 干货文章 Linux LNMP日志如何分析

Linux LNMP日志如何分析

log 分析 日志 var 334    来源:    2025-05-09

Linux LNMP日志分析指南

LNMP环境(Linux, Nginx, MySQL, PHP)的日志分析是系统维护和故障排查的重要部分。以下是各类日志的分析方法和工具建议。

1. Nginx日志分析

日志位置

  • 访问日志: /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

2. MySQL日志分析

日志位置

  • 错误日志: /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

3. PHP-FPM日志分析

日志位置

  • 通常在/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

4. 综合日志分析工具

GoAccess (实时Web分析)

# 安装
apt-get install goaccess  # Debian/Ubuntu
yum install goaccess     # CentOS/RHEL

# 使用
goaccess /var/log/nginx/access.log -a

ELK Stack (Elasticsearch, Logstash, Kibana)

适合大规模日志分析和可视化

Grafana + Prometheus

适合监控和可视化系统指标

5. 日志轮转与维护

LNMP通常使用logrotate管理日志轮转,配置文件位于: - /etc/logrotate.d/nginx - /etc/logrotate.d/mysql-server - /etc/logrotate.d/php-fpm

6. 安全分析要点

  1. 检查异常IP访问
  2. 查找暴力破解尝试(如大量401/403状态码)
  3. 监控SQL注入特征
  4. 检查文件包含漏洞尝试
  5. 关注服务器错误(500状态码)

通过定期分析这些日志,您可以及时发现性能瓶颈、安全威胁和系统错误,确保LNMP环境的稳定运行。