Nginx 日志分析
日志格式 (Log Format)
本文档中的分析脚本依赖于 Nginx 日志中显式记录的 Response Time (响应时间)。 请在 nginx.conf 中配置如下 log_format,确保末尾包含 rt=$request_time:
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'; # rt = response time (单位: 秒)平均耗时
shell
grep -o 'rt=[0-9.]*' access_443.log | awk -F= '{sum+=$2; count++} END {if (count > 0) printf "总请求数 (Total Requests): %d\n平均耗时 (Average RT): %.4f 秒\n", count, sum/count}'耗时top1000
shell
grep 'rt=' access_443.log | grep -v 'download' | grep -v 'scm' | sed 's/.*rt=\([0-9.]*\)/\1 &/' | sort -k8,8 -k1,1rn | awk '!seen[$8]++' | sort -rn | head -n 1000 | cut -d' ' -f2-