Nginx虛擬主機(jī)流量狀態(tài)模塊(nginx-module-vts)使用說明文檔(二)

前面的博文 Nginx安裝,開箱即用?講了NG的安裝,裝完NG,為了拿到各種狀態(tài)指標(biāo),就要對NG做監(jiān)控。
Github 2.3k的開源項(xiàng)目nginx-module-vts沒準(zhǔn)真是你需求的。
鏈接數(shù),qps,1xx、2xx,、3xx、4xx、5xx的響應(yīng)數(shù),響應(yīng)耗時(shí),響應(yīng)時(shí)間分布,訪問用戶國家分布;甚至是基于各種狀態(tài)的流量控制統(tǒng)統(tǒng)能滿足你的需求。
nginx-module-vts具體怎么用?我們還是從官方文檔開始擼吧,還是英文的,那就翻譯一下吧。
內(nèi)容有點(diǎn)長,你看到的文檔會四篇文檔的方式分別出現(xiàn)。這里是第二篇,第一篇你可以點(diǎn)這里查看。

Nginx虛擬主機(jī)流量狀態(tài)模塊

目錄

9、管控指令(Control)

control指令能夠通過查詢字符串重置或刪除流量區(qū)域。
該請求以JSON文檔響應(yīng)。

  • 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;
        }
    }
}

如果設(shè)置如上,則control的uri類似于example.org/status/control。

可用的請求參數(shù)如下:

  • cmd=<status|reset|delete>
    • status
      • 它將流量區(qū)域(zones)的狀態(tài)返回為json格式,如status/format/json
    • reset
      • 重置流量區(qū)域(zones)而不刪除共享中的節(jié)點(diǎn)(nodes)。
    • delete
      • 刪除共享內(nèi)存中的流量區(qū)域(zones)。當(dāng)重新請求時(shí)重新創(chuàng)建時(shí)。
  • 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

