需启用Nginx stub_status模块并配置/ngx_status路径,部署Nginx Exporter采集指标,Prometheus抓取9113端口数据,Grafana接入Prometheus数据源后创建面板与告警规则。

要将 Nginx 的运行指标通过 Prometheus Nginx Exporter 接入 Grafana 并构建告警大盘,核心是打通「Nginx → Exporter → Prometheus → Grafana」这条链路,并在 Grafana 中配置告警规则与可视化看板。关键不在于堆砌组件,而在于每环的数据可采集、可识别、可触发。
确保 Nginx 状态模块已启用并暴露指标
Nginx Exporter 本身不采集原始日志或连接数据,它依赖 Nginx 自带的 stub_status 模块(开源版)或 nginx-plus-api(商业版)。以开源版为例:
- 确认编译时包含
--with-http_stub_status_module(多数系统包已默认启用) - 在 Nginx 配置中添加一个专用 location,例如:
location /nginx_status {<br> stub_status on;<br> allow 127.0.0.1;<br> deny all;<br>} - 重载 Nginx(
nginx -s reload),访问http://localhost/nginx_status应返回类似Active connections: 3<br>server accepts handled requests<br>10 10 15<br>Reading: 0 Writing: 1 Waiting: 2
的纯文本响应
部署并配置 Nginx Exporter
下载对应平台的二进制文件(如 nginx-prometheus-exporter-1.15.0.linux-amd64.tar.gz),解压后运行:
- 基础启动命令:
./nginx-prometheus-exporter -nginx.scrape-uri http://127.0.0.1/nginx_status - 若 Nginx 启用了 basic auth 或监听非 localhost 地址,需补充参数如
-nginx.username、-nginx.password或-nginx.ssl-verify=false - 默认监听端口
:9113,访问http://localhost:9113/metrics应看到形如nginx_connections_active 3、nginx_http_requests_total{host="example.com",method="GET"} 127的 Prometheus 格式指标 - 建议用 systemd 或容器方式长期运行,避免进程退出导致断采
让 Prometheus 抓取 Exporter 数据
编辑 Prometheus 的 prometheus.yml,在 scrape_configs 下新增 job:
- job_name: 'nginx'<br> static_configs:<br> - targets: ['localhost:9113']
- 如 Exporter 部署在其他机器,把
localhost替换为实际 IP 或 DNS 名 - 执行
promctl reload或重启 Prometheus,然后进入 Prometheus Web UI 的 Status → Targets 页面,确认该 job 显示 UP - 在 Graph 页面输入
nginx_connections_active,应能查到时间序列数据,说明采集通路已就绪
在 Grafana 中创建看板与告警
Grafana 不直接“接收”告警,而是从 Prometheus 获取指标,并通过其内置的 Alerting(v9.1+ 推荐使用新 Alerting 引擎)或旧版 Grafana-managed alerts 触发通知:
- 先添加 Prometheus 数据源:Settings → Data Sources → Add data source → Prometheus,填入
http://prometheus-host:9090 - 新建 Dashboard → Add new panel,查询语句示例:
sum(nginx_connections_active)(当前活跃连接数)rate(nginx_http_requests_total[5m])(每秒请求数)nginx_up == 0(Exporter 是否离线) - 为关键指标添加告警规则:点击面板右上角 Alert → Create alert rule → 填写条件(如
avg(last_5m) > 1000)、标签(如severity=critical)、注释(如High request rate on {{ $labels.instance }}) - 配置通知渠道(如邮件、Webhook、企业微信):Alerting → Notification policies → Add contact point,关联已定义的告警规则


















