CentOS 上分析 Nginx 日志性能的可操作方案
一 准备与关键指标
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'rt=$request_time uct=$upstream_connect_time urt=$upstream_response_time';
access_log /var/log/nginx/access.log main;
tail -f /var/log/nginx/access.log;如需高亮关键字可配合 grep --color=auto。二 命令行快速分析
awk '{print $4}' /var/log/nginx/access.log \
| cut -d: -f1-2 | sort | uniq -c
$9 为状态码列):awk '{print $9}' /var/log/nginx/access.log \
| sort | uniq -c | sort -nr
$7 或 $6,先 head 确认列号):awk '{print $7}' /var/log/nginx/access.log \
| sort | uniq -c | sort -nr | head -n 20
awk '{print $1}' /var/log/nginx/access.log \
| sort | uniq -c | sort -nr | head -n 20
$request_time 为例,列号按实际格式调整)awk '$NF ~ /rt=/ {split($NF, a, "="); rt=a[2]; if(rt>1) print rt, $0}' \
/var/log/nginx/access.log | sort -nr | head -n 20
grep " 499 " /var/log/nginx/access.log | head
以上命令适合在问题发生时快速定位,建议结合时间窗口(如最近 5–15 分钟)进行分析。
三 可视化与长期监控
sudo yum install -y goaccess(CentOS)。--log-format=JSON):goaccess /var/log/nginx/access.log \
-o /var/www/html/report.html --log-format=COMBINED
四 性能问题与优化建议