前面的博文 Nginx安裝士败,開箱即用?講了NG的安裝褥伴,裝完NG谅将,為了拿到各種狀態(tài)指標,就要對NG做監(jiān)控重慢。
Github 2.3k的開源項目nginx-module-vts沒準真是你需求的饥臂。
鏈接數(shù),qps似踱,1xx隅熙、2xx,、3xx核芽、4xx囚戚、5xx的響應數(shù),響應耗時轧简,響應時間分布驰坊,訪問用戶國家分布;甚至是基于各種狀態(tài)的流量控制統(tǒng)統(tǒng)能滿足你的需求哮独。
nginx-module-vts具體怎么用拳芙?我們還是從官方文檔開始擼吧假勿,還是英文的,那就翻譯一下吧态鳖。
內(nèi)容有點長转培,你看到的文檔會四篇文檔的方式分別出現(xiàn)。這里是第二篇浆竭,第一篇你可以點這里查看浸须。
Nginx虛擬主機流量狀態(tài)模塊
目錄
9、管控指令(Control)
control指令能夠通過查詢字符串重置或刪除流量區(qū)域顺囊。
該請求以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
特碳。
可用的請求參數(shù)如下:
-
cmd=<
status
|reset
|delete
>- status
- 它將流量區(qū)域(zones)的狀態(tài)返回為json格式诚亚,如
status/format/json
。
- 它將流量區(qū)域(zones)的狀態(tài)返回為json格式诚亚,如
- reset
- 重置流量區(qū)域(zones)而不刪除共享中的節(jié)點(nodes)午乓。
- delete
- 刪除共享內(nèi)存中的流量區(qū)域(zones)站宗。當重新請求時重新創(chuàng)建時。
- status
-
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
- server
動態(tài)獲取流量區(qū)域(zones)狀態(tài)
與status/format/json
相似益愈,只是它可以獲得每個區(qū)域梢灭。
獲取全部區(qū)域
- 與
status/format/json
完全相同。- /status/control?cmd=status&group=*
獲取組區(qū)域
- 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中的狀態(tài)值蒸其,包括hostName
敏释、nginxVersion
、loadMsec
摸袁、nowMsec
钥顽、connections
。
獲取每個區(qū)域
- single zone in serverZones
- /status/control?cmd=status&group=server&zone=
name
- /status/control?cmd=status&group=server&zone=
- single zone in filterZones
- /status/control?cmd=status&group=filter&zone=
filter_group
@name
- /status/control?cmd=status&group=filter&zone=
- single zone in upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group
@name
- /status/control?cmd=status&group=upstream@group&zone=
- single zone in upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
name
- /status/control?cmd=status&group=upstream@alone&zone=
- single zone in cacheZones
- /status/control?cmd=status&group=cache&zone=
name
- /status/control?cmd=status&group=cache&zone=
動態(tài)重置流量區(qū)域
將指定區(qū)域的值重置為0但惶。
重置全部分區(qū)
- /status/control?cmd=reset&group=*
重置組區(qū)域
- 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=*
重置每個分區(qū)
- single zone in serverZones
- /status/control?cmd=reset&group=server&zone=
name
- /status/control?cmd=reset&group=server&zone=
- single zone in filterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group
@name
- /status/control?cmd=reset&group=filter&zone=
- single zone in upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group
@name
- /status/control?cmd=reset&group=upstream@group&zone=
- single zone in upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name
- /status/control?cmd=reset&group=upstream@alone&zone=
- single zone in cacheZones
- /status/control?cmd=reset&group=cache&zone=
name
- /status/control?cmd=reset&group=cache&zone=
動態(tài)刪除流量區(qū)域
刪除共享內(nèi)存中指定的區(qū)域耳鸯。
刪除全部分區(qū)
- /status/control?cmd=delete&group=*
刪除組分區(qū)
- 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=*
刪除每個分區(qū)
- single zone in serverZones
- /status/control?cmd=delete&group=server&zone=
name
- /status/control?cmd=delete&group=server&zone=
- single zone in filterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group
@name
- /status/control?cmd=delete&group=filter&zone=
- single zone in upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group
@name
- /status/control?cmd=delete&group=upstream@group&zone=
- single zone in upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name
- /status/control?cmd=delete&group=upstream@alone&zone=
- single zone in cacheZones
- /status/control?cmd=delete&group=cache&zone=
name
- /status/control?cmd=delete&group=cache&zone=
10湿蛔、設置指令(Set)
可以使用vhost_traffic_status_set_by_filter
指令分別獲取nginx配置中的狀態(tài)值膀曾。
可以獲取幾乎所有狀態(tài)值,并將獲得的值存儲在用戶定義的變量(第一個參數(shù))中阳啥。
- 指令語法
- 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字段說明
以下狀態(tài)信息以JSON格式提供:
狀態(tài)中使用的Json
/{status_uri}
/format/json
/{status_uri}
/control?cmd=status&...
- hostName
- 主機名察迟。
- nginxVersion
- nginx的版本斩狱。
- loadMsec
- 以毫秒為單位的處理時間耳高。
- nowMsec
- 以毫秒為單位的當前時間
- connections
- active
- 當前活動的客戶端連接數(shù)。
- reading
- 讀取客戶端連接的總數(shù)所踊。
- writing
- 寫入客戶端連接的總數(shù)泌枪。
- waiting
- 正在等待的客戶端連接總數(shù)。
- accepted
- 接受的客戶端連接總數(shù)秕岛。
- handled
- 已處理的客戶端連接總數(shù)
- requests
- 請求請求的客戶端連接總數(shù)碌燕。
- active
- sharedZones
- name
- 配置中指定的共享內(nèi)存的名稱。(默認值為:
vhost_traffic_status
)
- 配置中指定的共享內(nèi)存的名稱。(默認值為:
- maxSize
- 配置中指定的共享內(nèi)存的最大大小的限制继薛。
- usedSize
- 共享內(nèi)存的當前大小修壕。
- usedNode
- 共享內(nèi)存中當前使用的節(jié)點數(shù)《艨迹可以通過以下公式獲得一個節(jié)點的近似大写瑞:(usedSize / usedNode)
- name
- serverZones
- requestCounter
- 從客戶端接收的客戶端請求總數(shù)。
- inBytes
- 從客戶端接收的總字節(jié)數(shù)灌具。
- outBytes
- 發(fā)送到客戶端的總字節(jié)數(shù)青团。
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- 狀態(tài)代碼為1xx、2xx咖楣、3xx壶冒、4xx和5xx的響應數(shù)。
- miss
- 未命中的緩存數(shù)截歉。
- bypass
- 繞過緩存旁路數(shù)胖腾。
- expired
- 過期的緩存數(shù)。
- stale
- 失效緩存的數(shù)量瘪松。
- updating
- 緩存更新的次數(shù)咸作。
- revalidated
- 重新驗證的緩存數(shù)。
- hit
- 緩存命中數(shù)宵睦。
- scarce
- 未達緩存要求的請求次數(shù)记罚。
- 1xx, 2xx, 3xx, 4xx, 5xx
- requestMsecCounter
- 累積的請求處理時間(毫秒)。
- requestMsec
- 請求處理時間的平均值(毫秒)壳嚎。
- requestMsecs
- times
- 請求處理時間的時間(毫秒)桐智。
- msecs
- 請求處理時間的時間(毫秒)。
- times
- requestBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets
指令設置的柱狀圖的桶的值.
- 由
- counters
- 每個存儲桶段值大于或等于對應請求處理時間的累積值烟馅。
- msecs
- requestCounter
- filterZones
- 它提供了與
serverZones
相同的字段说庭,只是包含了組名。
- 它提供了與
- upstreamZones
- server
- server地址郑趁。
- requestCounter
- 轉(zhuǎn)發(fā)到此服務器的客戶端連接總數(shù)刊驴。
- inBytes
- 從該服務器接收的總字節(jié)數(shù)。
- outBytes
- 發(fā)送到此服務器的總字節(jié)數(shù)。
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- 狀態(tài)代碼為1xx捆憎、2xx舅柜、3xx、4xx和5xx的響應數(shù)躲惰。
- 1xx, 2xx, 3xx, 4xx, 5xx
- requestMsecCounter
- 包括upstream在內(nèi)的累計請求處理時間數(shù)(毫秒)致份。
- requestMsec
- 包括upstream在內(nèi)請求處理時間的平均毫秒數(shù)。
- requestMsecs
- times
- 請求處理時間的時間(毫秒)础拨。
- msecs
- 包括upstream在內(nèi)請求處理時間的時間(毫秒)知举。
- times
- requestBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets
指令設置的直方圖的bucket值。
- 由
- counters
- 每個存儲桶段值大于或等于對應請求處理時間(包括上游)的累積值太伊。
- msecs
- responseMsecCounter
- 僅upstream響應處理時間累加值(毫秒)雇锡。
- responseMsec
- 僅upstream響應處理時間平均值(毫秒)。
- responseMsecs
- times
- 請求處理時間(毫秒)僚焦。
- msecs
- 僅upstream響應處理時間平均值(毫秒)锰提。
- times
- responseBuckets
- msecs
- 由
vhost_traffic_status_histogram_buckets
指令設置的柱狀圖的存儲桶值。
- 由
- counters
- 僅upstream響應處理時間大于或等于每個存儲桶值的累計次數(shù)
- msecs
- weight
- server的當前的
weight
設置芳悲。
- server的當前的
- maxFails
- server的當前的
max_fails
設置立肘。
- server的當前的
- failTimeout
- server的當前的
fail_timeout
設置。
- server的當前的
- backup
- server的當前的
backup
設置名扛。
- server的當前的
- down
- 服務器的當前
down
設置谅年。
基本上,這只是ngx_http_upstream_module的server關閉的標記(例如server backend3.example.com down
)肮韧,不是實際的upstream狀態(tài)融蹂。
如果啟用了上游區(qū)域指令,它將變?yōu)閷嶋H狀態(tài)弄企。
- 服務器的當前
- server
- cacheZones
- maxSize
- 配置中指定的最大緩存大小限制超燃。
- usedSize
- 當前緩存的大小。
- inBytes
- 從緩存接收的字節(jié)總數(shù)拘领。
- outBytes
- 從緩存發(fā)送的字節(jié)總數(shù)意乓。
- responses
- miss
- 未命中的緩存數(shù)。
- bypass
- 繞過緩存旁路數(shù)约素。
- expired
- 過期的緩存數(shù)届良。
- stale
- 失效緩存的數(shù)量。
- updating
- 緩存更新的次數(shù)圣猎。
- revalidated
- 重新驗證的緩存數(shù)士葫。
- hit
- 緩存命中數(shù)。
- scarce
- 未達緩存要求的請求次數(shù)样漆。
- miss
- maxSize
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.
凋謝的不是花为障,萎蔫的是時間晦闰;星辰大海放祟,點滴為途鳍怨。