動態(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、loadMsecnowMsec、connections

獲取每個區(qū)域

  • 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

動態(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
  • 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

動態(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
  • 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、設(shè)置指令(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;
        }
    }
}

以上設(shè)置如下:

  • $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指令以了解詳細(xì)用法。

11、JSON字段說明

以下狀態(tài)信息以JSON格式提供:

狀態(tài)中使用的Json

/{status_uri}/format/json

/{status_uri}/control?cmd=status&...

  • hostName
    • 主機(jī)名。
  • nginxVersion
    • nginx的版本。
  • loadMsec
    • 以毫秒為單位的處理時(shí)間。
  • nowMsec
    • 以毫秒為單位的當(dāng)前時(shí)間
  • connections
    • active
      • 當(dāng)前活動的客戶端連接數(shù)。
    • reading
      • 讀取客戶端連接的總數(shù)。
    • writing
      • 寫入客戶端連接的總數(shù)。
    • waiting
      • 正在等待的客戶端連接總數(shù)。
    • accepted
      • 接受的客戶端連接總數(shù)。
    • handled
      • 已處理的客戶端連接總數(shù)
    • requests
      • 請求請求的客戶端連接總數(shù)。
  • sharedZones
    • name
      • 配置中指定的共享內(nèi)存的名稱。(默認(rèn)值為:vhost_traffic_status)
    • maxSize
      • 配置中指定的共享內(nèi)存的最大大小的限制。
    • usedSize
      • 共享內(nèi)存的當(dāng)前大小。
    • usedNode
      • 共享內(nèi)存中當(dāng)前使用的節(jié)點(diǎn)數(shù)??梢酝ㄟ^以下公式獲得一個節(jié)點(diǎn)的近似大小:(usedSize / usedNode
  • serverZones
    • requestCounter
      • 從客戶端接收的客戶端請求總數(shù)。
    • inBytes
      • 從客戶端接收的總字節(jié)數(shù)。
    • outBytes
      • 發(fā)送到客戶端的總字節(jié)數(shù)。
    • responses
      • 1xx, 2xx, 3xx, 4xx, 5xx
        • 狀態(tài)代碼為1xx、2xx、3xx、4xx和5xx的響應(yīng)數(shù)。
      • miss
        • 未命中的緩存數(shù)。
      • bypass
        • 繞過緩存旁路數(shù)。
      • expired
        • 過期的緩存數(shù)。
      • stale
        • 失效緩存的數(shù)量。
      • updating
        • 緩存更新的次數(shù)。
      • revalidated
        • 重新驗(yàn)證的緩存數(shù)。
      • hit
        • 緩存命中數(shù)。
      • scarce
        • 未達(dá)緩存要求的請求次數(shù)。
    • requestMsecCounter
      • 累積的請求處理時(shí)間(毫秒)。
    • requestMsec
      • 請求處理時(shí)間的平均值(毫秒)。
    • requestMsecs
      • times
        • 請求處理時(shí)間的時(shí)間(毫秒)。
      • msecs
        • 請求處理時(shí)間的時(shí)間(毫秒)。
    • requestBuckets
      • msecs
        • vhost_traffic_status_histogram_buckets指令設(shè)置的柱狀圖的桶的值.
      • counters
        • 每個存儲桶段值大于或等于對應(yīng)請求處理時(shí)間的累積值。
  • filterZones
    • 它提供了與serverZones相同的字段,只是包含了組名。
  • upstreamZones
    • server
      • server地址。
    • requestCounter
      • 轉(zhuǎn)發(fā)到此服務(wù)器的客戶端連接總數(shù)。
    • inBytes
      • 從該服務(wù)器接收的總字節(jié)數(shù)。
    • outBytes
      • 發(fā)送到此服務(wù)器的總字節(jié)數(shù)。
    • responses
      • 1xx, 2xx, 3xx, 4xx, 5xx
        • 狀態(tài)代碼為1xx、2xx、3xx、4xx和5xx的響應(yīng)數(shù)。
    • requestMsecCounter
      • 包括upstream在內(nèi)的累計(jì)請求處理時(shí)間數(shù)(毫秒)。
    • requestMsec
      • 包括upstream在內(nèi)請求處理時(shí)間的平均毫秒數(shù)。
    • requestMsecs
      • times
        • 請求處理時(shí)間的時(shí)間(毫秒)。
      • msecs
        • 包括upstream在內(nèi)請求處理時(shí)間的時(shí)間(毫秒)。
    • requestBuckets
      • msecs
        • vhost_traffic_status_histogram_buckets指令設(shè)置的直方圖的bucket值。
      • counters
        • 每個存儲桶段值大于或等于對應(yīng)請求處理時(shí)間(包括上游)的累積值。
    • responseMsecCounter
      • 僅upstream響應(yīng)處理時(shí)間累加值(毫秒)。
    • responseMsec
      • 僅upstream響應(yīng)處理時(shí)間平均值(毫秒)。
    • responseMsecs
      • times
        • 請求處理時(shí)間(毫秒)。
      • msecs
        • 僅upstream響應(yīng)處理時(shí)間平均值(毫秒)。
    • responseBuckets
      • msecs
        • vhost_traffic_status_histogram_buckets指令設(shè)置的柱狀圖的存儲桶值。
      • counters
        • 僅upstream響應(yīng)處理時(shí)間大于或等于每個存儲桶值的累計(jì)次數(shù)
    • weight
      • server的當(dāng)前的weight設(shè)置。
    • maxFails
      • server的當(dāng)前的max_fails設(shè)置。
    • failTimeout
      • server的當(dāng)前的fail_timeout設(shè)置。
    • backup
      • server的當(dāng)前的backup設(shè)置。
    • down
      • 服務(wù)器的當(dāng)前down設(shè)置。
        基本上,這只是ngx_http_upstream_module的server關(guān)閉的標(biāo)記(例如server backend3.example.com down),不是實(shí)際的upstream狀態(tài)。
        如果啟用了上游區(qū)域指令,它將變?yōu)閷?shí)際狀態(tài)。
  • cacheZones
    • maxSize
      • 配置中指定的最大緩存大小限制。
    • usedSize
      • 當(dāng)前緩存的大小。
    • inBytes
      • 從緩存接收的字節(jié)總數(shù)。
    • outBytes
      • 從緩存發(fā)送的字節(jié)總數(shù)。
    • responses
      • miss
        • 未命中的緩存數(shù)。
      • bypass
        • 繞過緩存旁路數(shù)。
      • expired
        • 過期的緩存數(shù)。
      • stale
        • 失效緩存的數(shù)量。
      • updating
        • 緩存更新的次數(shù)。
      • revalidated
        • 重新驗(yàn)證的緩存數(shù)。
      • hit
        • 緩存命中數(shù)。
      • scarce
        • 未達(dá)緩存要求的請求次數(shù)。

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.

凋謝的不是花,萎蔫的是時(shí)間;星辰大海,點(diǎn)滴為途。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容