Grafana 中构建专业 Nginx 仪表盘需通过 stub_status+nginx-exporter 或 VTS+nginx-vts-exporter 接入指标,重点呈现分层响应时间(P50/P90/P95/P99)、多维 QPS(实时/分钟聚合/TopN/地理热力)及错误率叠加分析,并按“用户—网关—后端”逻辑组织面板,默认15分钟时间范围与10秒刷新。

要在 Grafana 中构建专业的 Nginx 仪表盘,核心是把真实、可区分的性能指标“接进来”,再用合适的方式“展出来”。重点不是堆图表,而是让 QPS 和响应时间这两类关键信号清晰、低延迟、可下钻。
确保指标源头准确可靠
Nginx 本身不直接暴露 Prometheus 格式指标,需借助中间层。推荐两种成熟路径:
-
stub_status + nginx-exporter:轻量、稳定,适合基础连接数、请求总数、活跃连接等指标。需在 Nginx 配置中启用
stub_status,并运行nginx-exporter定期抓取解析; -
VTS 模块 + nginx-vts-exporter:支持按 server、upstream、location 维度拆分 QPS、带宽、状态码、延迟(
request_time和upstream_response_time),更适合精细化监控。
注意:日志字段 $request_time 是客户端视角总耗时,$upstream_response_time 反映后端真实处理时间——两者都应采集,但用途不同。
QPS 监控要体现趋势与分布
单一“当前 QPS”数字价值有限。建议组合呈现:
- 实时滚动 QPS(每秒更新):用单值面板 + 趋势图,标出近 5 分钟平均线;
- 按分钟聚合的 QPS 曲线:观察突增/衰减节奏,配合告警阈值(如 3 分钟均值 > 峰值容量 80%);
- 按 location 或 upstream 分组的 TopN QPS:快速定位高流量路径,例如
/api/v1/chat或llm-backend-2; - 带地理标签的热力图(可选):若日志含
$http_x_forwarded_for或 GeoIP 插件,可用世界地图展示各区域请求强度。
响应时间必须分层、分位、可对比
平均响应时间(Avg)容易掩盖长尾问题。专业看板至少要包含:
- P50 / P90 / P95 / P99 延迟曲线:用折线图并列展示,观察 P99 是否持续高于 P95,判断是否存在偶发毛刺;
-
request_time与upstream_response_time对比图:若两者差值变大,说明 Nginx 自身处理(SSL、重写、限流)成为瓶颈; - 错误率叠加层:在延迟图下方叠加 4xx/5xx 状态码占比,便于判断“慢是否伴随错”;
- 延迟直方图(Histogram):用 Grafana 的 Heatmap 或 Bar Gauge 展示毫秒级分布,例如 0–100ms、100–500ms、500ms+ 各占多少比例。
仪表盘组织讲求 SRE 逻辑
避免把所有指标平铺。推荐按“用户—网关—后端”动线组织面板区块:
- 顶部横幅:服务整体可用性(
1 - rate(nginx_http_requests_total{status=~"5.."}[5m]) / rate(nginx_http_requests_total[5m]))、当前 QPS、P95 延迟、5xx 错误数; - 中部主区:QPS 时间曲线 + 延迟分位图(双 Y 轴)+ 状态码分布饼图;
- 底部下钻区:按 upstream 分组的 QPS/延迟/错误率表格,支持点击跳转到该 upstream 专属子看板;
- 右侧面板:实时 Top IP、Top Path、最近 10 条 5xx 请求详情(从 Loki 或日志导出数据源接入)。
不复杂但容易忽略的是:所有时间范围默认设为“最后 15 分钟”,刷新间隔设为“自动(10s)”,让运维人员一眼抓住正在发生的事。


















