vts: NGINX Modul für den Status des virtuellen Host-Traffics
Installation
Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:
- RedHat Enterprise Linux 7, 8, 9 und 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 und Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-vts
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-vts
Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:
load_module modules/ngx_http_vhost_traffic_status_module.so;
Dieses Dokument beschreibt nginx-module-vts v0.2.6 veröffentlicht am 29. Juli 2026.
Nginx Modul für den Status des virtuellen Host-Traffics
Test
Führen Sie sudo prove -r t aus, nachdem Sie dieses Modul installiert haben. Das sudo ist erforderlich, da der Test erfordert, dass Nginx auf Port 80 lauscht.
Screenshots


Synopsis
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
Beschreibung
Dies ist ein Nginx-Modul, das Zugriff auf Statusinformationen des virtuellen Hosts bietet. Es enthält den aktuellen Status wie Server, Upstreams und Caches. Dies ähnelt der Live-Aktivitätsüberwachung von NGINX Plus. Das integrierte HTML stammt ebenfalls von der Demoseite der alten Version.
Zunächst ist die Direktive vhost_traffic_status_zone erforderlich, und wenn die Direktive vhost_traffic_status_display gesetzt ist, kann sie wie folgt aufgerufen werden:
- /status/format/json
- Wenn Sie
/status/format/jsonanfordern, wird mit einem JSON-Dokument geantwortet, das die aktuellen Aktivitätsdaten für die Verwendung in Live-Dashboards und Drittanbieter-Überwachungstools enthält. - /status/format/html
- Wenn Sie
/status/format/htmlanfordern, wird mit dem integrierten Live-Dashboard in HTML geantwortet, das intern auf/status/format/jsonzugreift. - /status/format/jsonp
- Wenn Sie
/status/format/jsonpanfordern, wird mit einer JSONP-Callback-Funktion geantwortet, die die aktuellen Aktivitätsdaten für die Verwendung in Live-Dashboards und Drittanbieter-Überwachungstools enthält. - /status/format/prometheus
- Wenn Sie
/status/format/prometheusanfordern, wird mit einem Prometheus Dokument geantwortet, das die aktuellen Aktivitätsdaten enthält. - /status/control
- Wenn Sie
/status/controlanfordern, wird mit einem JSON-Dokument geantwortet, nachdem es Zonen über eine Abfragezeichenfolge zurückgesetzt oder gelöscht hat. Siehe Control.
Das JSON-Dokument enthält Folgendes:
{
"hostName": ...,
"moduleVersion": ...,
"nginxVersion": ...,
"loadMsec": ...,
"nowMsec": ...,
"connections": {
"active":...,
"reading":...,
"writing":...,
"waiting":...,
"accepted":...,
"handled":...,
"requests":...
},
"sharedZones": {
"name":...,
"maxSize":...,
"usedSize":...,
"usedNode":...
},
"serverZones": {
"...":{
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
"requestBuckets":{
"msecs":[...],
"counters":[...]
},
}
...
},
"filterZones": {
"...":{
"...":{
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
"requestBuckets":{
"msecs":[...],
"counters":[...]
},
},
...
},
...
},
"upstreamZones": {
"...":[
{
"server":...,
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
"requestBuckets":{
"msecs":[...],
"counters":[...]
},
"responseMsecCounter":...,
"responseMsec":...,
"responseMsecs":{
"times":[...],
"msecs":[...]
},
"responseBuckets":{
"msecs":[...],
"counters":[...]
},
"weight":...,
"maxFails":...,
"failTimeout":...,
"backup":...,
"down":...
}
...
],
...
}
"cacheZones": {
"...":{
"maxSize":...,
"usedSize":...,
"inBytes":...,
"outBytes":...,
"responses":{
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
}
},
...
}
}
- main
- Basisversion, Betriebszeit((nowMsec - loadMsec)/1000)
- nowMsec, loadMsec ist in Millisekunden.
- connections
- Gesamte Verbindungen und Anfragen (gleich wie stub_status_module in NGINX)
- sharedZones
- Die Informationen zum gemeinsamen Speicher, die im nginx-module-vts verwendet werden.
- serverZones
- Verkehr (ein/auss) und Anfragen sowie Antwortzahlen und Cache-Trefferquote pro Serverzone
- Gesamter Verkehr (ein/auss) und Anfragen sowie Antwortzahlen (Der Zonenname ist
*) und Trefferquote - filterZones
- Verkehr (ein/auss) und Anfragen sowie Antwortzahlen und Cache-Trefferquote pro Serverzone, die durch die Direktive
vhost_traffic_status_filter_by_set_keygefiltert wird - Gesamter Verkehr (ein/auss) und Anfragen sowie Antwortzahlen (Der Zonenname ist
*) und Trefferquote, die durch die Direktivevhost_traffic_status_filter_by_set_keygefiltert wird - upstreamZones
- Verkehr (ein/auss) und Anfragen sowie Antwortzahlen pro Server in jeder Upstream-Gruppe
- Aktuelle Einstellungen (Gewicht, maxfails, failtimeout...) in nginx.conf
- cacheZones
- Verkehr (ein/auss) und Größe (Kapazität/benutzt) und Trefferquote pro Cachezone bei Verwendung der Direktive proxy_cache.
Die overCounts-Objekte im JSON-Dokument sind hauptsächlich für 32-Bit-Systeme gedacht und werden um 1 erhöht, wenn ihr Wert überläuft. Die Direktive vhost_traffic_status_display_format legt das Standardausgabeformat fest, das eines von json, jsonp, html, prometheus ist. (Standard: json)
Die Verkehrsbewertung erfolgt wie folgt:
- ServerZones
- ein += requested_bytes
- aus += sent_bytes
- FilterZones
- ein += requested_bytes über den Filter
- aus += sent_bytes über den Filter
- UpstreamZones
- ein += requested_bytes über die ServerZones
- aus += sent_bytes über die ServerZones
- cacheZones
- ein += requested_bytes über die ServerZones
- aus += sent_bytes über die ServerZones
Alle Berechnungen erfolgen in der Protokollverarbeitungsphase von Nginx. Interne Weiterleitungen (X-Accel-Redirect oder error_page) werden in den UpstreamZones nicht berechnet.
Hinweise: Dieses Modul ist auf das Nginx-Protokollierungssystem angewiesen (NGX_HTTP_LOG_PHASE: letzte Phase des Nginx-HTTP), sodass der Verkehr unter bestimmten Umständen von dem tatsächlichen Bandbreitenverkehr abweichen kann. Websockets und abgebrochene Downloads können Ungenauigkeiten verursachen. Die Funktionsweise des Moduls ist unabhängig davon, ob die Direktive access_log "ein" oder "aus" ist. Nochmals, dieses Modul funktioniert gut mit "access_log aus". Bei der Verwendung mehrerer Domains wird die erste Domain (links) der Direktive server_name festgelegt. Wenn Sie das nicht möchten, sehen Sie sich die Direktiven vhost_traffic_status_filter_by_host, vhost_traffic_status_filter_by_set_key an.
Siehe die folgenden Module für die stream-Traffic-Statistiken:
* nginx-module-sts
* nginx-module-stream-sts
Berechnungen und Intervalle
Durchschnitte
Alle Durchschnitte werden derzeit als AMM (arithmetisches Mittel) über die letzten 64 Werte berechnet.
Kontrolle
Es ist möglich, Verkehrszone über eine Abfragezeichenfolge zurückzusetzen oder zu löschen. Die Anfrage antwortet mit einem JSON-Dokument.
- URI-Syntax
- /
{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;
}
}
}
Wenn es wie oben gesetzt wird, dann ist die Steuer-URI wie example.org/status/control.
Die verfügbaren Anforderungsargumente sind wie folgt:
* cmd=\<status|reset|delete>
* status
* Es gibt den Status der Verkehrszone im JSON-Format zurück, ähnlich wie status/format/json.
* reset
* Es setzt die Verkehrszone zurück, ohne Knoten im gemeinsamen Speicher zu löschen. (= init auf 0)
* delete
* Es löscht die Verkehrszone im gemeinsamen Speicher. Bei erneuter Anfrage wird sie neu erstellt.
* 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
Um den Status der Verkehrszone in Echtzeit zu erhalten
Dies ist ähnlich wie status/format/json, mit dem Unterschied, dass es jede Zone erhalten kann.
Um vollständige Zonen zu erhalten
- Es ist genau dasselbe wie
status/format/json. - /status/control?cmd=status&group=*
Um Gruppen von Zonen zu erhalten
- 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=*
Die mainZones-Werte sind Standardstatuswerte, die hostName, moduleVersion, nginxVersion, loadMsec, nowMsec, connections umfassen.
Um jede Zone zu erhalten
- einzelne Zone in serverZones
- /status/control?cmd=status&group=server&zone=
name - einzelne Zone in filterZones
- /status/control?cmd=status&group=filter&zone=
filter_group@name - einzelne Zone in upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - einzelne Zone in upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
name - einzelne Zone in cacheZones
- /status/control?cmd=status&group=cache&zone=
name
Um Verkehrszone in Echtzeit zurückzusetzen
Es setzt die Werte der angegebenen Zonen auf 0 zurück.
Um vollständige Zonen zurückzusetzen
- /status/control?cmd=reset&group=*
Um Gruppen von Zonen zurückzusetzen
- 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=*
Um jede Zone zurückzusetzen
- einzelne Zone in serverZones
- /status/control?cmd=reset&group=server&zone=
name - einzelne Zone in filterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - einzelne Zone in upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - einzelne Zone in upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name - einzelne Zone in cacheZones
- /status/control?cmd=reset&group=cache&zone=
name
Um Verkehrszone in Echtzeit zu löschen
Es löscht die angegebenen Zonen im gemeinsamen Speicher.
Um vollständige Zonen zu löschen
- /status/control?cmd=delete&group=*
Um Gruppen von Zonen zu löschen
- 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=*
Um jede Zone zu löschen
- einzelne Zone in serverZones
- /status/control?cmd=delete&group=server&zone=
name - einzelne Zone in filterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - einzelne Zone in upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - einzelne Zone in upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name - einzelne Zone in cacheZones
- /status/control?cmd=delete&group=cache&zone=
name
Setzen
Es ist möglich, die Statuswerte in der NGINX-Konfiguration separat mit der Direktive vhost_traffic_status_set_by_filter abzurufen. Es können fast alle Statuswerte abgerufen werden, und der erhaltene Wert wird in einer benutzerdefinierten Variablen gespeichert, die das erste Argument ist.
- Direktive Syntax
- 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/[email protected]:80/requestCounter;
proxy_pass http://backend;
}
}
}
Die obigen Einstellungen sind wie folgt:
- $requestCounter
- serverZones -> example.org -> requestCounter
- $requestCounterKR
- filterZones -> country::example.org -> KR -> requestCounter
- $requestCounterB1
- upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter
Bitte sehen Sie sich die Direktive vhost_traffic_status_set_by_filter für die detaillierte Verwendung an.
JSON
Die folgenden Statusinformationen werden im JSON-Format bereitgestellt:
Json verwendet von Status
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- Hostname.
- moduleVersion
- Version des Moduls im
{version}(|.dev.{commit})Format. - nginxVersion
- Version des bereitgestellten.
- loadMsec
- Geladene Prozesszeit in Millisekunden.
- nowMsec
- Aktuelle Zeit in Millisekunden
- connections
- active
- Die aktuelle Anzahl aktiver Clientverbindungen.
- reading
- Die Gesamtzahl der lesenden Clientverbindungen.
- writing
- Die Gesamtzahl der schreibenden Clientverbindungen.
- waiting
- Die Gesamtzahl der wartenden Clientverbindungen.
- accepted
- Die Gesamtzahl der akzeptierten Clientverbindungen.
- handled
- Die Gesamtzahl der bearbeiteten Clientverbindungen.
- requests
- Die Gesamtzahl der angeforderten Clientverbindungen.
- sharedZones
- name
- Der Name des im Konfigurationsdatei angegebenen gemeinsamen Speichers. (Standard:
vhost_traffic_status)
- Der Name des im Konfigurationsdatei angegebenen gemeinsamen Speichers. (Standard:
- maxSize
- Das Limit für die maximale Größe des im Konfigurationsdatei angegebenen gemeinsamen Speichers.
- usedSize
- Die aktuelle Größe des gemeinsamen Speichers.
- usedNode
- Die aktuelle Anzahl der Knoten, die im gemeinsamen Speicher verwendet werden. Die ungefähre Größe für einen Knoten kann mit der folgenden Formel berechnet werden: (usedSize / usedNode)
- serverZones
- requestCounter
- Die Gesamtzahl der von Clients erhaltenen Anfragen.
- inBytes
- Die Gesamtzahl der von Clients empfangenen Bytes.
- outBytes
- Die Gesamtzahl der an Clients gesendeten Bytes.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- Die Anzahl der Antworten mit den Statuscodes 1xx, 2xx, 3xx, 4xx und 5xx.
- miss
- Die Anzahl der Cache-Misses.
- bypass
- Die Anzahl der Cache-Bypasses.
- expired
- Die Anzahl der abgelaufenen Caches.
- stale
- Die Anzahl der veralteten Caches.
- updating
- Die Anzahl der aktualisierenden Caches.
- revalidated
- Die Anzahl der revalidierten Caches.
- hit
- Die Anzahl der Cache-Treffer.
- scarce
- Die Anzahl der knappen Caches.
- requestMsecCounter
- Die Anzahl der akkumulierten Verarbeitungszeiten von Anfragen in Millisekunden.
- requestMsec
- Der Durchschnitt der Verarbeitungszeiten von Anfragen in Millisekunden.
- requestMsecs
- times
- Die Zeiten in Millisekunden bei der Verarbeitung von Anfragen.
- msecs
- Die Verarbeitungszeiten von Anfragen in Millisekunden.
- requestBuckets
- msecs
- Die Bucket-Werte des Histogramms, die durch die Direktive
vhost_traffic_status_histogram_bucketsfestgelegt werden. - counters
- Die kumulierten Werte für den Grund, dass jeder Bucketwert größer oder gleich der Verarbeitungszeit der Anfrage ist.
- filterZones
- Es bietet die gleichen Felder wie
serverZones, mit dem Unterschied, dass Gruppennamen enthalten sind. - upstreamZones
- server
- Eine Adresse des Servers.
- requestCounter
- Die Gesamtzahl der an diesen Server weitergeleiteten Clientverbindungen.
- inBytes
- Die Gesamtzahl der von diesem Server empfangenen Bytes.
- outBytes
- Die Gesamtzahl der an diesen Server gesendeten Bytes.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- Die Anzahl der Antworten mit den Statuscodes 1xx, 2xx, 3xx, 4xx und 5xx.
- requestMsecCounter
- Die Anzahl der akkumulierten Verarbeitungszeiten von Anfragen, einschließlich Upstream, in Millisekunden.
- requestMsec
- Der Durchschnitt der Verarbeitungszeiten von Anfragen, einschließlich Upstream, in Millisekunden.
- requestMsecs
- times
- Die Zeiten in Millisekunden bei der Verarbeitung von Anfragen.
- msecs
- Die Verarbeitungszeiten von Anfragen, einschließlich Upstream, in Millisekunden.
- requestBuckets
- msecs
- Die Bucket-Werte des Histogramms, die durch die Direktive
vhost_traffic_status_histogram_bucketsfestgelegt werden. - counters
- Die kumulierten Werte für den Grund, dass jeder Bucketwert größer oder gleich der Verarbeitungszeit der Anfrage, einschließlich Upstream, ist.
- responseMsecCounter
- Die Anzahl der akkumulierten Verarbeitungszeiten von nur Upstream-Antworten in Millisekunden.
- responseMsec
- Der Durchschnitt der Verarbeitungszeiten von nur Upstream-Antworten in Millisekunden.
- responseMsecs
- times
- Die Zeiten in Millisekunden bei der Verarbeitung von Anfragen.
- msecs
- Die Verarbeitungszeiten von nur Upstream-Antworten in Millisekunden.
- responseBuckets
- msecs
- Die Bucket-Werte des Histogramms, die durch die Direktive
vhost_traffic_status_histogram_bucketsfestgelegt werden. - counters
- Die kumulierten Werte für den Grund, dass jeder Bucketwert größer oder gleich der Verarbeitungszeit der nur Upstream-Antwort ist.
- weight
- Aktuelle
weight-Einstellung des Servers.
- Aktuelle
- maxFails
- Aktuelle
max_fails-Einstellung des Servers.
- Aktuelle
- failTimeout
- Aktuelle
fail_timeout-Einstellung des Servers.
- Aktuelle
- backup
- Aktuelle
backup-Einstellung des Servers.
- Aktuelle
- down
- Aktuelle
down-Einstellung des Servers. Grundsätzlich ist dies nur ein Markierung für den ngx_http_upstream_module, dass der Server nicht verfügbar ist (z.B.server backend3.example.com down), nicht der tatsächliche Zustand des Upstream-Servers. Es wird in den tatsächlichen Zustand geändert, wenn Sie die Upstream-Zonendirektive aktiviert haben.
- Aktuelle
- cacheZones
- maxSize
- Das Limit für die maximale Größe des im Konfigurationsdatei angegebenen Caches. Wenn
max_sizein der Direktiveproxy_cache_pathnicht angegeben ist, wird der systemabhängige WertNGX_MAX_OFF_T_VALUEstandardmäßig zugewiesen. Mit anderen Worten, dieser Wert stammt von NGINX, nicht von dem, was ich angegeben habe.
- Das Limit für die maximale Größe des im Konfigurationsdatei angegebenen Caches. Wenn
- usedSize
- Die aktuelle Größe des Caches. Dieser Wert wird von NGINX wie der oben angegebene
maxSize-Wert übernommen.
- Die aktuelle Größe des Caches. Dieser Wert wird von NGINX wie der oben angegebene
- inBytes
- Die Gesamtzahl der von dem Cache empfangenen Bytes.
- outBytes
- Die Gesamtzahl der vom Cache gesendeten Bytes.
- responses
- miss
- Die Anzahl der Cache-Misses.
- bypass
- Die Anzahl der Cache-Bypasses.
- expired
- Die Anzahl der abgelaufenen Caches.
- stale
- Die Anzahl der veralteten Caches.
- updating
- Die Anzahl der aktualisierenden Caches.
- revalidated
- Die Anzahl der revalidierten Caches.
- hit
- Die Anzahl der Cache-Treffer.
- scarce
- Die Anzahl der knappen Caches.
Json verwendet von Kontrolle
/{status_uri}/control?cmd=reset&...
/{status_uri}/control?cmd=delete&...
- processingReturn
- Das Ergebnis von wahr oder falsch.
- processingCommandString
- Die angeforderte Befehlszeichenfolge.
- processingGroupString
- Die angeforderte Gruppenzeichenfolge.
- processingZoneString
- Die angeforderte Zonenzeichenfolge.
- processingCounts
- Die tatsächliche Anzahl der Verarbeitungen.
Variablen
Die folgenden eingebetteten Variablen werden bereitgestellt:
- $vts_request_counter
- Die Gesamtzahl der von Clients erhaltenen Anfragen.
- $vts_in_bytes
- Die Gesamtzahl der von Clients empfangenen Bytes.
- $vts_out_bytes
- Die Gesamtzahl der an Clients gesendeten Bytes.
- $vts_1xx_counter
- Die Anzahl der Antworten mit Statuscodes 1xx.
- $vts_2xx_counter
- Die Anzahl der Antworten mit Statuscodes 2xx.
- $vts_3xx_counter
- Die Anzahl der Antworten mit Statuscodes 3xx.
- $vts_4xx_counter
- Die Anzahl der Antworten mit Statuscodes 4xx.
- $vts_5xx_counter
- Die Anzahl der Antworten mit Statuscodes 5xx.
- $vts_cache_miss_counter
- Die Anzahl der Cache-Misses.
- $vts_cache_bypass_counter
- Die Anzahl der Cache-Bypasses.
- $vts_cache_expired_counter
- Die Anzahl der abgelaufenen Caches.
- $vts_cache_stale_counter
- Die Anzahl der veralteten Caches.
- $vts_cache_updating_counter
- Die Anzahl der aktualisierenden Caches.
- $vts_cache_revalidated_counter
- Die Anzahl der revalidierten Caches.
- $vts_cache_hit_counter
- Die Anzahl der Cache-Treffer.
- $vts_cache_scarce_counter
- Die Anzahl der knappen Caches.
- $vts_request_time_counter
- Die Anzahl der akkumulierten Verarbeitungszeiten von Anfragen.
- $vts_request_time
- Der Durchschnitt der Verarbeitungszeiten von Anfragen.
Limit
Es ist möglich, den gesamten Verkehr pro Host mit der Direktive vhost_traffic_status_limit_traffic zu begrenzen. Es ist auch möglich, den gesamten Verkehr mit der Direktive vhost_traffic_status_limit_traffic_by_set_key zu begrenzen. Wenn das Limit überschritten wird, gibt der Server einen 503-Fehler (Service vorübergehend nicht verfügbar) als Antwort auf eine Anfrage zurück. Der Rückgabecode kann variabel sein.
Um den Verkehr für den Server zu begrenzen
http {
vhost_traffic_status_zone;
...
server {
server_name *.example.org;
vhost_traffic_status_limit_traffic in:64G;
vhost_traffic_status_limit_traffic out:1024G;
...
}
}
- Begrenzen Sie den gesamten Verkehr für
*.example.orgauf 64G und 1024G, jeweils. Es funktioniert individuell pro Domain, wenn die Direktivevhost_traffic_status_filter_by_hostaktiviert ist.
Um den Verkehr für den Filter zu begrenzen
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
...
server {
server_name example.org;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
vhost_traffic_status_limit_traffic_by_set_key FG@country::$server_name@US out:1024G;
vhost_traffic_status_limit_traffic_by_set_key FG@country::$server_name@CN out:2048G;
...
}
}
- Begrenzen Sie den gesamten Verkehr, der in die USA und nach China auf
example.orgzu 1024G und 2048G, jeweils.
Um den Verkehr für Upstream zu begrenzen
http {
vhost_traffic_status_zone;
...
upstream backend {
server 10.10.10.17:80;
server 10.10.10.18:80;
}
server {
server_name example.org;
location /backend {
vhost_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:512G;
vhost_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:1024G;
proxy_pass http://backend;
}
...
}
}
- Begrenzen Sie den gesamten Verkehr, der in den Upstream-Backend auf
example.orgzu 512G und 1024G pro Peer.
Hinweise: Verkehr ist die kumulative Übertragung oder Zähler, nicht eine Bandbreite.
Anwendungsfälle
Es ist möglich, die benutzerdefinierten individuellen Statistiken mit der Direktive vhost_traffic_status_filter_by_set_key zu berechnen.
Um den Verkehr für ein einzelnes Land mithilfe von GeoIP zu berechnen
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
...
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;
}
}
}
- Berechnen Sie den Verkehr für jedes einzelne Land der gesamten Servergruppen.
- Berechnen Sie den Verkehr für jedes einzelne Land jeder Servergruppe.
Grundsätzlich wird das Bild der Länderflaggen im HTML eingebaut. Das Bild der Länderflaggen wird aktiviert, wenn die Zeichenfolge country im Gruppennamen enthalten ist, der das zweite Argument der Direktive vhost_traffic_status_filter_by_set_key ist.
Um den Verkehr für ein einzelnes Speichervolume zu berechnen
http {
vhost_traffic_status_zone;
...
server {
...
location ~ ^/storage/(.+)/.*$ {
set $volume $1;
vhost_traffic_status_filter_by_set_key $volume storage::$server_name;
}
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Berechnen Sie den Verkehr für jedes einzelne Speichervolume, das durch den regulären Ausdruck der Standortdirektive übereinstimmt.
Um den Verkehr für einen einzelnen User-Agent zu berechnen
http {
vhost_traffic_status_zone;
map $http_user_agent $filter_user_agent {
default 'unknown';
~iPhone ios;
~Android android;
~(MSIE|Mozilla) windows;
}
vhost_traffic_status_filter_by_set_key $filter_user_agent agent::*;
...
server {
...
vhost_traffic_status_filter_by_set_key $filter_user_agent agent::$server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Berechnen Sie den Verkehr für jeden einzelnen
http_user_agent.
Um den Verkehr für detaillierte HTTP-Statuscodes zu berechnen
http {
vhost_traffic_status_zone;
server {
...
vhost_traffic_status_filter_by_set_key $status $server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Berechnen Sie den Verkehr für detaillierte
HTTP-Statuscodes.
Hinweise: Die $status Variable ist in NGINX-(1.3.2, 1.2.2) verfügbar.
Um den Verkehr für dynamisches DNS zu berechnen
Wenn die Domain mehrere DNS A-Records hat, können Sie den Verkehr für einzelne IPs der Domain mithilfe der Filterfunktion oder einer Variablen in proxy_pass berechnen.
http {
vhost_traffic_status_zone;
upstream backend {
elb.example.org:80;
}
...
server {
...
location /backend {
vhost_traffic_status_filter_by_set_key $upstream_addr upstream::backend;
proxy_pass backend;
}
}
}
- Berechnen Sie den Verkehr für einzelne IPs der Domain
elb.example.org. Wennelb.example.orgmehrere DNS A-Records hat, werden alle IPs infilterZonesangezeigt. In den obigen Einstellungen fragt NGINX beim Start oder beim Neuladen seiner Konfiguration einen DNS-Server ab, um die Domain aufzulösen, und die DNS A-Records werden im Speicher zwischengespeichert. Daher ändern sich die DNS A-Records im Speicher nicht, selbst wenn die DNS A-Records vom DNS-Administrator geändert werden, es sei denn, NGINX wird neu gestartet oder die Konfiguration wird neu geladen.
http {
vhost_traffic_status_zone;
resolver 10.10.10.53 valid=10s
...
server {
...
location /backend {
set $backend_server elb.example.org;
proxy_pass http://$backend_server;
}
}
}
- Berechnen Sie den Verkehr für einzelne IPs der Domain
elb.example.org. Wenn sich der DNS A-Record vonelb.example.orgändert, werden sowohl die alte IP als auch die neue IP in::nogroupsangezeigt. Im Gegensatz zur ersten Upstream-Gruppeneinstellung funktioniert die zweite Einstellung gut, selbst wenn die DNS A-Records vom DNS-Administrator geändert werden.
Hinweise: Bitte weitere Details zu NGINX DNS siehe die dns-service-discovery-nginx-plus.
Um den Verkehr außer für die Statusseite zu berechnen
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Die
/status-URI wird von der Berechnung des Statusverkehrs und der Begrenzungsfunktion ausgeschlossen. Siehe die folgenden Direktiven: - vhost_traffic_status_bypass_limit
- vhost_traffic_status_bypass_stats
Um Statistiken dauerhaft zu speichern
http {
vhost_traffic_status_zone;
vhost_traffic_status_dump /var/log/nginx/vts.db;
...
server {
...
}
}
- Die Direktive
vhost_traffic_status_dumpspeichert Statistiken dauerhaft, selbst wenn das System neu gestartet oder NGINX neu gestartet wurde. Bitte siehe die vhost_traffic_status_dump Direktive für die detaillierte Verwendung.
Anpassung
Um nach der Installation des Moduls anzupassen
-
Sie müssen die
{{uri}}-Zeichenfolge in status.template.html wie folgt ändern:shell> vi share/status.template.htmlvar vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000; -
Und dann, passen Sie status.template.html an und kopieren Sie es in das Stammverzeichnis des Servers wie folgt:
shell> cp share/status.template.html /usr/share/nginx/html/status.html -
Konfigurieren Sie
nginx.confserver { server_name example.org; root /usr/share/nginx/html; # Leitet Anfragen für / auf /status.html um location = / { return 301 /status.html; } location = /status.html {} # Alles, was mit /status beginnt (außer /status.html), wird # vom Status-Handler verarbeitet location /status { vhost_traffic_status_display; vhost_traffic_status_display_format json; } } -
Greifen Sie auf Ihr HTML zu.
http://example.org/status.html
Um vor der Installation des Moduls anzupassen
-
Ändern Sie
share/status.template.html(Ändern Sie nicht die{{uri}}-Zeichenfolge) -
Erstellen Sie die
ngx_http_vhost_traffic_status_module_html.hwie folgt neu:shell> cd util shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_vhost_traffic_status_module_html.h -
Fügen Sie das Modul zur Build-Konfiguration hinzu, indem Sie
--add-module=/path/to/nginx-module-vtshinzufügen. -
Bauen Sie die NGINX-Binärdatei.
-
Installieren Sie die NGINX-Binärdatei.
React-Dashboard
Ein alternatives React-basiertes Dashboard ist im Verzeichnis front/ verfügbar. Es ruft Daten von der vorhandenen /status/format/json API ab und rendert die gleichen Tabellen wie die integrierte HTML-Seite.
Voraussetzungen
- Node.js >= 20.19 (oder >= 22.12)
- npm
Über NGINX bereitstellen
Fügen Sie den folgenden location-Block neben der vorhandenen /status-Konfiguration hinzu:
location = /status/dashboard {
return 301 /status/dashboard/;
}
location /status/dashboard/ {
alias /path/to/nginx-module-vts/front/dist/;
index index.html;
}
Nach dem Neuladen von NGINX ist das React-Dashboard unter /status/dashboard verfügbar.
Entwicklung
shell> make front-dev
Der Vite-Entwicklungsserver leitet /status/format/json-Anfragen an http://localhost:80 weiter, sodass das Dashboard gegen eine laufende NGINX-Instanz entwickelt werden kann.
Bereinigen
shell> make front-clean
Entfernt front/dist/ und front/node_modules/.
Direktiven

vhost_traffic_status
| - | - |
|---|---|
| Syntax | vhost_traffic_status \<on|off> |
| Standard | aus |
| Kontext | http, server, location |
Beschreibung: Aktiviert oder deaktiviert die Funktionsweise des Moduls. Wenn Sie die Direktive vhost_traffic_status_zone festlegen, wird sie automatisch aktiviert.
vhost_traffic_status_zone
| - | - |
|---|---|
| Syntax | vhost_traffic_status_zone [shared:name:size] |
| Standard | shared:vhost_traffic_status:1m |
| Kontext | http |
Beschreibung: Legt die Parameter für eine gemeinsame Speicherzone fest, die Zustände für verschiedene Schlüssel speichert. Der Cache wird zwischen allen Arbeitsprozessen geteilt. In den meisten Fällen erhöht sich die vom nginx-module-vts verwendete Größe des gemeinsamen Speichers nicht erheblich. Die Größe des gemeinsamen Speichers erhöht sich erheblich, wenn die Direktive vhost_traffic_status_filter_by_set_key verwendet wird, aber wenn die Schlüssel des Filters fest sind (z.B. die Gesamtzahl der Ländercodes beträgt etwa 240), erhöht sie sich nicht kontinuierlich.
Wenn Sie die Direktive vhost_traffic_status_filter_by_set_key verwenden, setzen Sie sie wie folgt:
- Setzen Sie die gemeinsame Speichergröße standardmäßig auf mehr als 32M.
(
vhost_traffic_status_zone shared:vhost_traffic_status:32m) - Wenn die Meldung (
"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone") im error_log ausgegeben wird, erhöhen Sie sie auf mehr als (usedSize * 2).
vhost_traffic_status_dump
| - | - |
|---|---|
| Syntax | vhost_traffic_status_dump path [period] |
| Standard | - |
| Kontext | http |
Beschreibung: Aktiviert das Dumpen und Wiederherstellen von Statistiken. Der path ist ein Speicherort zum Dumpen der Statistiken. (z.B. /var/log/nginx/vts.db) Der period ist eine Backup-Zykluszeit. (Standard: 60s) Es wird sofort gesichert, unabhängig vom Backup-Zyklus, wenn NGINX durch ein Signal (SIGKILL) beendet wird.
vhost_traffic_status_display
| - | - |
|---|---|
| Syntax | vhost_traffic_status_display |
| Standard | - |
| Kontext | http, server, location |
Beschreibung: Aktiviert oder deaktiviert den Anzeigehandler des Moduls.
vhost_traffic_status_display_format
| - | - |
|---|---|
| Syntax | vhost_traffic_status_display_format \<json|html|jsonp|prometheus> |
| Standard | json |
| Kontext | http, server, location |
Beschreibung: Legt das Ausgabeformat des Anzeigehandlers fest. Wenn Sie json festlegen, wird mit einem JSON-Dokument geantwortet. Wenn Sie html festlegen, wird mit dem integrierten Live-Dashboard in HTML geantwortet. Wenn Sie jsonp festlegen, wird mit einer JSONP-Callback-Funktion geantwortet (Standard: ngx_http_vhost_traffic_status_jsonp_callback). Wenn Sie prometheus festlegen, wird mit einem Prometheus Dokument geantwortet.
vhost_traffic_status_display_jsonp
| - | - |
|---|---|
| Syntax | vhost_traffic_status_display_jsonp callback |
| Standard | ngx_http_vhost_traffic_status_jsonp_callback |
| Kontext | http, server, location |
Beschreibung: Legt den Callback-Namen für die JSONP fest.
vhost_traffic_status_display_sum_key
| - | - |
|---|---|
| Syntax | vhost_traffic_status_display_sum_key name |
| Standard | * |
| Kontext | http, server, location |
Beschreibung: Legt die Summen-Schlüsselzeichenfolge im JSON-Feld serverZones fest. Der Standard-Summen-Schlüssel ist das "*".
vhost_traffic_status_filter
| - | - |
|---|---|
| Syntax | vhost_traffic_status_filter \<on|off> |
| Standard | an |
| Kontext | http, server, location |
Beschreibung: Aktiviert oder deaktiviert die Filterfunktionen.
vhost_traffic_status_filter_by_host
| - | - |
|---|---|
| Syntax | vhost_traffic_status_filter_by_host \<on|off> |
| Standard | aus |
| Kontext | http, server, location |
Beschreibung: Aktiviert oder deaktiviert die Schlüssel nach dem Host-Headerfeld. Wenn Sie on festlegen und die Direktive server_name von NGINX mehrere oder Wildcard-Namen festlegt, die mit einem Sternchen beginnen, z.B. ".example.org" und an den Server mit Hostnamen wie (a|b|c).example.org oder .example.org anfordern, wird das JSON serverZones wie folgt ausgegeben:
server {
server_name *.example.org;
vhost_traffic_status_filter_by_host on;
...
}
...
"serverZones": {
"a.example.org": {
...
},
"b.example.org": {
...
},
"c.example.org": {
...
}
...
},
...
Es bietet die gleiche Funktion wie die Festlegung von vhost_traffic_status_filter_by_set_key $host.
vhost_traffic_status_filter_by_set_key
| - | - |
|---|---|
| Syntax | vhost_traffic_status_filter_by_set_key key [name] |
| Standard | - |
| Kontext | http, server, location |
Beschreibung: Aktiviert die Schlüssel durch benutzerdefinierte Variablen. Der key ist eine Schlüsselzeichenfolge zur Berechnung des Verkehrs. Der name ist eine Gruppenzeichenfolge zur Berechnung des Verkehrs. Der key und der name können Variablen wie $host, $server_name enthalten. Die Gruppe des name gehört zu filterZones, wenn sie angegeben ist. Die Gruppe des key gehört zu serverZones, wenn kein zweites Argument name angegeben ist. Das Beispiel mit dem GeoIP-Modul ist wie folgt:
server {
server_name example.org;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
...
}
...
"serverZones": {
...
},
"filterZones": {
"country::example.org": {
"KR": {
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
},
"US": {
...
},
...
},
...
},
...
vhost_traffic_status_filter_check_duplicate
| - | - |
|---|---|
| Syntax | vhost_traffic_status_filter_check_duplicate \<on|off> |
| Standard | an |
| Kontext | http, server, location |
Beschreibung: Aktiviert oder deaktiviert die Duplikatsprüfung von vhost_traffic_status_filter_by_set_key. Es wird nur einer der doppelten Werte (key + name) in jeder Direktive (http, server, location) verarbeitet, wenn diese Option aktiviert ist.
vhost_traffic_status_filter_max_node
| - | - |
|---|---|
| Syntax | vhost_traffic_status_filter_max_node number [string ...] |
| Standard | 0 |
| Kontext | http |
Beschreibung: Aktiviert die Begrenzung der Filtergröße mit den angegebenen number und string-Werten. Wenn die number überschritten wird, werden die vorhandenen Knoten gemäß dem LRU-Algorithmus gelöscht. Das number-Argument ist die Größe des Knotens, die begrenzt werden soll. Der Standardwert 0 begrenzt keine Filter. Ein Knoten ist ein Objekt in filterZones im JSON-Dokument. Die string-Argumente sind die Übereinstimmungszeichenfolgen für den Gruppennamen, der durch die Direktive vhost_traffic_status_filter_by_set_key festgelegt wird. Selbst wenn nur der erste Teil übereinstimmt, ist die Übereinstimmung erfolgreich, ähnlich wie bei regulären Ausdrücken /^string.*/. Standardmäßig, wenn Sie keine string-Argumente festlegen, wird dies auf alle Filter angewendet.
Beispiele:
$ vi nginx.conf
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
# Alle Filter sind auf insgesamt 16 Knoten begrenzt.
# vhost_traffic_status_filter_max_node 16
# Die Gruppenzeichenfolgenmuster `/^uris.*/` und `/^client::ports.*/` sind auf insgesamt 64 Knoten begrenzt.
vhost_traffic_status_filter_max_node 16 uris client::ports;
...
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $uri uris::$server_name;
vhost_traffic_status_filter_by_set_key $remote_port client::ports::$server_name;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
}
}
$ for i in {0..1000}; do curl -H 'Host: example.org' -i "http://localhost:80/test$i"; done

Im obigen Beispiel sind die Gruppenzeichenfolgenmuster /^uris.*/ und /^client::ports.*/ auf insgesamt 16 Knoten begrenzt. Die anderen Filter wie country::.* sind nicht begrenzt.
vhost_traffic_status_limit
| - | - |
|---|---|
| Syntax | vhost_traffic_status_limit \<on|off> |
| Standard | an |
| Kontext | http, server, location |
Beschreibung: Aktiviert oder deaktiviert die Begrenzungsfunktionen.
vhost_traffic_status_limit_traffic
| - | - |
|---|---|
| Syntax | vhost_traffic_status_limit_traffic member:size [code] |
| Standard | - |
| Kontext | http, server, location |
Beschreibung: Aktiviert die Verkehrsbegrenzung für das angegebene member. Das member ist eine Mitgliederzeichenfolge zur Begrenzung des Verkehrs. Die size ist eine Größe (k/m/g), um den Verkehr zu begrenzen. Der code ist ein Code, der als Antwort auf abgelehnte Anfragen zurückgegeben wird. (Standard: 503)
Die verfügbaren member Zeichenfolgen sind wie folgt:
* request
* Die Gesamtzahl der von Clients erhaltenen Anfragen.
* in
* Die Gesamtzahl der von Clients empfangenen Bytes.
* out
* Die Gesamtzahl der an Clients gesendeten Bytes.
* 1xx
* Die Anzahl der Antworten mit Statuscodes 1xx.
* 2xx
* Die Anzahl der Antworten mit Statuscodes 2xx.
* 3xx
* Die Anzahl der Antworten mit Statuscodes 3xx.
* 4xx
* Die Anzahl der Antworten mit Statuscodes 4xx.
* 5xx
* Die Anzahl der Antworten mit Statuscodes 5xx.
* cache_miss
* Die Anzahl der Cache-Misses.
* cache_bypass
* Die Anzahl der Cache-Bypasses.
* cache_expired
* Die Anzahl der abgelaufenen Caches.
* cache_stale
* Die Anzahl der veralteten Caches.
* cache_updating
* Die Anzahl der aktualisierenden Caches.
* cache_revalidated
* Die Anzahl der revalidierten Caches.
* cache_hit
* Die Anzahl der Cache-Treffer.
* cache_scarce
* Die Anzahl der knappen Caches.
vhost_traffic_status_limit_traffic_by_set_key
| - | - |
|---|---|
| Syntax | vhost_traffic_status_limit_traffic_by_set_key key member:size [code] |
| Standard | - |
| Kontext | http, server, location |
Beschreibung: Aktiviert die Verkehrsbegrenzung für den angegebenen key und member. Der key ist eine Schlüsselzeichenfolge zur Begrenzung des Verkehrs. Das member ist eine Mitgliederzeichenfolge zur Begrenzung des Verkehrs. Die size ist eine Größe (k/m/g), um den Verkehr zu begrenzen. Der code ist ein Code, der als Antwort auf abgelehnte Anfragen zurückgegeben wird. (Standard: 503)
Die key Syntax ist wie folgt:
* group@[subgroup@]name
Die verfügbaren group Zeichenfolgen sind wie folgt:
* NO
* Die Gruppe des Servers.
* UA
* Die Gruppe des Upstream allein.
* UG
* Die Gruppe des Upstream-Gruppe. (verwenden Sie subgroup)
* CC
* Die Gruppe des Caches.
* FG
* Die Gruppe des Filters. (verwenden Sie subgroup)
Die verfügbaren member Zeichenfolgen sind wie folgt:
* request
* Die Gesamtzahl der von Clients erhaltenen Anfragen.
* in
* Die Gesamtzahl der von Clients empfangenen Bytes.
* out
* Die Gesamtzahl der an Clients gesendeten Bytes.
* 1xx
* Die Anzahl der Antworten mit Statuscodes 1xx.
* 2xx
* Die Anzahl der Antworten mit Statuscodes 2xx.
* 3xx
* Die Anzahl der Antworten mit Statuscodes 3xx.
* 4xx
* Die Anzahl der Antworten mit Statuscodes 4xx.
* 5xx
* Die Anzahl der Antworten mit Statuscodes 5xx.
* cache_miss
* Die Anzahl der Cache-Misses.
* cache_bypass
* Die Anzahl der Cache-Bypasses.
* cache_expired
* Die Anzahl der abgelaufenen Caches.
* cache_stale
* Die Anzahl der veralteten Caches.
* cache_updating
* Die Anzahl der aktualisierenden Caches.
* cache_revalidated
* Die Anzahl der revalidierten Caches.
* cache_hit
* Die Anzahl der Cache-Treffer.
* cache_scarce
* Die Anzahl der knappen Caches.
Das member ist dasselbe wie die Direktive vhost_traffic_status_limit_traffic.
vhost_traffic_status_limit_check_duplicate
| - | - |
|---|---|
| Syntax | vhost_traffic_status_limit_check_duplicate \<on|off> |
| Standard | an |
| Kontext | http, server, location |
Beschreibung: Aktiviert oder deaktiviert die Duplikatsprüfung von vhost_traffic_status_limit_by_set_key. Es wird nur einer der doppelten Werte (member | key + member) in jeder Direktive (http, server, location) verarbeitet, wenn diese Option aktiviert ist.
vhost_traffic_status_set_by_filter
| - | - |
|---|---|
| Syntax | vhost_traffic_status_set_by_filter $variable group/zone/name |
| Standard | - |
| Kontext | http, server, location, if |
Beschreibung: Ruft den angegebenen Statuswert ab, der im gemeinsamen Speicher gespeichert ist. Es können fast alle Statuswerte abgerufen werden, und der erhaltene Wert wird in $variable gespeichert, das das erste Argument ist.
- group
- server
- filter
- upstream@alone
- upstream@group
- cache
- zone
- server
- name
- filter
- filter_group@name
- upstream@group
- upstream_group@name
- upstream@alone
- @name
- cache
- name
- name
- requestCounter
- Die Gesamtzahl der von Clients erhaltenen Anfragen.
- requestMsecCounter
- Die Anzahl der akkumulierten Verarbeitungszeiten von Anfragen in Millisekunden.
- requestMsec
- Der Durchschnitt der Verarbeitungszeiten von Anfragen in Millisekunden.
- responseMsecCounter
- Die Anzahl der akkumulierten Verarbeitungszeiten von nur Upstream-Antworten in Millisekunden.
- responseMsec
- Der Durchschnitt der Verarbeitungszeiten von nur Upstream-Antworten in Millisekunden.
- inBytes
- Die Gesamtzahl der von Clients empfangenen Bytes.
- outBytes
- Die Gesamtzahl der an Clients gesendeten Bytes.
- 1xx, 2xx, 3xx, 4xx, 5xx
- Die Anzahl der Antworten mit Statuscodes 1xx, 2xx, 3xx, 4xx und 5xx.
- cacheMaxSize
- Das Limit für die maximale Größe des Caches, das in der Konfiguration angegeben ist.
- cacheUsedSize
- Die aktuelle Größe des Caches.
- cacheMiss
- Die Anzahl der Cache-Misses.
- cacheBypass
- Die Anzahl der Cache-Bypasses.
- cacheExpired
- Die Anzahl der abgelaufenen Caches.
- cacheStale
- Die Anzahl der veralteten Caches.
- cacheUpdating
- Die Anzahl der aktualisierenden Caches.
- cacheRevalidated
- Die Anzahl der revalidierten Caches.
- cacheHit
- Die Anzahl der Cache-Treffer.
- cacheScarce
- Die Anzahl der knappen Caches.
- weight
- Aktuelle Gewichtseinstellung des Servers.
- maxFails
- Aktuelle max_fails-Einstellung des Servers.
- failTimeout
- Aktuelle fail_timeout-Einstellung des Servers.
- backup
- Aktuelle backup-Einstellung des Servers. (0|1)
- down
- Aktuelle down-Einstellung des Servers. (0|1)
Hinweise: Der name ist groß- und kleinschreibungsempfindlich. Alle Rückgabewerte haben den Typ Integer.
Beispiele:
* requestCounter in serverZones
* vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter
* requestCounter in filterZones
* vhost_traffic_status_set_by_filter $requestCounter filter/country::example.org@KR/requestCounter
* requestCounter in upstreamZones
* vhost_traffic_status_set_by_filter $requestCounter upstream@group/[email protected]:80/requestCounter
* requestCounter in upstreamZones::nogroups
* vhost_traffic_status_set_by_filter $requestCounter upstream@alone/10.10.10.11:80/requestCounter
* cacheHit in cacheZones
* vhost_traffic_status_set_by_filter $cacheHit cache/my_cache_name/cacheHit
vhost_traffic_status_average_method
| - | - |
|---|---|
| Syntax | vhost_traffic_status_average_method \<AMM|WMA> [period] |
| Standard | AMM 60s |
| Kontext | http, server, location |
Beschreibung: Legt die Methode fest, die eine Formel zur Berechnung des Durchschnitts der Verarbeitungszeiten von Antworten ist. Der period ist eine effektive Zeit der Werte, die für die Durchschnittsberechnung verwendet werden. (Standard: 60s) Wenn period auf 0 gesetzt wird, wird die effektive Zeit ignoriert. In diesem Fall wird der letzte Durchschnittswert angezeigt, selbst wenn keine Anfragen vorliegen und nach Ablauf der Zeit. Die entsprechenden Werte sind requestMsec und responseMsec im JSON.
- AMM
- Das AMM ist das arithmetische Mittel.
- WMA
- Das WMA ist das gewichtete gleitende Mittel.
vhost_traffic_status_histogram_buckets
| - | - |
|---|---|
| Syntax | vhost_traffic_status_histogram_buckets second ... |
| Standard | - |
| Kontext | http, server, location |
Beschreibung: Legt die Beobachtungs-Buckets fest, die in den Histogrammen verwendet werden sollen. Standardmäßig funktioniert es nicht, wenn Sie diese Direktive nicht festlegen. Der second kann mit einer Mindestgröße von 0.001 (1ms) in Dezimalstellen ausgedrückt werden. Die maximale Größe der Buckets beträgt 32. Wenn dieser Wert für Sie nicht ausreicht, ändern Sie den NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN in der src/ngx_http_vhost_traffic_status_node.h.
Beispiele:
* vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1 0.5 1 5 10
* Die Beobachtungs-Buckets sind [5ms 10ms 50ms 100ms 500ms 1s 5s 10s].
* vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1
* Die Beobachtungs-Buckets sind [5ms 10ms 50ms 100ms].
Hinweise: Standardmäßig funktioniert die Histogrammstatistik nicht, wenn Sie diese Direktive nicht festlegen. Die wiederhergestellten Histogramme durch die Direktive vhost_traffic_status_dump sind nicht von Änderungen an den Buckets durch die Direktive vhost_traffic_status_histogram_buckets betroffen. Daher müssen Sie zuerst die Zone oder die Dump-Datei löschen, bevor Sie die Buckets durch die Direktive vhost_traffic_status_histogram_buckets ändern. Ähnlich wie oben, löschen Sie die Dump-Datei, wenn Sie das Histogramm zum ersten Mal verwenden.
vhost_traffic_status_bypass_limit
| - | - |
|---|---|
| Syntax | vhost_traffic_status_bypass_limit \<on|off> |
| Standard | aus |
| Kontext | http, server, location |
Beschreibung: Aktiviert oder deaktiviert das Umgehen der Direktiven vhost_traffic_status_limit. Die Begrenzungsfunktionen werden umgangen, wenn diese Option aktiviert ist. Dies ist hauptsächlich nützlich, wenn Sie die Status-Webseite wie /status unabhängig von den Direktiven vhost_traffic_status_limit verbinden möchten, wie folgt:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
vhost_traffic_status_bypass_stats
| - | - |
|---|---|
| Syntax | vhost_traffic_status_bypass_stats \<on|off> |
| Standard | aus |
| Kontext | http, server, location |
Beschreibung: Aktiviert oder deaktiviert das Umgehen von vhost_traffic_status. Die Funktionen zur Statusstatistik des Verkehrs werden umgangen, wenn diese Option aktiviert ist. Mit anderen Worten, es wird von den Verkehrsstatusstatistiken ausgeschlossen. Dies ist hauptsächlich nützlich, wenn Sie Ihre Anfrage in der Status-Webseite wie /status ignorieren möchten, wie folgt:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
vhost_traffic_status_stats_by_upstream
| - | - |
|---|---|
| Syntax | vhost_traffic_status_stats_by_upstream \<on|off> |
| Standard | an |
| Kontext | http |
Beschreibung: Aktiviert oder deaktiviert die Statistiken für upstreamZone. Die upstreamZone in den Funktionen zur Verkehrsstatusstatistik wird umgangen, wenn diese Option deaktiviert ist. Mit anderen Worten, es wird von den Verkehrsstatusstatistiken ausgeschlossen. Dies ist hauptsächlich nützlich, wenn Sie die Statistiksammlung für Upstream-Server deaktivieren möchten, um die CPU-Auslastung zu reduzieren.
http {
vhost_traffic_status_zone;
vhost_traffic_status_stats_by_upstream off;
proxy_cache_path /var/cache/nginx keys_zone=zone1:1m max_size=1g inactive=24h;
upstream backend {
...
}
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
location /backend {
proxy_cache zone1;
proxy_pass http://backend;
}
}
}
vhost_traffic_status_measure_status_codes
Ermöglicht das Verfolgen spezifischer HTTP-Statuscodes oder aller Statuscodes im Vhost Traffic Status-Modul.
| - | - |
|---|---|
| Syntax | vhost_traffic_status_measure_status_codes [all] [status_code1] [status_code2] ... |
| Standard | aus |
| Kontext | http |
Parameter
status_code1, status_code2, ...: Spezifische HTTP-Statuscodes, die verfolgt werden sollen (100-599)all: Alle HTTP-Statuscodes verfolgen
Beispiele
Verfolgen spezifischer Statuscodes:
vhost_traffic_status_measure_status_codes 200 404 500;
Alle Statuscodes verfolgen:
vhost_traffic_status_measure_status_codes all;
Beschreibung
- Standardmäßig ist kein spezifisches Statuscode-Tracking aktiviert
- Statuscodes müssen in aufsteigender Reihenfolge sein
- Nur gültige HTTP-Statuscodes zwischen 100 und 599 werden akzeptiert
- Bei Verwendung von
allwird jeder Statuscode verfolgt
Veröffentlichungen
Um eine Veröffentlichung zu erstellen, erstellen Sie einen Changelog-Eintrag PR mit git-chglog
version="v0.2.0"
git checkout -b "cut-${version}"
git-chglog -o CHANGELOG.md --next-tag "${version}"
git add CHANGELOG.md