vts
# *vts*: NGINX 虚拟主机流量状态模块
## 安装
您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:
* RedHat Enterprise Linux 7、8、9 和 10
* CentOS 7、8、9
* AlmaLinux 8、9
* Rocky Linux 8、9
* Amazon Linux 2 和 Amazon Linux 2023
=== "CentOS/RHEL 8+、Fedora Linux、Amazon Linux 2023+"
```bash
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-vts
```
=== "CentOS/RHEL 7 和 Amazon Linux 2"
```bash
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-vts
```
通过在 `/etc/nginx/nginx.conf` 的顶部添加以下内容来启用模块:
```nginx
load_module modules/ngx_http_vhost_traffic_status_module.so;
本文档描述了 nginx-module-vts v0.2.6,于 2026 年 7 月 29 日发布。
Nginx 虚拟主机流量状态模块
测试
安装此模块后,运行 sudo prove -r t。需要 sudo 权限,因为测试需要 Nginx 监听 80 端口。
截图


概述
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
描述
这是一个 Nginx 模块,提供对虚拟主机状态信息的访问。 它包含当前状态,如服务器、上游、缓存。 这类似于 nginx plus 的实时活动监控。 内置的 HTML 也取自旧版本的演示页面。
首先,必须使用指令 vhost_traffic_status_zone,
然后如果设置了指令 vhost_traffic_status_display,可以按如下方式访问:
- /status/format/json
- 如果请求
/status/format/json,将返回一个 JSON 文档,其中包含当前活动数据,用于实时仪表板和第三方监控工具。 - /status/format/html
- 如果请求
/status/format/html,将返回内置的 HTML 实时仪表板,该仪表板内部请求/status/format/json。 - /status/format/jsonp
- 如果请求
/status/format/jsonp,将返回一个 JSONP 回调函数,其中包含当前活动数据,用于实时仪表板和第三方监控工具。 - /status/format/prometheus
- 如果请求
/status/format/prometheus,将返回一个 prometheus 文档,其中包含当前活动数据。 - /status/control
- 如果请求
/status/control,将返回一个 JSON 文档,在通过查询字符串重置或删除区域后。请参见 控制。
JSON 文档包含如下内容:
{
"hostName": ...,
"moduleVersion": ...,
"nginxVersion": ...,
"loadMsec": ...,
"nowMsec": ...,
"connections": {
"active":...,
"reading":...,
"writing":...,
"waiting":...,
"accepted":...,
"handled":...,
"requests":...
},
"sharedZones": {
"name":...,
"maxSize":...,
"usedSize":...,
"usedNode":...
},
"serverZones": {
"...":{
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
"requestBuckets":{
"msecs":[...],
"counters":[...]
},
}
...
},
"filterZones": {
"...":{
"...":{
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
"requestBuckets":{
"msecs":[...],
"counters":[...]
},
},
...
},
...
},
"upstreamZones": {
"...":[
{
"server":...,
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
"requestBuckets":{
"msecs":[...],
"counters":[...]
},
"responseMsecCounter":...,
"responseMsec":...,
"responseMsecs":{
"times":[...],
"msecs":[...]
},
"responseBuckets":{
"msecs":[...],
"counters":[...]
},
"weight":...,
"maxFails":...,
"failTimeout":...,
"backup":...,
"down":...
}
...
],
...
}
"cacheZones": {
"...":{
"maxSize":...,
"usedSize":...,
"inBytes":...,
"outBytes":...,
"responses":{
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
}
},
...
}
}
- main
- 基本版本,正常运行时间((nowMsec - loadMsec)/1000)
- nowMsec,loadMsec 是毫秒。
- connections
- 总连接数和请求数(与 NGINX 中的 stub_status_module 相同)
- sharedZones
- 在 nginx-module-vts 中使用的共享内存信息。
- serverZones
- 每个服务器区域的流量(进/出)和请求及响应计数和缓存命中率
- 总流量(进/出)和请求及响应计数(该区域名称为
*)和命中率 - filterZones
- 每个服务器区域的流量(进/出)和请求及响应计数和缓存命中率,通过
vhost_traffic_status_filter_by_set_key指令过滤 - 总流量(进/出)和请求及响应计数(该区域名称为
*)和命中率,通过vhost_traffic_status_filter_by_set_key指令过滤 - upstreamZones
- 每个上游组中每个服务器的流量(进/出)和请求及响应计数
- 当前设置(权重、最大失败次数、失败超时...)在 nginx.conf 中
- cacheZones
- 每个缓存区域的流量(进/出)和大小(容量/已用)和命中率,当使用 proxy_cache 指令时。
JSON 文档中的 overCounts 对象主要用于 32 位系统,如果其值溢出,将增加 1。
指令 vhost_traffic_status_display_format 设置默认输出格式,可以是 json、jsonp、html、prometheus 之一。(默认:json)
流量计算如下:
- ServerZones
- in += requested_bytes
- out += sent_bytes
- FilterZones
- in += requested_bytes 通过过滤器
- out += sent_bytes 通过过滤器
- UpstreamZones
- in += requested_bytes 通过 ServerZones
- out += sent_bytes 通过 ServerZones
- cacheZones
- in += requested_bytes 通过 ServerZones
- out += sent_bytes 通过 ServerZones
所有计算在 Nginx 的日志处理阶段进行。 内部重定向(X-Accel-Redirect 或 error_page)在 UpstreamZones 中不计算。
注意事项: 此模块依赖于 nginx 日志系统(NGX_HTTP_LOG_PHASE:nginx http 的最后阶段),因此在某些情况下流量可能与实际带宽流量不同。
Websocket、取消的下载可能导致不准确。
该模块的工作与 access_log 指令的 "on" 或 "off" 无关。
再次强调,该模块在 "access_log off" 时也能正常工作。
使用多个域名时,它会设置为 server_name 指令的第一个域名(左侧)。
如果您不想这样,请参见 vhost_traffic_status_filter_by_host、vhost_traffic_status_filter_by_set_key 指令。
有关 stream 流量统计的模块,请参见:
* nginx-module-sts
* nginx-module-stream-sts
计算和间隔
平均值
所有平均值目前都是在过去 64 个值上计算的 AMM(算术平均数)。
控制
可以通过查询字符串重置或删除流量区域。 请求将以 JSON 文档的形式响应。
- URI 语法
- /
{status_uri}/control?cmd={command}&group={group}&zone={name}
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
如果设置如上,则控制 URI 类似于 example.org/status/control。
可用的请求参数如下:
* cmd=\<status|reset|delete>
* status
* 返回流量区域的状态,格式为 json,如 status/format/json。
* reset
* 重置流量区域,而不删除共享内存中的节点。(= 初始化为 0)
* delete
* 删除共享内存中的流量区域。当重新请求时会重新创建。
* group=\<server|filter|upstream@alone|upstream@group|cache|*>
* server
* filter
* upstream@alone
* upstream@group
* cache
* *
* zone=name
* server
* name
* filter
* filter_group@name
* upstream@group
* upstream_group@name
* upstream@alone
* @name
* cache
* name
实时获取流量区域状态
这与 status/format/json 类似,只是可以获取每个区域。
获取完整区域
- 与
status/format/json完全相同。 - /status/control?cmd=status&group=*
获取组区域
- mainZones
- /status/control?cmd=status&group=server&zone=::main
- serverZones
- /status/control?cmd=status&group=server&zone=*
- filterZones
- /status/control?cmd=status&group=filter&zone=*
- upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=status&group=cache&zone=*
mainZones 值是默认状态值,包括 hostName、moduleVersion、nginxVersion、loadMsec、nowMsec、connections。
获取每个区域
- serverZones 中的单个区域
- /status/control?cmd=status&group=server&zone=
name - filterZones 中的单个区域
- /status/control?cmd=status&group=filter&zone=
filter_group@name - upstreamZones 中的单个区域
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - upstreamZones::nogroups 中的单个区域
- /status/control?cmd=status&group=upstream@alone&zone=
name - cacheZones 中的单个区域
- /status/control?cmd=status&group=cache&zone=
name
实时重置流量区域
将指定区域的值重置为 0。
重置完整区域
- /status/control?cmd=reset&group=*
重置组区域
- serverZones
- /status/control?cmd=reset&group=server&zone=*
- filterZones
- /status/control?cmd=reset&group=filter&zone=*
- upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=reset&group=cache&zone=*
重置每个区域
- serverZones 中的单个区域
- /status/control?cmd=reset&group=server&zone=
name - filterZones 中的单个区域
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - upstreamZones 中的单个区域
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - upstreamZones::nogroups 中的单个区域
- /status/control?cmd=reset&group=upstream@alone&zone=
name - cacheZones 中的单个区域
- /status/control?cmd=reset&group=cache&zone=
name
实时删除流量区域
在共享内存中删除指定区域。
删除完整区域
- /status/control?cmd=delete&group=*
删除组区域
- serverZones
- /status/control?cmd=delete&group=server&zone=*
- filterZones
- /status/control?cmd=delete&group=filter&zone=*
- upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=delete&group=cache&zone=*
删除每个区域
- serverZones 中的单个区域
- /status/control?cmd=delete&group=server&zone=
name - filterZones 中的单个区域
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - upstreamZones 中的单个区域
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - upstreamZones::nogroups 中的单个区域
- /status/control?cmd=delete&group=upstream@alone&zone=
name - cacheZones 中的单个区域
- /status/control?cmd=delete&group=cache&zone=
name
设置
可以使用 vhost_traffic_status_set_by_filter 指令在 nginx 配置中单独获取状态值。
几乎可以获取所有状态值,并将获得的值存储在用户定义的变量中,该变量是第一个参数。
- 指令语法
- vhost_traffic_status_set_by_filter $variable group/zone/name
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
upstream backend {
10.10.10.11:80;
10.10.10.12:80;
}
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter;
vhost_traffic_status_set_by_filter $requestCounterKR filter/country::example.org@KR/requestCounter;
location /backend {
vhost_traffic_status_set_by_filter $requestCounterB1 upstream@group/[email protected]:80/requestCounter;
proxy_pass http://backend;
}
}
}
上述设置如下:
- $requestCounter
- serverZones -> example.org -> requestCounter
- $requestCounterKR
- filterZones -> country::example.org -> KR -> requestCounter
- $requestCounterB1
- upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter
有关详细用法,请参见 vhost_traffic_status_set_by_filter 指令。
JSON
以下状态信息以 JSON 格式提供:
状态使用的 Json
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- 主机名。
- moduleVersion
- 模块版本,格式为
{version}(|.dev.{commit})。 - nginxVersion
- 提供的版本。
- loadMsec
- 加载的处理时间(以毫秒为单位)。
- nowMsec
- 当前时间(以毫秒为单位)。
- connections
- active
- 当前活动的客户端连接数。
- reading
- 正在读取的客户端连接总数。
- writing
- 正在写入的客户端连接总数。
- waiting
- 等待的客户端连接总数。
- accepted
- 接受的客户端连接总数。
- handled
- 处理的客户端连接总数。
- requests
- 请求的客户端连接总数。
- sharedZones
- name
- 配置中指定的共享内存名称。(默认:
vhost_traffic_status)
- 配置中指定的共享内存名称。(默认:
- maxSize
- 配置中指定的共享内存的最大大小限制。
- usedSize
- 当前共享内存的大小。
- usedNode
- 当前使用共享内存的节点数。可以使用以下公式获取每个节点的近似大小:(usedSize / usedNode)
- serverZones
- requestCounter
- 从客户端接收到的请求总数。
- inBytes
- 从客户端接收到的字节总数。
- outBytes
- 发送给客户端的字节总数。
- responses
- 1xx、2xx、3xx、4xx、5xx
- 状态码为 1xx、2xx、3xx、4xx 和 5xx 的响应数量。
- miss
- 缓存未命中的数量。
- bypass
- 缓存绕过的数量。
- expired
- 缓存过期的数量。
- stale
- 缓存陈旧的数量。
- updating
- 缓存更新的数量。
- revalidated
- 缓存重新验证的数量。
- hit
- 缓存命中的数量。
- scarce
- 缓存稀缺的数量。
- requestMsecCounter
- 累计请求处理时间(以毫秒为单位)。
- requestMsec
- 请求处理时间的平均值(以毫秒为单位)。
- requestMsecs
- times
- 请求处理时间的毫秒数。
- msecs
- 请求处理时间(以毫秒为单位)。
- requestBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets指令设置的直方图的桶值。 - counters
- 每个桶值大于或等于请求处理时间的累计值。
- filterZones
- 提供与
serverZones相同的字段,唯一不同的是它包含组名。 - upstreamZones
- server
- 服务器的地址。
- requestCounter
- 转发到该服务器的客户端连接总数。
- inBytes
- 从该服务器接收到的字节总数。
- outBytes
- 发送到该服务器的字节总数。
- responses
- 1xx、2xx、3xx、4xx、5xx
- 状态码为 1xx、2xx、3xx、4xx 和 5xx 的响应数量。
- requestMsecCounter
- 包括上游的累计请求处理时间(以毫秒为单位)。
- requestMsec
- 包括上游的请求处理时间的平均值(以毫秒为单位)。
- requestMsecs
- times
- 请求处理时间的毫秒数。
- msecs
- 包括上游的请求处理时间(以毫秒为单位)。
- requestBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets指令设置的直方图的桶值。 - counters
- 每个桶值大于或等于包括上游的请求处理时间的累计值。
- responseMsecCounter
- 仅上游响应处理时间的累计数量(以毫秒为单位)。
- responseMsec
- 仅上游响应处理时间的平均值(以毫秒为单位)。
- responseMsecs
- times
- 请求处理时间的毫秒数。
- msecs
- 仅上游响应处理时间(以毫秒为单位)。
- responseBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets指令设置的直方图的桶值。 - counters
- 每个桶值大于或等于仅上游响应处理时间的累计值。
- weight
- 服务器的当前
weight设置。
- 服务器的当前
- maxFails
- 服务器的当前
max_fails设置。
- 服务器的当前
- failTimeout
- 服务器的当前
fail_timeout设置。
- 服务器的当前
- backup
- 服务器的当前
backup设置。
- 服务器的当前
- down
- 服务器的当前
down设置。基本上,这只是标记 ngx_http_upstream_module 的服务器宕机(例如server backend3.example.com down),而不是实际的上游服务器状态。如果启用了上游区域指令,它将更改为实际状态。
- 服务器的当前
- cacheZones
- maxSize
- 配置中指定的缓存的最大大小限制。如果在
proxy_cache_path指令中未指定max_size,则系统依赖的值NGX_MAX_OFF_T_VALUE默认分配。换句话说,这个值来自 nginx,而不是我指定的值。
- 配置中指定的缓存的最大大小限制。如果在
- usedSize
- 当前缓存的大小。此值来自 nginx,如上面的
maxSize值。
- 当前缓存的大小。此值来自 nginx,如上面的
- inBytes
- 从缓存接收到的字节总数。
- outBytes
- 从缓存发送的字节总数。
- responses
- miss
- 缓存未命中的数量。
- bypass
- 缓存绕过的数量。
- expired
- 缓存过期的数量。
- stale
- 缓存陈旧的数量。
- updating
- 缓存更新的数量。
- revalidated
- 缓存重新验证的数量。
- hit
- 缓存命中的数量。
- scarce
- 缓存稀缺的数量。
Json 文档中的注意事项
- main
- 基本版本,正常运行时间((nowMsec - loadMsec)/1000)
- nowMsec,loadMsec 是毫秒。
- connections
- 总连接数和请求数(与 NGINX 中的 stub_status_module 相同)
- sharedZones
- 在 nginx-module-vts 中使用的共享内存信息。
- serverZones
- 每个服务器区域的流量(进/出)和请求及响应计数和缓存命中率
- 总流量(进/出)和请求及响应计数(该区域名称为
*)和命中率 - filterZones
- 每个服务器区域的流量(进/出)和请求及响应计数和缓存命中率,通过
vhost_traffic_status_filter_by_set_key指令过滤 - 总流量(进/出)和请求及响应计数(该区域名称为
*)和命中率,通过vhost_traffic_status_filter_by_set_key指令过滤 - upstreamZones
- 每个上游组中每个服务器的流量(进/出)和请求及响应计数
- 当前设置(权重、最大失败次数、失败超时...)在 nginx.conf 中
- cacheZones
- 每个缓存区域的流量(进/出)和大小(容量/已用)和命中率,当使用 proxy_cache 指令时。
JSON 文档中的 overCounts 对象主要用于 32 位系统,如果其值溢出,将增加 1。
指令 vhost_traffic_status_display_format 设置默认输出格式,可以是 json、jsonp、html、prometheus 之一。(默认:json)
流量计算如下:
- ServerZones
- in += requested_bytes
- out += sent_bytes
- FilterZones
- in += requested_bytes 通过过滤器
- out += sent_bytes 通过过滤器
- UpstreamZones
- in += requested_bytes 通过 ServerZones
- out += sent_bytes 通过 ServerZones
- cacheZones
- in += requested_bytes 通过 ServerZones
- out += sent_bytes 通过 ServerZones
所有计算在 Nginx 的日志处理阶段进行。 内部重定向(X-Accel-Redirect 或 error_page)在 UpstreamZones 中不计算。
注意事项: 此模块依赖于 nginx 日志系统(NGX_HTTP_LOG_PHASE:nginx http 的最后阶段),因此在某些情况下流量可能与实际带宽流量不同。
Websocket、取消的下载可能导致不准确。
该模块的工作与 access_log 指令的 "on" 或 "off" 无关。
再次强调,该模块在 "access_log off" 时也能正常工作。
使用多个域名时,它会设置为 server_name 指令的第一个域名(左侧)。
如果您不想这样,请参见 vhost_traffic_status_filter_by_host、vhost_traffic_status_filter_by_set_key 指令。
有关 stream 流量统计的模块,请参见:
* nginx-module-sts
* nginx-module-stream-sts
计算和间隔
平均值
所有平均值目前都是在过去 64 个值上计算的 AMM(算术平均数)。
控制
可以通过查询字符串重置或删除流量区域。 请求将以 JSON 文档的形式响应。
- URI 语法
- /
{status_uri}/control?cmd={command}&group={group}&zone={name}
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
upstream backend {
10.10.10.11:80;
10.10.10.12:80;
}
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
如果设置如上,则控制 URI 类似于 example.org/status/control。
可用的请求参数如下:
* cmd=\<status|reset|delete>
* status
* 返回流量区域的状态,格式为 json,如 status/format/json。
* reset
* 重置流量区域,而不删除共享内存中的节点。(= 初始化为 0)
* delete
* 删除共享内存中的流量区域。当重新请求时会重新创建。
* group=\<server|filter|upstream@alone|upstream@group|cache|*>
* server
* filter
* upstream@alone
* upstream@group
* cache
* *
* zone=name
* server
* name
* filter
* filter_group@name
* upstream@group
* upstream_group@name
* upstream@alone
* @name
* cache
* name
实时获取流量区域状态
这与 status/format/json 类似,只是可以获取每个区域。
获取完整区域
- 与
status/format/json完全相同。 - /status/control?cmd=status&group=*
获取组区域
- mainZones
- /status/control?cmd=status&group=server&zone=::main
- serverZones
- /status/control?cmd=status&group=server&zone=*
- filterZones
- /status/control?cmd=status&group=filter&zone=*
- upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=status&group=cache&zone=*
mainZones 值是默认状态值,包括 hostName、moduleVersion、nginxVersion、loadMsec、nowMsec、connections。
获取每个区域
- serverZones 中的单个区域
- /status/control?cmd=status&group=server&zone=
name - filterZones 中的单个区域
- /status/control?cmd=status&group=filter&zone=
filter_group@name - upstreamZones 中的单个区域
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - upstreamZones::nogroups 中的单个区域
- /status/control?cmd=status&group=upstream@alone&zone=
name - cacheZones 中的单个区域
- /status/control?cmd=status&group=cache&zone=
name
实时重置流量区域
将指定区域的值重置为 0。
重置完整区域
- /status/control?cmd=reset&group=*
重置组区域
- serverZones
- /status/control?cmd=reset&group=server&zone=*
- filterZones
- /status/control?cmd=reset&group=filter&zone=*
- upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=reset&group=cache&zone=*
重置每个区域
- serverZones 中的单个区域
- /status/control?cmd=reset&group=server&zone=
name - filterZones 中的单个区域
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - upstreamZones 中的单个区域
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - upstreamZones::nogroups 中的单个区域
- /status/control?cmd=reset&group=upstream@alone&zone=
name - cacheZones 中的单个区域
- /status/control?cmd=reset&group=cache&zone=
name
实时删除流量区域
在共享内存中删除指定区域。
删除完整区域
- /status/control?cmd=delete&group=*
删除组区域
- serverZones
- /status/control?cmd=delete&group=server&zone=*
- filterZones
- /status/control?cmd=delete&group=filter&zone=*
- upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=delete&group=cache&zone=*
删除每个区域
- serverZones 中的单个区域
- /status/control?cmd=delete&group=server&zone=
name - filterZones 中的单个区域
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - upstreamZones 中的单个区域
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - upstreamZones::nogroups 中的单个区域
- /status/control?cmd=delete&group=upstream@alone&zone=
name - cacheZones 中的单个区域
- /status/control?cmd=delete&group=cache&zone=
name
设置
可以使用 vhost_traffic_status_set_by_filter 指令在 nginx 配置中单独获取状态值。
几乎可以获取所有状态值,并将获得的值存储在用户定义的变量中,该变量是第一个参数。
- 指令语法
- vhost_traffic_status_set_by_filter $variable group/zone/name
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
upstream backend {
10.10.10.11:80;
10.10.10.12:80;
}
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter;
vhost_traffic_status_set_by_filter $requestCounterKR filter/country::example.org@KR/requestCounter;
location /backend {
vhost_traffic_status_set_by_filter $requestCounterB1 upstream@group/[email protected]:80/requestCounter;
proxy_pass http://backend;
}
}
}
上述设置如下:
- $requestCounter
- serverZones -> example.org -> requestCounter
- $requestCounterKR
- filterZones -> country::example.org -> KR -> requestCounter
- $requestCounterB1
- upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter
有关详细用法,请参见 vhost_traffic_status_set_by_filter 指令。
JSON
以下状态信息以 JSON 格式提供:
状态使用的 Json
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- 主机名。
- moduleVersion
- 模块版本,格式为
{version}(|.dev.{commit})。 - nginxVersion
- 提供的版本。
- loadMsec
- 加载的处理时间(以毫秒为单位)。
- nowMsec
- 当前时间(以毫秒为单位)。
- connections
- active
- 当前活动的客户端连接数。
- reading
- 正在读取的客户端连接总数。
- writing
- 正在写入的客户端连接总数。
- waiting
- 等待的客户端连接总数。
- accepted
- 接受的客户端连接总数。
- handled
- 处理的客户端连接总数。
- requests
- 请求的客户端连接总数。
- sharedZones
- name
- 配置中指定的共享内存名称。(默认:
vhost_traffic_status)
- 配置中指定的共享内存名称。(默认:
- maxSize
- 配置中指定的共享内存的最大大小限制。
- usedSize
- 当前共享内存的大小。
- usedNode
- 当前使用共享内存的节点数。可以使用以下公式获取每个节点的近似大小:(usedSize / usedNode)
- serverZones
- requestCounter
- 从客户端接收到的请求总数。
- inBytes
- 从客户端接收到的字节总数。
- outBytes
- 发送给客户端的字节总数。
- responses
- 1xx、2xx、3xx、4xx、5xx
- 状态码为 1xx、2xx、3xx、4xx 和 5xx 的响应数量。
- miss
- 缓存未命中的数量。
- bypass
- 缓存绕过的数量。
- expired
- 缓存过期的数量。
- stale
- 缓存陈旧的数量。
- updating
- 缓存更新的数量。
- revalidated
- 缓存重新验证的数量。
- hit
- 缓存命中的数量。
- scarce
- 缓存稀缺的数量。
- requestMsecCounter
- 累计请求处理时间(以毫秒为单位)。
- requestMsec
- 请求处理时间的平均值(以毫秒为单位)。
- requestMsecs
- times
- 请求处理时间的毫秒数。
- msecs
- 请求处理时间(以毫秒为单位)。
- requestBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets指令设置的直方图的桶值。 - counters
- 每个桶值大于或等于请求处理时间的累计值。
- filterZones
- 提供与
serverZones相同的字段,唯一不同的是它包含组名。 - upstreamZones
- server
- 服务器的地址。
- requestCounter
- 转发到该服务器的客户端连接总数。
- inBytes
- 从该服务器接收到的字节总数。
- outBytes
- 发送到该服务器的字节总数。
- responses
- 1xx、2xx、3xx、4xx、5xx
- 状态码为 1xx、2xx、3xx、4xx 和 5xx 的响应数量。
- requestMsecCounter
- 包括上游的累计请求处理时间(以毫秒为单位)。
- requestMsec
- 包括上游的请求处理时间的平均值(以毫秒为单位)。
- requestMsecs
- times
- 请求处理时间的毫秒数。
- msecs
- 包括上游的请求处理时间(以毫秒为单位)。
- requestBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets指令设置的直方图的桶值。 - counters
- 每个桶值大于或等于包括上游的请求处理时间的累计值。
- responseMsecCounter
- 仅上游响应处理时间的累计数量(以毫秒为单位)。
- responseMsec
- 仅上游响应处理时间的平均值(以毫秒为单位)。
- responseMsecs
- times
- 请求处理时间的毫秒数。
- msecs
- 仅上游响应处理时间(以毫秒为单位)。
- responseBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets指令设置的直方图的桶值。 - counters
- 每个桶值大于或等于仅上游响应处理时间的累计值。
- weight
- 服务器的当前
weight设置。
- 服务器的当前
- maxFails
- 服务器的当前
max_fails设置。
- 服务器的当前
- failTimeout
- 服务器的当前
fail_timeout设置。
- 服务器的当前
- backup
- 服务器的当前
backup设置。
- 服务器的当前
- down
- 服务器的当前
down设置。基本上,这只是标记 ngx_http_upstream_module 的服务器宕机(例如server backend3.example.com down),而不是实际的上游服务器状态。如果启用了上游区域指令,它将更改为实际状态。
- 服务器的当前
- cacheZones
- maxSize
- 配置中指定的缓存的最大大小限制。如果在
proxy_cache_path指令中未指定max_size,则系统依赖的值NGX_MAX_OFF_T_VALUE默认分配。换句话说,这个值来自 nginx,而不是我指定的值。
- 配置中指定的缓存的最大大小限制。如果在
- usedSize
- 当前缓存的大小。此值来自 nginx,如上面的
maxSize值。
- 当前缓存的大小。此值来自 nginx,如上面的
- inBytes
- 从缓存接收到的字节总数。
- outBytes
- 从缓存发送的字节总数。
- responses
- miss
- 缓存未命中的数量。
- bypass
- 缓存绕过的数量。
- expired
- 缓存过期的数量。
- stale
- 缓存陈旧的数量。
- updating
- 缓存更新的数量。
- revalidated
- 缓存重新验证的数量。
- hit
- 缓存命中的数量。
- scarce
- 缓存稀缺的数量。
Json 文档中的注意事项
- main
- 基本版本,正常运行时间((nowMsec - loadMsec)/1000)
- nowMsec,loadMsec 是毫秒。
- connections
- 总连接数和请求数(与 NGINX 中的 stub_status_module 相同)
- sharedZones
- 在 nginx-module-vts 中使用的共享内存信息。
- serverZones
- 每个服务器区域的流量(进/出)和请求及响应计数和缓存命中率
- 总流量(进/出)和请求及响应计数(该区域名称为
*)和命中率 - filterZones
- 每个服务器区域的流量(进/出)和请求及响应计数和缓存命中率,通过
vhost_traffic_status_filter_by_set_key指令过滤 - 总流量(进/出)和请求及响应计数(该区域名称为
*)和命中率,通过vhost_traffic_status_filter_by_set_key指令过滤 - upstreamZones
- 每个上游组中每个服务器的流量(进/出)和请求及响应计数
- 当前设置(权重、最大失败次数、失败超时...)在 nginx.conf 中
- cacheZones
- 每个缓存区域的流量(进/出)和大小(容量/已用)和命中率,当使用 proxy_cache 指令时。
JSON 文档中的 overCounts 对象主要用于 32 位系统,如果其值溢出,将增加 1。
指令 vhost_traffic_status_display_format 设置默认输出格式,可以是 json、jsonp、html、prometheus 之一。(默认:json)
流量计算如下:
- ServerZones
- in += requested_bytes
- out += sent_bytes
- FilterZones
- in += requested_bytes 通过过滤器
- out += sent_bytes 通过过滤器
- UpstreamZones
- in += requested_bytes 通过 ServerZones
- out += sent_bytes 通过 ServerZones
- cacheZones
- in += requested_bytes 通过 ServerZones
- out += sent_bytes 通过 ServerZones
所有计算在 Nginx 的日志处理阶段进行。 内部重定向(X-Accel-Redirect 或 error_page)在 UpstreamZones 中不计算。
注意事项: 此模块依赖于 nginx 日志系统(NGX_HTTP_LOG_PHASE:nginx http 的最后阶段),因此在某些情况下流量可能与实际带宽流量不同。
Websocket、取消的下载可能导致不准确。
该模块的工作与 access_log 指令的 "on" 或 "off" 无关。
再次强调,该模块在 "access_log off" 时也能正常工作。
使用多个域名时,它会设置为 server_name 指令的第一个域名(左侧)。
如果您不想这样,请参见 vhost_traffic_status_filter_by_host、vhost_traffic_status_filter_by_set_key 指令。
有关 stream 流量统计的模块,请参见:
* nginx-module-sts
* nginx-module-stream-sts
计算和间隔
平均值
所有平均值目前都是在过去 64 个值上计算的 AMM(算术平均数)。
控制
可以通过查询字符串重置或删除流量区域。 请求将以 JSON 文档的形式响应。
- URI 语法
- /
{status_uri}/control?cmd={command}&group={group}&zone={name}
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
upstream backend {
10.10.10.11:80;
10.10.10.12:80;
}
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
如果设置如上,则控制 URI 类似于 example.org/status/control。
可用的请求参数如下:
* cmd=\<status|reset|delete>
* status
* 返回流量区域的状态,格式为 json,如 status/format/json。
* reset
* 重置流量区域,而不删除共享内存中的节点。(= 初始化为 0)
* delete
* 删除共享内存中的流量区域。当重新请求时会重新创建。
* group=\<server|filter|upstream@alone|upstream@group|cache|*>
* server
* filter
* upstream@alone
* upstream@group
* cache
* *
* zone=name
* server
* name
* filter
* filter_group@name
* upstream@group
* upstream_group@name
* upstream@alone
* @name
* cache
* name
实时获取流量区域状态
这与 status/format/json 类似,只是可以获取每个区域。
获取完整区域
- 与
status/format/json完全相同。 - /status/control?cmd=status&group=*
获取组区域
- mainZones
- /status/control?cmd=status&group=server&zone=::main
- serverZones
- /status/control?cmd=status&group=server&zone=*
- filterZones
- /status/control?cmd=status&group=filter&zone=*
- upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=status&group=cache&zone=*
mainZones 值是默认状态值,包括 hostName、moduleVersion、nginxVersion、loadMsec、nowMsec、connections。
获取每个区域
- serverZones 中的单个区域
- /status/control?cmd=status&group=server&zone=
name - filterZones 中的单个区域
- /status/control?cmd=status&group=filter&zone=
filter_group@name - upstreamZones 中的单个区域
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - upstreamZones::nogroups 中的单个区域
- /status/control?cmd=status&group=upstream@alone&zone=
name - cacheZones 中的单个区域
- /status/control?cmd=status&group=cache&zone=
name
实时重置流量区域
将指定区域的值重置为 0。
重置完整区域
- /status/control?cmd=reset&group=*
重置组区域
- serverZones
- /status/control?cmd=reset&group=server&zone=*
- filterZones
- /status/control?cmd=reset&group=filter&zone=*
- upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=reset&group=cache&zone=*
重置每个区域
- serverZones 中的单个区域
- /status/control?cmd=reset&group=server&zone=
name - filterZones 中的单个区域
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - upstreamZones 中的单个区域
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - upstreamZones::nogroups 中的单个区域
- /status/control?cmd=reset&group=upstream@alone&zone=
name - cacheZones 中的单个区域
- /status/control?cmd=reset&group=cache&zone=
name
实时删除流量区域
在共享内存中删除指定区域。
删除完整区域
- /status/control?cmd=delete&group=*
删除组区域
- serverZones
- /status/control?cmd=delete&group=server&zone=*
- filterZones
- /status/control?cmd=delete&group=filter&zone=*
- upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=delete&group=cache&zone=*
删除每个区域
- serverZones 中的单个区域
- /status/control?cmd=delete&group=server&zone=
name - filterZones 中的单个区域
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - upstreamZones 中的单个区域
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - upstreamZones::nogroups 中的单个区域
- /status/control?cmd=delete&group=upstream@alone&zone=
name - cacheZones 中的单个区域
- /status/control?cmd=delete&group=cache&zone=
name
设置
可以使用 vhost_traffic_status_set_by_filter 指令在 nginx 配置中单独获取状态值。
几乎可以获取所有状态值,并将获得的值存储在用户定义的变量中,该变量是第一个参数。
- 指令语法
- vhost_traffic_status_set_by_filter $variable group/zone/name
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
upstream backend {
10.10.10.11:80;
10.10.10.12:80;
}
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter;
vhost_traffic_status_set_by_filter $requestCounterKR filter/country::example.org@KR/requestCounter;
location /backend {
vhost_traffic_status_set_by_filter $requestCounterB1 upstream@group/[email protected]:80/requestCounter;
proxy_pass http://backend;
}
}
}
上述设置如下:
- $requestCounter
- serverZones -> example.org -> requestCounter
- $requestCounterKR
- filterZones -> country::example.org -> KR -> requestCounter
- $requestCounterB1
- upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter
有关详细用法,请参见 vhost_traffic_status_set_by_filter 指令。
JSON
以下状态信息以 JSON 格式提供:
状态使用的 Json
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- 主机名。
- moduleVersion
- 模块版本,格式为
{version}(|.dev.{commit})。 - nginxVersion
- 提供的版本。
- loadMsec
- 加载的处理时间(以毫秒为单位)。
- nowMsec
- 当前时间(以毫秒为单位)。
- connections
- active
- 当前活动的客户端连接数。
- reading
- 正在读取的客户端连接总数。
- writing
- 正在写入的客户端连接总数。
- waiting
- 等待的客户端连接总数。
- accepted
- 接受的客户端连接总数。
- handled
- 处理的客户端连接总数。
- requests
- 请求的客户端连接总数。
- sharedZones
- name
- 配置中指定的共享内存名称。(默认:
vhost_traffic_status)
- 配置中指定的共享内存名称。(默认:
- maxSize
- 配置中指定的共享内存的最大大小限制。
- usedSize
- 当前共享内存的大小。
- usedNode
- 当前使用共享内存的节点数。可以使用以下公式获取每个节点的近似大小:(usedSize / usedNode)
- serverZones
- requestCounter
- 从客户端接收到的请求总数。
- inBytes
- 从客户端接收到的字节总数。
- outBytes
- 发送给客户端的字节总数。
- responses
- 1xx、2xx、3xx、4xx、5xx
- 状态码为 1xx、2xx、3xx、4xx 和 5xx 的响应数量。
- miss
- 缓存未命中的数量。
- bypass
- 缓存绕过的数量。
- expired
- 缓存过期的数量。
- stale
- 缓存陈旧的数量。
- updating
- 缓存更新的数量。
- revalidated
- 缓存重新验证的数量。
- hit
- 缓存命中的数量。
- scarce
- 缓存稀缺的数量。
- requestMsecCounter
- 累计请求处理时间(以毫秒为单位)。
- requestMsec
- 请求处理时间的平均值(以毫秒为单位)。
- requestMsecs
- times
- 请求处理时间的毫秒数。
- msecs
- 请求处理时间(以毫秒为单位)。
- requestBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets指令设置的直方图的桶值。 - counters
- 每个桶值大于或等于请求处理时间的累计值。
- filterZones
- 提供与
serverZones相同的字段,唯一不同的是它包含组名。 - upstreamZones
- server
- 服务器的地址。
- requestCounter
- 转发到该服务器的客户端连接总数。
- inBytes
- 从该服务器接收到的字节总数。
- outBytes
- 发送到该服务器的字节总数。
- responses
- 1xx、2xx、3xx、4xx、5xx
- 状态码为 1xx、2xx、3xx、4xx 和 5xx 的响应数量。
- requestMsecCounter
- 包括上游的累计请求处理时间(以毫秒为单位)。
- requestMsec
- 包括上游的请求处理时间的平均值(以毫秒为单位)。
- requestMsecs
- times
- 请求处理时间的毫秒数。
- msecs
- 包括上游的请求处理时间(以毫秒为单位)。
- requestBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets指令设置的直方图的桶值。 - counters
- 每个桶值大于或等于包括上游的请求处理时间的累计值。
- responseMsecCounter
- 仅上游响应处理时间的累计数量(以毫秒为单位)。
- responseMsec
- 仅上游响应处理时间的平均值(以毫秒为单位)。
- responseMsecs
- times
- 请求处理时间的毫秒数。
- msecs
- 仅上游响应处理时间(以毫秒为单位)。
- responseBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets指令设置的直方图的桶值。 - counters
- 每个桶值大于或等于仅上游响应处理时间的累计值。
- weight
- 服务器的当前
weight设置。
- 服务器的当前
- maxFails
- 服务器的当前
max_fails设置。
- 服务器的当前
- failTimeout
- 服务器的当前
fail_timeout设置。
- 服务器的当前
- backup
- 服务器的当前
backup设置。
- 服务器的当前
- down
- 服务器的当前
down设置。基本上,这只是标记 ngx_http_upstream_module 的服务器宕机(例如server backend3.example.com down),而不是实际的上游服务器状态。如果启用了上游区域指令,它将更改为实际状态。
- 服务器的当前
- cacheZones
- maxSize
- 配置中指定的缓存的最大大小限制。如果在
proxy_cache_path指令中未指定max_size,则系统依赖的值NGX_MAX_OFF_T_VALUE默认分配。换句话说,这个值来自 nginx,而不是我指定的值。
- 配置中指定的缓存的最大大小限制。如果在
- usedSize
- 当前缓存的大小。此值来自 nginx,如上面的
maxSize值。
- 当前缓存的大小。此值来自 nginx,如上面的
- inBytes
- 从缓存接收到的字节总数。
- outBytes
- 从缓存发送的字节总数。
- responses
- miss
- 缓存未命中的数量。
- bypass
- 缓存绕过的数量。
- expired
- 缓存过期的数量。
- stale
- 缓存陈旧的数量。
- updating
- 缓存更新的数量。
- revalidated
- 缓存重新验证的数量。
- hit
- 缓存命中的数量。
- scarce
- 缓存稀缺的数量。
Json 文档中的注意事项
- main
- 基本版本,正常运行时间((nowMsec - loadMsec)/1000)
- nowMsec,loadMsec 是毫秒。
- connections
- 总连接数和请求数(与 NGINX 中的 stub_status_module 相同)
- sharedZones
- 在 nginx-module-vts 中使用的共享内存信息。
- serverZones
- 每个服务器区域的流量(进/出)和请求及响应计数和缓存命中率
- 总流量(进/出)和请求及响应计数(该区域名称为
*)和命中率 - filterZones
- 每个服务器区域的流量(进/出)和请求及响应计数和缓存命中率,通过
vhost_traffic_status_filter_by_set_key指令过滤 - 总流量(进/出)和请求及响应计数(该区域名称为
*)和命中率,通过vhost_traffic_status_filter_by_set_key指令过滤 - upstreamZones
- 每个上游组中每个服务器的流量(进/出)和请求及响应计数
- 当前设置(权重、最大失败次数、失败超时...)在 nginx.conf 中
- cacheZones
- 每个缓存区域的流量(进/出)和大小(容量/已用)和命中率,当使用 proxy_cache 指令时。
JSON 文档中的 overCounts 对象主要用于 32 位系统,如果其值溢出,将增加 1。
指令 vhost_traffic_status_display_format 设置默认输出格式,可以是 json、jsonp、html、prometheus 之一。(默认:json)
流量计算如下:
- ServerZones
- in += requested_bytes
- out += sent_bytes
- FilterZones
- in += requested_bytes 通过过滤器
- out += sent_bytes 通过过滤器
- UpstreamZones
- in += requested_bytes 通过 ServerZones
- out += sent_bytes 通过 ServerZones
- cacheZones
- in += requested_bytes 通过 ServerZones
- out += sent_bytes 通过 ServerZones
所有计算在 Nginx 的日志处理阶段进行。 内部重定向(X-Accel-Redirect 或 error_page)在 UpstreamZones 中不计算。
注意事项: 此模块依赖于 nginx 日志系统(NGX_HTTP_LOG_PHASE:nginx http 的最后阶段),因此在某些情况下流量可能与实际带宽流量不同。
Websocket、取消的下载可能导致不准确。
该模块的工作与 access_log 指令的 "on" 或 "off" 无关。
再次强调,该模块在 "access_log off" 时也能正常工作。
使用多个域名时,它会设置为 server_name 指令的第一个域名(左侧)。
如果您不想这样,请参见 vhost_traffic_status_filter_by_host、vhost_traffic_status_filter_by_set_key 指令。
有关 stream 流量统计的模块,请参见:
* nginx-module-sts
* nginx-module-stream-sts
计算和间隔
平均值
所有平均值目前都是在过去 64 个值上计算的 AMM(算术平均数)。
控制
可以通过查询字符串重置或删除流量区域。 请求将以 JSON 文档的形式响应。
- URI 语法
- /
{status_uri}/control?cmd={command}&group={group}&zone={name}
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
upstream backend {
10.10.10.11:80;
10.10.10.12:80;
}
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
如果设置如上,则控制 URI 类似于 example.org/status/control。
可用的请求参数如下:
* cmd=\<status|reset|delete>
* status
* 返回流量区域的状态,格式为 json,如 status/format/json。
* reset
* 重置流量区域,而不删除共享内存中的节点。(= 初始化为 0)
* delete
* 删除共享内存中的流量区域。当重新请求时会重新创建。
* group=\<server|filter|upstream@alone|upstream@group|cache|*>
* server
* filter
* upstream@alone
* upstream@group
* cache
* *
* zone=name
* server
* name
* filter
* filter_group@name
* upstream@group
* upstream_group@name
* upstream@alone
* @name
* cache
* name
实时获取流量区域状态
这与 status/format/json 类似,只是可以获取每个区域。
获取完整区域
- 与
status/format/json完全相同。 - /status/control?cmd=status&group=*
获取组区域
- mainZones
- /status/control?cmd=status&group=server&zone=::main
- serverZones
- /status/control?cmd=status&group=server&zone=*
- filterZones
- /status/control?cmd=status&group=filter&zone=*
- upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=status&group=cache&zone=*
mainZones 值是默认状态值,包括 hostName、moduleVersion、nginxVersion