标签:block lte proxy 部分 html 区域 for 默认 语法
前面的博文 Nginx安装,开箱即用?讲了NG的安装,装完NG,为了拿到各种状态指标,就要对NG做监控。
Github 2.3k的开源项目nginx-module-vts没准真是你需求的。
链接数,qps,1xx、2xx,、3xx、4xx、5xx的响应数,响应耗时,响应时间分布,访问用户国家分布;甚至是基于各种状态的流量控制统统能满足你的需求。
nginx-module-vts具体怎么用?我们还是从官方文档开始撸吧,还是英文的,那就翻译一下吧。
内容有点长,你看到的文档会四篇文档的方式分别出现。这里是第二篇,第一篇你可以点这里查看。
Nginx虚拟主机流量状态模块
目录
9、管控指令(Control)
control指令能够通过查询字符串重置或删除流量区域。
该请求以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;
}
}
}
如果设置如上,则control的uri类似于example.org/status/control
。
可用的请求参数如下:
- cmd=<
status
|reset
|delete
>
- status
- 它将流量区域(zones)的状态返回为json格式,如
status/format/json
。
- reset
- 重置流量区域(zones)而不删除共享中的节点(nodes)。
- delete
- 删除共享内存中的流量区域(zones)。当重新请求时重新创建时。
- group=<
server
|filter
|upstream@alone
|upstream@group
|cache
|*
>
- server
- filter
- upstream@alone
- upstream@group
- cache
- *
- zone=name
- server
- filter
- upstream@group
- upstream@alone
- cache
动态获取流量区域(zones)状态
与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
、nginxVersion
、loadMsec
、nowMsec
、connections
。
获取每个区域
- single zone in serverZones
- /status/control?cmd=status&group=server&zone=
name
- single zone in filterZones
- /status/control?cmd=status&group=filter&zone=
filter_group
@name
- single zone in upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group
@name
- single zone in upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
name
- single zone in 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=*
重置每个分区
- single zone in serverZones
- /status/control?cmd=reset&group=server&zone=
name
- single zone in filterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group
@name
- single zone in upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group
@name
- single zone in upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name
- single zone in 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=*
删除每个分区
- single zone in serverZones
- /status/control?cmd=delete&group=server&zone=
name
- single zone in filterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group
@name
- single zone in upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group
@name
- single zone in upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name
- single zone in cacheZones
- /status/control?cmd=delete&group=cache&zone=
name
10、设置指令(Set)
可以使用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/backend@10.10.10.11: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指令以了解详细用法。
11、JSON字段说明
以下状态信息以JSON格式提供:
状态中使用的Json
/{status_uri}
/format/json
/{status_uri}
/control?cmd=status&...
- hostName
- 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
- 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
- 包括upstream在内的累计请求处理时间数(毫秒)。
- requestMsec
- 包括upstream在内请求处理时间的平均毫秒数。
- requestMsecs
- times
- msecs
- 包括upstream在内请求处理时间的时间(毫秒)。
- requestBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets
指令设置的直方图的bucket值。
- counters
- 每个存储桶段值大于或等于对应请求处理时间(包括上游)的累积值。
- responseMsecCounter
- responseMsec
- responseMsecs
- responseBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets
指令设置的柱状图的存储桶值。
- counters
- 仅upstream响应处理时间大于或等于每个存储桶值的累计次数
- weight
- maxFails
- failTimeout
- server的当前的
fail_timeout
设置。
- backup
- down
- 服务器的当前
down
设置。
基本上,这只是ngx_http_upstream_module的server关闭的标记(例如server backend3.example.com down
),不是实际的upstream状态。
如果启用了上游区域指令,它将变为实际状态。
- cacheZones
- maxSize
- usedSize
- inBytes
- outBytes
- responses
- miss
- bypass
- expired
- stale
- updating
- revalidated
- hit
- scarce
Control中使用的Json
/{status_uri}
/control?cmd=reset&...
/{status_uri}
/control?cmd=delete&...
- processingReturn
- The result of true or false.
- processingCommandString
- The requested command string.
- processingGroupString
- The requested group string.
- processingZoneString
- The requested zone string.
- processingCounts
- The actual processing number.
凋谢的不是花,萎蔫的是时间;星辰大海,点滴为途。
Nginx虚拟主机流量状态模(nginx-module-vts)使用说明文档(二)
标签:block lte proxy 部分 html 区域 for 默认 语法
原文地址:https://www.cnblogs.com/tobrainto/p/14350909.html