要用grafana展示nginx实时性能监控仪表盘,核心是三步:采集nginx指标、存储指标数据、在grafana中可视化;关键在于打通数据链路,确保nginx暴露的指标能被稳定抓取。

要用 Grafana 展示 Nginx 实时性能监控仪表盘,核心是三步:采集 Nginx 指标、存储指标数据、在 Grafana 中可视化。关键不在于装多少插件,而在于打通数据链路——尤其要确保 Nginx 暴露的指标能被稳定抓取。
启用 Nginx 内置状态模块或使用 OpenResty + Prometheus Exporter
Nginx 默认不暴露详细性能指标,需主动开启数据出口:
- 若用官方 Nginx,编译时需含 http_stub_status_module(多数预编译包已内置),并在配置中添加:
location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } - 更推荐方式:部署 nginx-prometheus-exporter(官方维护),它能解析 Nginx access log 或通过 API 抓取 upstream、connection、request 等丰富维度,支持动态 upstream 和 TLS 指标。
- 如用 OpenResty,可直接嵌入 Lua 脚本上报指标到 Prometheus,灵活性更高,适合定制化场景(如按 URI 分组统计响应时间)。
用 Prometheus 抓取并持久化指标
Grafana 本身不存数据,需搭配时间序列数据库。Prometheus 是最轻量且适配度最高的选择:
- 在 Prometheus 的 scrape_configs 中添加 job,指向 nginx-exporter 的 HTTP 地址(如 http://localhost:9113/metrics)
- 建议设置合理抓取间隔(scrape_interval: 15s),太短增加负载,太长影响实时性
- 对高频指标(如每秒请求数),可在 Prometheus 中用 rate() 函数计算,例如:
rate(nginx_http_requests_total[1m]) 表示过去 1 分钟平均 QPS
在 Grafana 中构建实用仪表盘
避免堆砌图表,聚焦运维真正关心的维度:
- 核心健康概览:活跃连接数(active connections)、读写等待连接数(reading/writing/waiting)、请求成功率(2xx/3xx/4xx/5xx 比例)
- 性能瓶颈定位:upstream 响应时间 P90/P99、单个 upstream 的失败率、request processing time 分布直方图
- 流量趋势分析:按 host 或 location 分组的 QPS 曲线、带宽使用(通过 $bytes_sent 计算)、慢请求(>1s)占比
- 所有图表启用 自动刷新(如 10s),时间范围设为“Last 5 minutes”或“Last 30 minutes”,确保看到的是真实实时态
补充建议:权限与稳定性
生产环境别忽略这些细节:
- nginx-status 接口或 exporter 端点必须限制访问 IP,避免指标泄露
- Prometheus 抓取失败时,Grafana 图表会显示“no data”,可加一个 Alert Panel 判断 up{job="nginx"} == 0 触发告警
- 如果 Nginx 是多实例部署,用服务发现(如 DNS SRV 或 Consul)自动同步 targets,避免手动维护 static_configs











