Ubuntu LNMP日志分析实操指南
一 日志位置与快速定位
| 组件 | 常见日志路径 | 主要用途 |
|---|---|---|
| Nginx | /var/log/nginx/access.log、/var/log/nginx/error.log | 访问记录、语法/启动/权限等错误 |
| PHP-FPM | /var/log/php7.x-fpm.log 或 /var/log/php-fpm/error.log(版本与发行版不同) | 运行时错误、进程异常 |
| MySQL/MariaDB | /var/log/mysql/error.log;慢查询日志位置由配置决定 | 启动/运行错误、慢查询 |
| 系统日志 | /var/log/syslog、/var/log/auth.log | 服务启动、认证与安全事件 |
sudo tail -f /var/log/nginx/error.logsudo tail -f /var/log/nginx/access.logsudo tail -f /var/log/mysql/error.logsudo tail -f /var/log/php7.x-fpm.logsudo tail -f /var/log/syslog、sudo tail -f /var/log/auth.logsudo netstat -tulnp | grep 80sudo nginx -t二 命令行快速分析范式
grep "error" /var/log/nginx/error.log | wc -lgrep "error" /var/log/nginx/error.loggrep "2021-01-[01-31]" /var/log/nginx/error.logawk '$9 ~ /^5[0-9]{2}$/ {count++} END {print "5xx count:", count}' /var/log/nginx/access.logawk '{ips[$1]++} END {for (ip in ips) print ips[ip], ip}' /var/log/nginx/access.log | sort -nr | headawk '{paths[$7]++} END {for (p in paths) print paths[p], p}' /var/log/nginx/access.log | sort -nr | head$request_time):awk '{sum+=$NF; n++;} END {print "avg:", sum/n}' /var/log/nginx/access.logawk '$9 ~ /^5[0-9]{2}$/ && $1=="203.0.113.10"' /var/log/nginx/access.log三 可视化与集中化分析
goaccess /var/log/nginx/access.log -a -o /var/www/html/report.html --log-format=COMBINED四 日志轮转与保留策略
/path/to/your/php/app/logs/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/php-fpm/php-fpm.sock ]; then
kill -USR2 $(cat /var/run/php-fpm/php-fpm.pid)
fi
endscript
}
sudo logrotate -d /etc/logrotate.d/php-app五 常见问题排查路径
sudo nginx -tsudo netstat -tulnp | grep 80sudo tail -f /var/log/nginx/error.logsudo tail -f /var/log/php7.x-fpm.logphp.ini 中开启 error_reporting、log_errors、error_log 并重启 PHP-FPMsudo tail -f /var/log/mysql/error.log