分布式集群全局QPS汇总图需确保数据可比、时间对齐、语义一致:统一用VTS或nginx-prometheus-exporter采集,禁用access_log;chrony校准时间偏差<50ms;按business_tag→cluster/env分层聚合;Grafana展示单值+堆叠面积图+热力图。

要展示分布式集群的全局 QPS 汇总图,核心不是简单把所有 Nginx 节点的 QPS 相加,而是确保数据可比、时间对齐、语义一致,再做聚合。否则“汇总”只是数字堆砌,失去监控价值。
统一采集口径:避免混用不同指标源
不同节点若用不同方式暴露指标(比如有的用 stub_status,有的用 VTS,有的解析 access log),QPS 计算逻辑会不一致:
- stub_status 只能提供粗粒度累计请求数,rate() 计算易受抓取延迟影响;
- VTS 或 nginx-prometheus-exporter(log 模式)支持按 server、location、upstream 等标签拆分,是做跨节点聚合的基础;
- 必须禁用本地日志写盘(access_log off),改用 syslog 或直接对接 exporter,防止因磁盘 IO 波动导致采样丢失。
强制时间对齐:chrony + drift 标签校准
集群中任意两台 Nginx 时间偏差超过 50ms,10 秒级 QPS 曲线就会出现错峰或毛刺,汇总值失真:
- 所有节点统一部署 chrony,上游至少配 3 个高精度时间源(如 ntp.aliyun.com + 内网 Stratum 2);
- 在 Prometheus 抓取时,通过 relabel_configs 注入 host_time_drift_ms 字段;
- Grafana 查询中加过滤:{host_time_drift_ms<50},自动剔除低可信节点的数据。
分层聚合:先按业务域,再按集群维度
全局 QPS 不等于“所有节点 request_total 之和”。应按语义分层聚合:
- 第一层:按 business_tag(如 order、pay、chat)聚合,确认核心路径是否主导流量;
- 第二层:按 cluster 和 env(如 shanghai-prod、beijing-staging)分组,观察地域/环境间负载差异;
- 最终汇总用 PromQL:sum by (business_tag) (rate(nginx_http_requests_total{job="nginx"}[30s])),窗口设为 30s,兼顾灵敏与稳定。
Grafana 展示要点:带下钻能力的单值+趋势组合
全局汇总图不能只放一个大数字:
- 顶部放实时全局 QPS 单值面板,刷新间隔设为 10s,下方标注“过去 30 秒滑动均值”;
- 主图表用堆叠面积图,X 轴为时间,Y 轴为 QPS,图例按 business_tag 分色,支持点击图例筛选;
- 添加变量:$cluster(多选)、$business_tag(多选)、$time_range(Last 5m / Last 30m),让运维能快速切到问题域;
- 在图下方嵌入一个迷你热力图(Heatmap),横轴为 cluster,纵轴为 minute-of-hour,颜色深浅表示该集群每分钟 QPS 偏离均值的程度。


















