vts
# *vts*: NGINX Modul für den virtuellen Host-Traffic-Status
## 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
=== "CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023+"
```bash
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-vts
```
=== "CentOS/RHEL 7 und Amazon Linux 2"
```bash
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:
```nginx
load_module modules/ngx_http_vhost_traffic_status_module.so;
Dieses Dokument beschreibt das nginx-module-vts v0.2.6, das am 29. Juli 2026 veröffentlicht wurde.
Nginx Modul für den virtuellen Host-Traffic-Status
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 hört.
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 von virtuellen Hosts bietet. Es enthält den aktuellen Status wie Server, Upstreams und Caches. Dies ist ähnlich wie die 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 die 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, Uptime ((nowMsec - loadMsec)/1000)
- nowMsec, loadMsec sind 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
- Traffic (in/out) und Anfragen- und Antwortanzahlen sowie Cache-Hit-Verhältnis pro Serverzone
- Gesamter Traffic (In/Out) und Anfragen- und Antwortanzahlen (Der Zonenname ist
*) und Hit-Verhältnis - filterZones
- Traffic (in/out) und Anfragen- und Antwortanzahlen sowie Cache-Hit-Verhältnis pro Serverzone, gefiltert durch die Direktive
vhost_traffic_status_filter_by_set_key - Gesamter Traffic (In/Out) und Anfragen- und Antwortanzahlen (Der Zonenname ist
*) und Hit-Verhältnis, gefiltert durch die Direktivevhost_traffic_status_filter_by_set_key - upstreamZones
- Traffic (in/out) und Anfragen- und Antwortanzahlen pro Server in jeder Upstream-Gruppe
- Aktuelle Einstellungen (weight, maxfails, failtimeout...) in nginx.conf
- cacheZones
- Traffic (in/out) und Größe (Kapazität/benutzt) und Hit-Verhältnis pro Cache-Zone bei Verwendung der proxy_cache-Direktive.
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 Traffic-Berechnung erfolgt wie folgt:
- ServerZones
- in += requested_bytes
- out += sent_bytes
- FilterZones
- in += requested_bytes über den Filter
- out += sent_bytes über den Filter
- UpstreamZones
- in += requested_bytes über die ServerZones
- out += sent_bytes über die ServerZones
- cacheZones
- in += requested_bytes über die ServerZones
- out += 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.
Caveats: Dieses Modul ist auf das Nginx-Protokollierungssystem angewiesen (NGX_HTTP_LOG_PHASE: letzte Phase des Nginx-HTTP), sodass der Traffic unter bestimmten Umständen von dem tatsächlichen Bandbreitentraffic abweichen kann. Websockets und abgebrochene Downloads können Ungenauigkeiten verursachen. Die Funktionsweise des Moduls ist unabhängig davon, ob die access_log-Direktive "ein" oder "aus" ist. Nochmals, dieses Modul funktioniert gut mit "access_log aus". Bei der Verwendung mehrerer Domains wird die erste Domain (links) der server_name-Direktive festgelegt. Wenn Sie dies nicht möchten, siehe die Direktiven vhost_traffic_status_filter_by_host, vhost_traffic_status_filter_by_set_key.
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, Traffic-Zonen ü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 ist, ist die Steuer-URI wie example.org/status/control.
Die verfügbaren Anfrageargumente sind wie folgt:
* cmd=\<status|reset|delete>
* status
* Gibt den Status der Traffic-Zonen im JSON-Format zurück, ähnlich wie status/format/json.
* reset
* Setzt die Traffic-Zonen zurück, ohne Knoten im gemeinsamen Speicher zu löschen. (= auf 0 zurücksetzen)
* delete
* Löscht die Traffic-Zonen im gemeinsamen Speicher. Bei erneuter Anfrage werden 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 Traffic-Zonen in Echtzeit zu erhalten
Dies ist ähnlich wie status/format/json, mit dem Unterschied, dass es jede Zone abrufen kann.
Um vollständige Zonen zu erhalten
- Es ist genau dasselbe wie
status/format/json. - /status/control?cmd=status&group=*
Um Gruppen-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 enthalten.
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 Traffic-Zonen 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-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 Traffic-Zonen 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-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 kann die Statuswerte in der NGINX-Konfiguration separat mit der Direktive vhost_traffic_status_set_by_filter abrufen. Es kann fast alle Statuswerte erfassen, 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/backend@10.10.10.11: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 siehe die Direktive vhost_traffic_status_set_by_filter für eine detaillierte Verwendung.
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 Konfigurationsfile angegebenen gemeinsamen Speichers. (Standard:
vhost_traffic_status)
- Der Name des im Konfigurationsfile angegebenen gemeinsamen Speichers. (Standard:
- maxSize
- Das Limit für die maximale Größe des im Konfigurationsfile 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 ermittelt werden: (usedSize / usedNode)
- serverZones
- requestCounter
- Die Gesamtzahl der von Clients empfangenen 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 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 aktualisierten Caches.
- revalidated
- Die Anzahl der revalidierten Caches.
- hit
- Die Anzahl der Cache-Hits.
- scarce
- Die Anzahl der knappen Caches.
- requestMsecCounter
- Die Anzahl der akkumulierten Anfrageverarbeitungszeit in Millisekunden.
- requestMsec
- Der Durchschnitt der Anfrageverarbeitungszeiten in Millisekunden.
- requestMsecs
- times
- Die Zeiten in Millisekunden bei der Anfrageverarbeitung.
- msecs
- Die Anfrageverarbeitungszeiten in Millisekunden.
- requestBuckets
- msecs
- Die Bucket-Werte des Histogramms, die durch die Direktive
vhost_traffic_status_histogram_bucketsfestgelegt werden. - counters
- Die kumulierten Werte, weil jeder Bucket-Wert größer oder gleich der Anfrageverarbeitungszeit 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 Statuscodes 1xx, 2xx, 3xx, 4xx und 5xx.
- requestMsecCounter
- Die Anzahl der akkumulierten Anfrageverarbeitungszeit einschließlich Upstream in Millisekunden.
- requestMsec
- Der Durchschnitt der Anfrageverarbeitungszeiten einschließlich Upstream in Millisekunden.
- requestMsecs
- times
- Die Zeiten in Millisekunden bei der Anfrageverarbeitung.
- msecs
- Die Anfrageverarbeitungszeiten 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, weil jeder Bucket-Wert größer oder gleich der Anfrageverarbeitungszeit einschließlich Upstream ist.
- responseMsecCounter
- Die Anzahl der akkumulierten nur Upstream-Antwortverarbeitungszeit in Millisekunden.
- responseMsec
- Der Durchschnitt der nur Upstream-Antwortverarbeitungszeiten in Millisekunden.
- responseMsecs
- times
- Die Zeiten in Millisekunden bei der Anfrageverarbeitung.
- msecs
- Die nur Upstream-Antwortverarbeitungszeiten in Millisekunden.
- responseBuckets
- msecs
- Die Bucket-Werte des Histogramms, die durch die Direktive
vhost_traffic_status_histogram_bucketsfestgelegt werden. - counters
- Die kumulierten Werte, weil jeder Bucket-Wert größer oder gleich der nur Upstream-Antwortverarbeitungszeit 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 Server des ngx_http_upstream_module (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 Konfigurationsfile angegebenen Caches. Wenn
max_sizein derproxy_cache_path-Direktive nicht 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 Konfigurationsfile angegebenen Caches. Wenn
- usedSize
- Die aktuelle Größe des Caches. Dieser Wert wird von NGINX wie der obige
maxSize-Wert entnommen.
- Die aktuelle Größe des Caches. Dieser Wert wird von NGINX wie der obige
- inBytes
- Die Gesamtzahl der von dem Cache empfangenen Bytes.
- outBytes
- Die Gesamtzahl der von dem 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 aktualisierten Caches.
- revalidated
- Die Anzahl der revalidierten Caches.
- hit
- Die Anzahl der Cache-Hits.
- 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
- Der angeforderte Befehlsstring.
- processingGroupString
- Der angeforderte Gruppenstring.
- processingZoneString
- Der angeforderte Zonenstring.
- processingCounts
- Die tatsächliche Verarbeitungsanzahl.
Variablen
Die folgenden eingebetteten Variablen werden bereitgestellt:
- $vts_request_counter
- Die Gesamtzahl der von Clients empfangenen 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 aktualisierten Caches.
- $vts_cache_revalidated_counter
- Die Anzahl der revalidierten Caches.
- $vts_cache_hit_counter
- Die Anzahl der Cache-Hits.
- $vts_cache_scarce_counter
- Die Anzahl der knappen Caches.
- $vts_request_time_counter
- Die Anzahl der akkumulierten Anfrageverarbeitungszeit.
- $vts_request_time
- Der Durchschnitt der Anfrageverarbeitungszeiten.
Limit
Es ist möglich, den gesamten Traffic pro Host mit der Direktive vhost_traffic_status_limit_traffic zu begrenzen. Es ist auch möglich, den gesamten Traffic mit der Direktive vhost_traffic_status_limit_traffic_by_set_key zu begrenzen. Wenn das Limit überschritten wird, gibt der Server den Fehler 503 (Service Temporarily Unavailable) als Antwort auf eine Anfrage zurück. Der Rückgabecode kann variabel sein.
Um Traffic für 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 Traffic für
*.example.orgauf 64G und 1024G. Es funktioniert individuell pro Domain, wenn die Direktivevhost_traffic_status_filter_by_hostaktiviert ist.
Um Traffic für 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 Traffic, der in die USA und nach China auf
example.orggeht, auf 1024G und 2048G.
Um Traffic 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@backend@10.10.10.17:80 in:512G;
vhost_traffic_status_limit_traffic_by_set_key UG@backend@10.10.10.18:80 in:1024G;
proxy_pass http://backend;
}
...
}
}
- Begrenzen Sie den gesamten Traffic, der in den Upstream-Backend auf
example.orggeht, auf 512G und 1024G pro Peer.
Caveats: Traffic ist die kumulative Übertragung oder Zählung, 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 Traffic für einzelne Länder mit 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 Traffic für einzelne Länder aller Servergruppen.
- Berechnen Sie den Traffic für einzelne Länder jeder Servergruppe.
Grundsätzlich ist das Länderflaggenbild im HTML integriert. Das Länderflaggenbild wird aktiviert, wenn der String country im Gruppennamen enthalten ist, der das zweite Argument der Direktive vhost_traffic_status_filter_by_set_key ist.
Um Traffic für einzelne Speichervolumen 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 Traffic für einzelne Speichervolumen, die durch reguläre Ausdrücke der Standortdirektive übereinstimmen.
Um Traffic für einzelne User-Agenten 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 Traffic für einzelne
http_user_agent
Um Traffic 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 Traffic für detaillierte
http status codes
Caveats: Die $status Variable ist in NGINX-(1.3.2, 1.2.2) verfügbar.
Um Traffic für dynamische DNS zu berechnen
Wenn die Domain mehrere DNS A-Einträge hat, können Sie den Traffic 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 Traffic für einzelne IPs der Domain
elb.example.org. Wennelb.example.orgmehrere DNS A-Einträge 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-Einträge werden im Speicher zwischengespeichert. Daher ändern sich die DNS A-Einträge im Speicher nicht, selbst wenn die DNS A-Einträge 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 Traffic für einzelne IPs der Domain
elb.example.org. Wenn der DNS A-Eintrag vonelb.example.orggeändert wird, 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-Einträge vom DNS-Administrator geändert werden.
Caveats: Für weitere Details zu NGINX DNS siehe die dns-service-discovery-nginx-plus.
Um Traffic 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 Traffic-Berechnung und der Limitfunktion 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 Direktive vhost_traffic_status_dump für eine detaillierte Verwendung.
Anpassung
Um nach der Installation des Moduls anzupassen
-
Sie müssen den
{{uri}}-String in status.template.html wie folgt in Ihre Status-URI ändern:shell> vi share/status.template.htmlvar vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000; -
Und dann, passen Sie an und kopieren Sie status.template.html 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 Statushandler 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 den{{uri}}-String) -
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. -
Erstellen Sie die NGINX-Binärdatei.
-
Installieren Sie die NGINX-Binärdatei.
React-Dashboard
Ein alternatives, auf React basierendes Dashboard ist im Verzeichnis front/ verfügbar. Es ruft Daten von der bestehenden /status/format/json API ab und rendert dieselben 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 bestehenden /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 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 wesentlich. 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 Standardgröße des gemeinsamen Speichers auf mehr als 32M.
(
vhost_traffic_status_zone shared:vhost_traffic_status:32m) - Wenn die Nachricht (
"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone") im error_log angezeigt 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 den Dump und die Wiederherstellung von Statistiken. Der path ist ein Speicherort für den Dump 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 den Summenschlüsselstring im JSON-Feld serverZones fest. Der Standard-Summenschlüsselstring 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 durch das Host-Header-Feld. Wenn Sie on festlegen und die server_name-Direktive von NGINX mehrere oder Platzhalternamen festlegt, die mit einem Sternchen beginnen, z.B. “.example.org” und an den Server mit einem Hostnamen wie (a|b|c).example.org oder .example.org anfordern, wird die 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 Direktive 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 ein Schlüsselstring zur Berechnung des Traffics. Der name ist ein Gruppenstring zur Berechnung des Traffics. Der key und der name können Variablen wie $host, $server_name enthalten. Die Gruppe des name gehört zu filterZones, wenn angegeben. Die Gruppe des key gehört zu serverZones, wenn das zweite Argument name nicht 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 unter Verwendung der angegebenen number und string-Werte. Wenn die number überschritten wird, werden die vorhandenen Knoten nach 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 Übereinstimmungsstrings für den Gruppenstring, 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 Gruppenstring-Muster `/^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

In dem obigen Beispiel sind die Gruppenstring-Muster /^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 Traffic-Begrenzung für das angegebene member. Das member ist ein Mitgliedsstring zur Begrenzung des Traffics. Die size ist eine Größe (k/m/g), um den Traffic zu begrenzen. Der code ist ein Code, der als Antwort auf abgelehnte Anfragen zurückgegeben wird. (Standard: 503)
Die verfügbaren member Strings sind wie folgt:
* request
* Die Gesamtzahl der von Clients empfangenen 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 aktualisierten Caches.
* cache_revalidated
* Die Anzahl der revalidierten Caches.
* cache_hit
* Die Anzahl der Cache-Hits.
* 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 Traffic-Begrenzung für das angegebene key und member. Der key ist ein Schlüsselstring zur Begrenzung des Traffics. Das member ist ein Mitgliedsstring zur Begrenzung des Traffics. Die size ist eine Größe (k/m/g), um den Traffic 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 Strings sind wie folgt:
* NO
* Die Gruppe des Servers.
* UA
* Die Gruppe des Upstream allein.
* UG
* Die Gruppe des Upstream-Gruppen. (verwenden Sie subgroup)
* CC
* Die Gruppe des Caches.
* FG
* Die Gruppe des Filters. (verwenden Sie subgroup)
Die verfügbaren member Strings sind wie folgt:
* request
* Die Gesamtzahl der von Clients empfangenen 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 aktualisierten Caches.
* cache_revalidated
* Die Anzahl der revalidierten Caches.
* cache_hit
* Die Anzahl der Cache-Hits.
* 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 kann fast alle Statuswerte erfassen, 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 empfangenen Anfragen.
- requestMsecCounter
- Die Anzahl der akkumulierten Anfrageverarbeitungszeit in Millisekunden.
- requestMsec
- Der Durchschnitt der Anfrageverarbeitungszeiten in Millisekunden.
- responseMsecCounter
- Die Anzahl der akkumulierten nur Upstream-Antwortverarbeitungszeit in Millisekunden.
- responseMsec
- Der Durchschnitt der nur Upstream-Antwortverarbeitungszeiten 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 im Konfigurationsfile 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 aktualisierten Caches.
- cacheRevalidated
- Die Anzahl der revalidierten Caches.
- cacheHit
- Die Anzahl der Cache-Hits.
- 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)
Caveats: 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/backend@10.10.10.11: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 ist, die den Durchschnitt der Antwortverarbeitungszeiten berechnet. 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 es keine Anfragen gibt 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 Durchschnitt.
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. Standardmäßig, wenn Sie diese Direktive nicht festlegen, funktioniert sie nicht. Der second kann mit Dezimalstellen ausgedrückt werden, mit einem Mindestwert von 0.001 (1ms). 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].
Caveats: Standardmäßig, wenn Sie diese Direktive nicht festlegen, funktionieren die Histogrammstatistiken nicht. 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 Traffic-Statusstatistikfunktionen werden umgangen, wenn diese Option aktiviert ist. Mit anderen Worten, es wird von den Traffic-Statusstatistiken ausgeschlossen. Dies ist hauptsächlich nützlich, wenn Sie Ihre Anfrage auf 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 Traffic-Statusstatistikfunktionen wird umgangen, wenn diese Option deaktiviert ist. Mit anderen Worten, es wird von den Traffic-Statusstatistiken 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
Erlaubt 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
allwerden alle Statuscodes verfolgt
Releases
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
sed -i "s/NGX_HTTP_VTS_MODULE_VERSION \".*/NGX_HTTP_VTS_MODULE_VERSION \"${version}\"/" src/ngx_http_vhost_traffic_status_module.h
git add src/ngx_http_vhost_traffic_status_module.h
git-chglog -t .chglog/RELNOT