Skip to content

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-