温馨提示×

怎样统计nginx流量

小樊
37
2026-08-17 21:11:36
栏目: 编程语言

统计 Nginx 流量通常可以从 访问日志、状态模块、实时流量、系统层面 等多个角度来做。下面按常用程度给你一个完整说明。


一、通过 Nginx 访问日志统计流量(最常用 ✅)

1️⃣ 确认日志格式

Nginx 默认日志在:

access_log /var/log/nginx/access.log;

常见日志格式:

log_format main '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';

其中:

  • $body_bytes_sent:返回给客户端的响应体大小(字节)
  • ✅ 不包含响应头,但统计流量已足够

2️⃣ 统计总流量(字节)

awk '{sum+=$10} END {print sum}' /var/log/nginx/access.log

$10 对应 $body_bytes_sent,如你日志格式不同需调整

转换为 MB:

awk '{sum+=$10} END {print sum/1024/1024 " MB"}' /var/log/nginx/access.log

3️⃣ 按时间统计流量

按天统计

awk '{print $4}' /var/log/nginx/access.log | cut -d: -f1 | uniq -c

按小时统计

awk '{print $4}' /var/log/nginx/access.log | cut -d: -f1,2 | uniq -c

4️⃣ 按 URL / 接口统计流量

awk '{url=$7; size=$10; sum[url]+=size} END {for (u in sum) print sum[u], u}' \
/var/log/nginx/access.log | sort -nr | head

5️⃣ 按 IP 统计流量(谁在刷流量)

awk '{ip=$1; size=$10; sum[ip]+=size} END {for (i in sum) print sum[i], i}' \
/var/log/nginx/access.log | sort -nr | head

二、使用 nginx-module-vts(推荐,专业 ✅)

1️⃣ 安装 nginx-vts-exporter(需重新编译或安装带模块的 Nginx)

vhost_traffic_status_zone;
location /status {
    vhost_traffic_status_display;
    vhost_traffic_status_display_format json;
}

访问:

http://your_ip/status

返回:

  • 请求数
  • 流量(in/out)
  • 按 server / upstream 统计

适合生产环境、监控、告警


三、实时查看 Nginx 流量(命令行)

1️⃣ 实时查看访问日志

tail -f /var/log/nginx/access.log

2️⃣ 实时统计每秒流量

pv -a /var/log/nginx/access.log

四、系统层面统计(网卡流量)

1️⃣ iftop(实时)

iftop -i eth0

2️⃣ nload

nload

3️⃣ sar(历史)

sar -n DEV 1 10

五、结合 Prometheus + Grafana(企业级 ✅)

常见方案:

nginx-vts-exporter
   ↓
Prometheus
   ↓
Grafana

可统计:

  • QPS
  • 带宽
  • 状态码
  • 按域名 / 接口

六、常见统计需求速查表

需求 方法
总流量 access_log + awk
按天/小时 日志时间字段
谁在刷流量 按 IP 统计
实时流量 iftop / nginx status
生产监控 nginx-vts + Prometheus

七、你适合哪种?

临时统计 → access_log
实时排查 → iftop / tail
生产环境 → nginx-vts + Grafana


如果你愿意,可以告诉我:

  • ✅ 是 临时统计 还是 长期监控
  • ✅ 是否使用 Docker / K8s
  • ✅ 想统计 入口流量还是回源流量

我可以给你一套完全可复制的方案

0