首页服务器教程Nginx连接数与请求状态监控教程

Nginx连接数与请求状态监控教程

2026-10-02 16

网站访问变慢或出现错误时,除了检查服务器CPU、内存和磁盘,还需要了解Nginx的连接数与请求变化。通过Nginx Exporter,可以将这些指标接入Prometheus,再通过Grafana观察入口层的运行情况。需要注意,基础stub_status提供的是连接与请求计数,不包含按200、404、502等HTTP状态码分类的统计。

一、监控目标

本次配置主要监控以下内容:

  • 当前活跃连接数
  • HTTP请求速率
  • 正在读取请求头的连接数
  • 正在向客户端写入响应的连接数
  • 等待新请求的空闲连接数

这些指标用于观察Nginx处理连接和请求的情况,不能单独作为网站业务正常的判断依据。

二、组件版本

本次环境使用以下版本:

nginx 1.24.0
prometheus-nginx-exporter 1.1.0-1ubuntu0.3

Nginx Exporter默认监听9113端口,以下配置按Nginx、Exporter与Prometheus同机部署编写。

三、开启stub_status

配置一个仅供本机采集的Nginx状态页:

server {
    listen 127.0.0.1:8080;
    server_name localhost;

    location = /nginx_status {
        stub_status;
        allow 127.0.0.1;
        deny all;
    }
}

将该server配置放入Nginx的http配置范围内,或由其加载的配置文件中。本例仅监听本机回环地址,不对公网提供状态页访问。

stub_status需要对应模块支持;如果配置检查提示无法识别该指令,应先检查Nginx是否包含该模块。

四、验证Nginx状态页

先检查配置:

nginx -t

检查通过后,对已经运行的Nginx重新加载配置:

systemctl reload nginx

重新加载会让新工作进程使用新配置,同时允许旧工作进程继续处理已有连接,避免为修改状态页而直接重启服务。

随后访问状态页:

curl http://127.0.0.1:8080/nginx_status

返回内容应包含以下字段,具体数值随运行情况变化:

Active connections
server accepts handled requests
Reading Writing Waiting

其中,Active connections包含等待中的连接;requests是累计请求数,不能直接当作每秒请求量。

五、配置Nginx Exporter

为Exporter设置状态页采集地址:

--nginx.scrape-uri=http://127.0.0.1:8080/nginx_status

这是Exporter的启动参数,需要写入实际使用的服务启动配置,不能单独作为Shell命令执行。修改后重启本次环境中的Exporter服务,并检查指标接口:

systemctl restart prometheus-nginx-exporter
curl http://127.0.0.1:9113/metrics

Exporter从状态页获取数据,再将其转换为Prometheus指标。

在Prometheus配置文件已有的 scrape_configs列表下加入以下任务,实际键名为scrape_configs,不带前导空格:

  - job_name: nginx
    static_configs:
      - targets:
          - localhost:9113

不要覆盖原有采集任务。修改后先校验配置,再按当前部署方式重新加载或重启Prometheus:

promtool check config /etc/prometheus/prometheus.yml
systemctl restart prometheus

六、Targets验证

进入Prometheus Targets页面,检查nginx任务是否为UP。

Nginx连接数与请求状态监控教程

这里的UP表示Prometheus成功抓取了Exporter,并不代表Exporter一定成功读取了Nginx状态页。建议同时检查下面两个指标。

Prometheus抓取状态:

up{job="nginx"}

Exporter读取Nginx状态页的结果:

nginx_up{job="nginx"}

两者正常时均应为1。如果前者为1、后者为0,应继续检查状态页地址、访问权限和Nginx运行情况。

七、常用PromQL

以下查询对应Exporter提供的基础连接与请求指标。

1. 活跃连接数

nginx_connections_active{job="nginx"}

2. 请求速率

rate(nginx_http_requests_total{job="nginx"}[5m])

用于观察最近5分钟的平均每秒请求量。

3. 读取连接数

nginx_connections_reading{job="nginx"}

4. 写入连接数

nginx_connections_writing{job="nginx"}

5. 等待连接数

nginx_connections_waiting{job="nginx"}

读取连接指正在读取请求头的连接,写入连接指正在向客户端返回响应的连接,等待连接则是等待新请求的空闲连接。等待连接并不等于请求处理失败。

八、Grafana看板

在Grafana中添加对应查询,展示Nginx连接数和请求速率。

Nginx连接数与请求状态监控教程

建议将活跃连接、读取连接、写入连接和等待连接放在相邻面板,并单独展示请求速率。排查时统一时间范围,便于与网站报错时间及日志记录对照。

九、故障排查

1. Prometheus中的nginx任务显示DOWN

先检查Exporter服务和指标接口:

systemctl status prometheus-nginx-exporter
curl http://127.0.0.1:9113/metrics

再核对Prometheus中的采集地址,并检查配置:

promtool check config /etc/prometheus/prometheus.yml

Targets中的DOWN首先指向Prometheus抓取失败,应从Exporter是否可达查起。

2. Targets为UP,但nginx_up为0

检查Nginx服务与状态页:

systemctl status nginx
curl http://127.0.0.1:8080/nginx_status

重点核对:

  • Nginx是否正常运行
  • 状态页配置是否已经加载
  • Exporter中的采集地址是否正确
  • 状态页是否允许Exporter访问

nginx_up反映的是Exporter对Nginx的采集结果,需要与Prometheus自身的up区分。

3. 采集正常,但网站打不开

基础状态页没有验证具体业务网址,也没有提供完整的上游错误信息,因此仍需继续排查网站访问链路。

建议按以下方向检查:

  • 查看对应网站的access.log
  • 查看故障时段的error.log
  • 检查后端upstream服务
  • 核对域名解析
  • 检查HTTPS证书
  • 对照Blackbox探测结果

不要仅凭连接数有数据或采集状态为UP,就结束网站故障排查。

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
Targets验证
下一篇:

已经没有下一篇了!

相关文章