Nginx虛擬主機流量狀態模(nginx-module-vts)使用說明文檔(二)

前面的博文 Nginx安裝,開箱即用?講了NG的安裝,裝完NG,爲了拿到各類狀態指標,就要對NG作監控。
Github 2.3k的開源項目nginx-module-vts沒準真是你需求的。
連接數,qps,1xx、2xx,、3xx、4xx、5xx的響應數,響應耗時,響應時間分佈,訪問用戶國家分佈;甚至是基於各類狀態的流量控制通通能知足你的需求。
nginx-module-vts具體怎麼用?咱們仍是從官方文檔開始擼吧,仍是英文的,那就翻譯一下吧。
內容有點長,你看到的文檔會四篇文檔的方式分別出現。這裏是第二篇,第一篇你能夠點這裏查看html

Nginx虛擬主機流量狀態模塊

目錄

九、管控指令(Control)

control指令可以經過查詢字符串重置或刪除流量區域。
該請求以JSON文檔響應。node

  • 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/controlnginx

可用的請求參數以下:json

  • 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
      • name
    • filter
      • filter_group@name
    • upstream@group
      • upstream_group@name
    • upstream@alone
      • @name
    • cache
      • name

動態獲取流量區域(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中的狀態值,包括hostNamenginxVersionloadMsecnowMsecconnections服務器

獲取每一個區域

  • 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

動態刪除流量區域

刪除共享內存中指定的區域。code

刪除所有分區

  • /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

十、設置指令(Set)

能夠使用vhost_traffic_status_set_by_filter指令分別獲取nginx配置中的狀態值。
能夠獲取幾乎全部狀態值,並將得到的值存儲在用戶定義的變量(第一個參數)中。orm

  • 指令語法
    • 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;
        }
    }
}

以上設置以下:server

  • $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
    • 主機名。
  • nginxVersion
    • nginx的版本。
  • 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
      • 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
      • 僅upstream響應處理時間累加值(毫秒)。
    • responseMsec
      • 僅upstream響應處理時間平均值(毫秒)。
    • responseMsecs
      • times
        • 請求處理時間(毫秒)。
      • msecs
        • 僅upstream響應處理時間平均值(毫秒)。
    • responseBuckets
      • msecs
        • vhost_traffic_status_histogram_buckets指令設置的柱狀圖的存儲桶值。
      • counters
        • 僅upstream響應處理時間大於或等於每一個存儲桶值的累計次數
    • weight
      • server的當前的weight設置。
    • maxFails
      • server的當前的max_fails設置。
    • failTimeout
      • server的當前的fail_timeout設置。
    • backup
      • server的當前的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.

凋謝的不是花,萎蔫的是時間;星辰大海,點滴爲途。

相關文章
相關標籤/搜索