直观对比全球Nginx访问延迟需基于真实请求路径,通过地理标签、客户端耗时、分位统计三层数据,在Grafana构建可下钻/排序/告警视图;核心依赖GeoIP2增强日志地理位置,再结合热力地图、TopN柱状图、多区域分位线图三大可视化方式。

要直观对比全球不同节点访问 Nginx 的延迟,核心不是“测 ping”,而是基于真实用户请求路径,用 地理标签 + 客户端耗时 + 分位统计 三层数据,在 Grafana 中构建可下钻、可排序、可告警的视图。
必须先有带地理位置的延迟数据
Nginx 本身不识别 IP 归属地,需靠外部增强:
- 在 access log 中保留
$http_x_forwarded_for(或直接用$remote_addr,若直连) - 配置 GeoIP2 模块(推荐)或使用 nginx-prometheus-exporter 的
--geoip-database参数加载 MaxMind DB - 日志解析后,Prometheus 指标会自动带
country_code="US"、region="CA"、city="San Francisco"等 label
Grafana 中最实用的三种展示方式
1. 全球热力地图(Heatmap + World Map Panel)
- 数据源:
histogram_quantile(0.95, sum(rate(nginx_http_request_duration_seconds_bucket[5m])) by (le, country_code)) - 面板类型:Worldmap Panel(需安装插件)或 Grafana 9+ 内置 Geo Panel
- 关键设置:
- Location Data:选择
country_code字段作为地理标识 - Metric Field:选 P95 延迟值(单位秒,建议 ×1000 转毫秒)
- 颜色梯度设为蓝→黄→红,阈值按业务定(如 <100ms 蓝,>500ms 红)
- Location Data:选择
- 效果:一眼看出东南亚、南美、东欧等区域是否普遍高延迟
2. 国家/大区 TopN 延迟柱状图(Bar Gauge 或 Bar Chart)
- 查询示例:
topk(8, histogram_quantile(0.95, sum(rate(nginx_http_request_duration_seconds_bucket[5m])) by (le, country_code)) )
- 推荐用 Bar Gauge(非普通柱状图),开启「Orientation: horizontal」+「Display: Values & Bars」
- 可叠加显示该国家的 QPS(用
rate(nginx_http_requests_total[5m]) by (country_code)),判断是“慢且流量大”还是“慢但无影响”
3. 延迟分布对比折线图(Multi-line with Legend Sort)
- 展示 3–5 个重点区域(如 US、CN、DE、JP、BR)的 P50/P90/P99 曲线并列
- 查询写法(以 US 和 CN 为例):
histogram_quantile(0.90, sum(rate(nginx_http_request_duration_seconds_bucket{country_code=~"US|CN"}[5m])) by (le, country_code)) - Grafana 设置:
- Legend:
{{country_code}} P90 - 启用「Sort by: Value (descending)」,让当前最高延迟区域自动排第一
- Y 轴单位设为 ms,范围固定 0–2000,避免波动干扰判断
- Legend:
补充要点
- 别把 CDN 缓存命中请求混入:加过滤条件
nginx_http_requests_total{cache_status="HIT"} == 0,只看真实回源延迟 - 若发现某国 P99 突然飙升但 P50 正常 → 很可能是局部网络抖动或个别 ISP 问题,不是全局故障
- 所有图表时间范围设为 “Last 15 minutes”,刷新间隔 10 秒;禁用 Live Streaming,防止前端卡顿导致地图重绘错乱
不复杂但容易忽略


















