前面的博文 Nginx安裝,開箱即用?講了NG的安裝,裝完NG,爲了拿到各類狀態指標,就要對NG作監控。
Github 2.3k的開源項目nginx-module-vts沒準真是你需求的。
連接數,qps,1xx、2xx,、3xx、4xx、5xx的響應數,響應耗時,響應時間分佈,訪問用戶國家分佈;甚至是基於各類狀態的流量控制通通能知足你的需求。
nginx-module-vts具體怎麼用?咱們仍是從官方文檔開始擼吧,仍是英文的,那就翻譯一下吧。
內容有點長,你看到的文檔會四篇文檔的方式分別出現。這裏是第二篇,第一篇你能夠點這裏查看。html
control指令可以經過查詢字符串重置或刪除流量區域。
該請求以JSON文檔響應。node
{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
。nginx
可用的請求參數以下:json
status
|reset
|delete
>
status/format/json
。server
|filter
|upstream@alone
|upstream@group
|cache
|*
>
與status/format/json
類似,只是它能夠得到每一個區域。緩存
status/format/json
徹底相同。
mainZones中的狀態值,包括hostName
、nginxVersion
、loadMsec
、nowMsec
、connections
。服務器
name
filter_group
@name
upstream_group
@name
name
name
將指定區域的值重置爲0。翻譯
name
filter_group
@name
upstream_group
@name
name
name
刪除共享內存中指定的區域。code
name
filter_group
@name
upstream_group
@name
name
name
能夠使用vhost_traffic_status_set_by_filter
指令分別獲取nginx配置中的狀態值。
能夠獲取幾乎全部狀態值,並將得到的值存儲在用戶定義的變量(第一個參數)中。orm
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; } } }
以上設置以下:server
請參見vhost_traffic_status_set_by_filter指令以瞭解詳細用法。
如下狀態信息以JSON格式提供:
/{status_uri}
/format/json
/{status_uri}
/control?cmd=status&...
vhost_traffic_status
)vhost_traffic_status_histogram_buckets
指令設置的柱狀圖的桶的值.serverZones
相同的字段,只是包含了組名。vhost_traffic_status_histogram_buckets
指令設置的直方圖的bucket值。vhost_traffic_status_histogram_buckets
指令設置的柱狀圖的存儲桶值。weight
設置。max_fails
設置。fail_timeout
設置。backup
設置。down
設置。server backend3.example.com down
),不是實際的upstream狀態。/{status_uri}
/control?cmd=reset&...
/{status_uri}
/control?cmd=delete&...
凋謝的不是花,萎蔫的是時間;星辰大海,點滴爲途。