nginx stub_status 监控模块

本文介绍如何通过配置Nginx的stub_status模块来监控Nginx的状态信息,包括活动连接数、处理过的请求总数等关键指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助。

Nginx中的stub_status模块主要用于查看Nginx的一些状态信息.
本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定:

./configure –with-http_stub_status_module 

Java代码

[root@10.10.90.97 ~]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module   
[root@10.10.90.97 ~]# make && make install   

查看已安装的 Nginx 是否包含 stub_status 模块

#/usr/local/nginx/sbin/nginx -V 
nginx version: nginx/0.6.32  
built by gcc 3.4.6 20060404 (Red Hat 3.4.6-10)  
configure arguments: --user=nginx --group=nginx --prefix=/home/nginx --with-http_stub_status_module  

可以看到我安装了这个模块。注意是-V -v的话只会显示版本nginx version: nginx/0.6.32
开始配置nginx,在server块中加入location 就行了

server{  
         location /nginx-status {  
             allow --------  
             allow --------//允许的ip  
             deny all;//  
             stub_status on;  
             access_log  off;  
        }  
}  

重启nginx
killall -s HUP nginx
然后请求www.domain.com/nginx-status 就行了,下面是结果

Active connections: 5   
server accepts handled requests  
 5970806143 5970806143 7560482010   
Reading: 0 Writing: 5 Waiting: 0   

Active connections: 对后端发起的活动连接数.
Server accepts handled requests: Nginx总共处理了38810620个连接,成功创建38810620次握手(证明中间没有失败的),总共处理了298655730个请求.
Reading: Nginx 读取到客户端的Header信息数.
Writing: Nginx 返回给客户端的Header信息数.
Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是Nginx已经处理完成,正在等候下一次请求指令的驻留连接.
所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中.

### 配置 `stub_status` 模块 为了使 Nginx 支持 `stub_status` 功能,需在编译时加入特定选。具体命令如下所示[^1]: ```bash ./configure --prefix=/usr/local/nginx --with-http_stub_status_module ``` 完成上述配置并重新编译安装之后,还需调整 Nginx 的配置文件以启用此功能。 ### 修改 Nginx 配置文件 编辑 Nginx 主配置文件 `/etc/nginx/nginx.conf` 或者站点对应的 `.conf` 文件,在希望暴露状态信息的位置添加相应设置[^2]: ```nginx server { location /nginx-status { stub_status; allow 127.0.0.1; # 只允许本地访问 deny all; # 禁止其他IP地址访问 } } ``` 这段配置定义了一个名为 `/nginx-status` 的 URL 路径用于展示 Nginx 运行状况的数据,并通过 `allow` 和 `deny` 来控制谁能访问这些信息。 ### 加载新配置 更改完成后保存文件,执行以下命令让新的配置生效: ```bash /usr/local/nginx/sbin/nginx -s reload ``` 这会通知正在运行的 Nginx 实例平滑重启并应用最新的改动而不会中断服务。 ### 查看状态页 要获取由 `stub_status` 提供的信息,可以使用 `curl` 工具向之前设定好的路径发起请求: ```bash curl http://127.0.0.1/nginx-status ``` 返回的结果将包含当前活动连接数、接受到的请求数目以及其他有用的性能指标。 ### 数据解释 - **Active connections**: 当前活跃的客户端连接数量。 - **server accepts handled requests**: 显示自启动以来总共处理了多少次连接(`accepts`)以及完成了多少个HTTP请求(`requests`)。 - **Reading Writing Waiting**: 描述了处于不同阶段(读取头部/写入响应体/等待事件触发)下的连接数目[^3]。 ### 使用 Prometheus Exporter 监控 对于更高级别的监控需求,可以通过部署专门的服务如 `nginx-prometheus-exporter` 将来自 `stub_status` 的原始数据转换成Prometheus能够理解的时间序列数据库格式[^4]。 ```dockerfile docker run -d --name nginx-exporter \ -p 9113:9113 \ --link nginx \ nginx/nginx-prometheus-exporter:latest \ -nginx.scrape-uri http://nginx:80/nginx_status ``` 该容器化应用程序将持续抓取指定位置上的统计资料并通过 HTTP API 输出给外部系统进一步分析利用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值