如何用nginx实时监控接口访问流量?

兄弟姐妹们,请问下,如何用nginx实时监控接口访问流量?
最新回答
づ特有气质范

2024-05-05 03:51:31

ngx_req_status用来展示nginx请求状态信息,类似于apache的status,nginx自带的模块只能显示连接数等等信息,我们并不能知道到底有哪些请求、以及各url域名所消耗的带宽是多少。ngx_req_status提供了这些功能.

功能特性

按域名、url、ip等等统计信息

统计总流量

统计当前带宽\峰值带宽

统计总请求数量

1.安装

# cd /usr/local/src/
 # wget "
http://nginx.org/download/nginx-1.4.2.tar.gz"

 # tar -xzvf nginx-1.4.2.
tar.gz

 # wget 
https://github.com/zls0424/ngx_req_status/archive/master.zip -O ngx_req_status.zip

 # unzip ngx_req_status.zip
 # cd nginx-1.4.2/
 # patch -p1 < ../ngx_req_status-master/write_filter.patch
 # ./configure --prefix=/usr/local/nginx-1.4.2 --add-module=../ngx_req_status-master
 # make -j2
 # make install

2.配置

http {
 req_status_zone server_name $server_name 256k;
 req_status_zone server_addr $server_addr 256k;
 req_status_zone server_url  $server_name$uri 256k;
req_status server_name server_addr server_url;
server {
 server_name test.ttlsa.com;
 location /ttlsa-req-status {
 req_status_show on;
 }
 }
 }

3.指令

req_status_zone
语法: req_status_zone name string size
默认值: None
配置块: http
定义请求状态ZONE,请求按照string分组来排列,例如:
req_status_zone server_url  $server_name$uri 256k;
域名+uri将会形成一条数据,可以看到所有url的带宽,流量,访问数
req_status
语法: req_status zone1[ zone2]
默认值: None
配置块: http, server, location
在location中启用请求状态,你可以指定更多zones。
req_status_show
语法: req_status_show on
默认值: None
配置块: location
展示数据
追问
你好  是这样的 比如我有一个业务接口(使用php lumen框架写的) xxxModels/yyyController/action    nginx能不能统计这个接口的qps 和对其限流
追答
当然 可以啊 
location /download {
limit_rate_after 3m;
limit_rate 512k;
}
你可以 百度 下 limit rate,自己详细了解下 使用挺方便的