nginx-exporter 是什么
nginx-prometheus-exporter 读取 Nginx 的 stub_status 页面(或用 Nginx Plus 的 API)并转成 Prometheus 指标:连接数、请求统计与可用性。开源版 Nginx 需要先开启 stub_status 端点并限制访问来源,否则状态页面会暴露在公网。
基本信息
| 默认端口 | 9113 |
|---|---|
| 数据来源 | stub_status(开源版)/ API(Plus) |
| 启动参数 | --nginx.scrape-uri |
| 关键指标 | nginx_up、nginx_connections_active、nginx_http_requests_total |
| 前置条件 | Nginx 已开启 stub_status |
| 安全要求 | stub_status 需限制访问来源 |
典型使用场景
- 监控活跃连接数,判断是否需要扩容 worker 或机器
- 观察累计请求量的增长速率,评估流量变化
- 用 nginx_up 判断采集链路是否正常
- 配合上游指标区分「Nginx 有问题」还是「后端有问题」
- 为网关层容量评估提供连接与请求基线
- 版本升级后核对指标是否仍然采集正常
Nginx 开启 stub_status
Nginx 开启 stub_status
server {
listen 8080;
location = /basic_status {
stub_status;
allow 127.0.0.1; # 只允许本机访问
deny all; # 拒绝其他来源
}
}运行 exporter
运行 exporter
nginx-prometheus-exporter --nginx.scrape-uri=http://127.0.0.1:8080/basic_status
# 常用指标
nginx_connections_active # 当前活跃连接
nginx_connections_reading # 正在读取请求的连接
nginx_http_requests_total # 累计请求数
nginx_up # 能否成功采集关键指标读法
| 指标 | 含义 | 异常信号 |
|---|---|---|
| nginx_up | 采集是否成功 | 0 表示 stub_status 不可达 |
| nginx_connections_active | 活跃连接数 | 持续贴近 worker 上限 |
| nginx_connections_waiting | 空闲等待连接 | 与活跃数一起看连接结构 |
| nginx_http_requests_total | 累计请求数 | rate 后骤降说明流量异常 |
stub_status 只提供连接与请求统计;状态码分布、延迟与上游耗时需要靠访问日志或额外模块补齐,不要指望它做全量分析。
stub_status 的 allow/deny 漏配会把状态端点暴露到公网,虽然信息有限,但仍属于不必要的信息泄露。
连接数类指标在 Nginx reload 时可能重置,短窗口观察会出现波形台阶,判读时结合进程启动时间一起看。
Nginx Plus 提供更丰富的 API(上游健康、缓存命中),指标名与开源版不同,看板需要分别适配。
worker 与连接数上限的关系值得关注:单个 worker 能处理的连接数有限,活跃连接持续升高时应先核对 worker_connections 与 worker 进程数。
stub_status 属于 Nginx 基础模块,一般无需额外编译;若 location 未生效,先确认配置是否真的被加载(nginx -T 输出)。