vts
# *vts*: NGINX Modul für den Status des virtuellen Host-Verkehrs
## 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.5, das am 28. Dezember 2025 veröffentlicht wurde.
Nginx Modul für den Status des virtuellen Host-Verkehrs
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 wie folgt darauf zugegriffen 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 eine Millisekunde.
- connections
- Gesamtverbindungen 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/ausschließlich) und Anfragen- und Antwortzahlen sowie Cache-Trefferquote pro Serverzone
- Gesamtverkehr (ein/ausschließlich) und Anfragen- und Antwortzahlen (Der Zonenname ist
*) und Trefferquote - filterZones
- Verkehr (ein/ausschließlich) und Anfragen- und Antwortzahlen sowie Cache-Trefferquote pro Serverzone, die durch die Direktive
vhost_traffic_status_filter_by_set_keygefiltert wird - Gesamtverkehr (ein/ausschließlich) und Anfragen- und Antwortzahlen (Der Zonenname ist
*) und Trefferquote, gefiltert durch die Direktivevhost_traffic_status_filter_by_set_key - upstreamZones
- Verkehr (ein/ausschließlich) und Anfragen- und Antwortzahlen pro Server in jeder Upstream-Gruppe
- Aktuelle Einstellungen (Gewicht, maxfails, failtimeout...) in nginx.conf
- cacheZones
- Verkehr (ein/ausschließlich) und Größe (Kapazität/genutzt) sowie 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 Verkehrsermittlung 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 Verkehr unter bestimmten Umständen von dem tatsächlichen Bandbreitenverkehr abweichen kann. Websockets und abgebrochene Downloads können Ungenauigkeiten verursachen. Die Funktionsweise des Moduls hängt überhaupt nicht davon ab, ob die Direktive access_log "ein" oder "aus" ist. Noch einmal, 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 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-Verkehrsstatistiken:
* 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 ist, 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 alle Zonen zu erhalten
- Es ist genau das gleiche 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 Verkehrszone in Echtzeit zurückzusetzen
Es setzt die Werte der angegebenen Zonen auf 0 zurück.
Um alle 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 Verkehrszone in Echtzeit zu löschen
Es löscht die angegebenen Zonen im gemeinsamen Speicher.
Um alle 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 ist möglich, die Statuswerte in der Nginx-Konfiguration separat mit der Direktive vhost_traffic_status_set_by_filter zu erhalten. Es können fast alle Statuswerte erfasst 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 siehe die Direktive vhost_traffic_status_set_by_filter für 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 Format
{version}(|.dev.{commit}). - nginxVersion
- Version des bereitgestellten.
- loadMsec
- Ladeprozesszeit 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 Konfigurationsdokument angegebenen gemeinsamen Speichers. (Standard:
vhost_traffic_status)
- Der Name des im Konfigurationsdokument angegebenen gemeinsamen Speichers. (Standard:
- maxSize
- Die Grenze für die maximale Größe des im Konfigurationsdokument angegebenen gemeinsamen Speichers.
- usedSize
- Die aktuelle Größe des gemeinsamen Speichers.
- usedNode
- Die aktuelle Anzahl der im gemeinsamen Speicher verwendeten Knoten. 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 Clientanfragen.
- 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-Umgehungen.
- 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-Treffer.
- 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 für den Grund, dass jeder Bucketwert 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 für den Grund, dass jeder Bucketwert 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 für den Grund, dass jeder Bucketwert 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 Marker für den Server im 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
- Die Grenze für die maximale Größe des Caches, die in der Konfiguration angegeben ist. 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.
- Die Grenze für die maximale Größe des Caches, die in der Konfiguration angegeben ist. Wenn
- usedSize
- Die aktuelle Größe des Caches. Dieser Wert wird von Nginx wie der obige
maxSize-Wert übernommen.
- 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 vom Cache gesendeten Bytes.
- responses
- miss
- Die Anzahl der Cache-Misses.
- bypass
- Die Anzahl der Cache-Umgehungen.
- 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-Treffer.
- scarce
- Die Anzahl der knappen Caches.
JSON-Dokumente
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)
Verkehrsermittlung
Die Verkehrsermittlung 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 Verkehr unter bestimmten Umständen von dem tatsächlichen Bandbreitenverkehr abweichen kann. Websockets und abgebrochene Downloads können Ungenauigkeiten verursachen. Die Funktionsweise des Moduls hängt überhaupt nicht davon ab, ob die Direktive access_log "ein" oder "aus" ist. Noch einmal, 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 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-Verkehrsstatistiken:
* 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 ist, 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 alle Zonen zu erhalten
- Es ist genau das gleiche 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 Verkehrszone in Echtzeit zurückzusetzen
Es setzt die Werte der angegebenen Zonen auf 0 zurück.
Um alle 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 Verkehrszone in Echtzeit zu löschen
Es löscht die angegebenen Zonen im gemeinsamen Speicher.
Um alle 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 ist möglich, die Statuswerte in der Nginx-Konfiguration separat mit der Direktive vhost_traffic_status_set_by_filter zu erhalten. Es können fast alle Statuswerte erfasst 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 siehe die Direktive vhost_traffic_status_set_by_filter für 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 Format
{version}(|.dev.{commit}). - nginxVersion
- Version des bereitgestellten.
- loadMsec
- Ladeprozesszeit 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 Konfigurationsdokument angegebenen gemeinsamen Speichers. (Standard:
vhost_traffic_status)
- Der Name des im Konfigurationsdokument angegebenen gemeinsamen Speichers. (Standard:
- maxSize
- Die Grenze für die maximale Größe des im Konfigurationsdokument angegebenen gemeinsamen Speichers.
- usedSize
- Die aktuelle Größe des gemeinsamen Speichers.
- usedNode
- Die aktuelle Anzahl der im gemeinsamen Speicher verwendeten Knoten. 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 Clientanfragen.
- 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-Umgehungen.
- 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-Treffer.
- 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 für den Grund, dass jeder Bucketwert 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 für den Grund, dass jeder Bucketwert 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 für den Grund, dass jeder Bucketwert 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 Marker für den Server im 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
- Die Grenze für die maximale Größe des Caches, die in der Konfiguration angegeben ist. 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.
- Die Grenze für die maximale Größe des Caches, die in der Konfiguration angegeben ist. Wenn
- usedSize
- Die aktuelle Größe des Caches. Dieser Wert wird von Nginx wie der obige
maxSize-Wert übernommen.
- 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 vom Cache gesendeten Bytes.
- responses
- miss
- Die Anzahl der Cache-Misses.
- bypass
- Die Anzahl der Cache-Umgehungen.
- 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-Treffer.
- scarce
- Die Anzahl der knappen Caches.
JSON-Dokumente
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)
Verkehrsermittlung
Die Verkehrsermittlung 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 Verkehr unter bestimmten Umständen von dem tatsächlichen Bandbreitenverkehr abweichen kann. Websockets und abgebrochene Downloads können Ungenauigkeiten verursachen. Die Funktionsweise des Moduls hängt überhaupt nicht davon ab, ob die Direktive access_log "ein" oder "aus" ist. Noch einmal, 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 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-Verkehrsstatistiken:
* 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 ist, 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 alle Zonen zu erhalten
- Es ist genau das gleiche 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 Verkehrszone in Echtzeit zurückzusetzen
Es setzt die Werte der angegebenen Zonen auf 0 zurück.
Um alle 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 Verkehrszone in Echtzeit zu löschen
Es löscht die angegebenen Zonen im gemeinsamen Speicher.
Um alle 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 ist möglich, die Statuswerte in der Nginx-Konfiguration separat mit der Direktive vhost_traffic_status_set_by_filter zu erhalten. Es können fast alle Statuswerte erfasst 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 siehe die Direktive vhost_traffic_status_set_by_filter für 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 Format
{version}(|.dev.{commit}). - nginxVersion
- Version des bereitgestellten.
- loadMsec
- Ladeprozesszeit 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 Konfigurationsdokument angegebenen gemeinsamen Speichers. (Standard:
vhost_traffic_status)
- Der Name des im Konfigurationsdokument angegebenen gemeinsamen Speichers. (Standard:
- maxSize
- Die Grenze für die maximale Größe des im Konfigurationsdokument angegebenen gemeinsamen Speichers.
- usedSize
- Die aktuelle Größe des gemeinsamen Speichers.
- usedNode
- Die aktuelle Anzahl der im gemeinsamen Speicher verwendeten Knoten. 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 Clientanfragen.
- 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-Umgehungen.
- 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-Treffer.
- 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 für den Grund, dass jeder Bucketwert 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 für den Grund, dass jeder Bucketwert 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 für den Grund, dass jeder Bucketwert 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 Marker für den Server im 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
- Die Grenze für die maximale Größe des Caches, die in der Konfiguration angegeben ist. 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.
- Die Grenze für die maximale Größe des Caches, die in der Konfiguration angegeben ist. Wenn
- usedSize
- Die aktuelle Größe des Caches. Dieser Wert wird von Nginx wie der obige
maxSize-Wert übernommen.
- 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 vom Cache gesendeten Bytes.
- responses
- miss
- Die Anzahl der Cache-Misses.
- bypass
- Die Anzahl der Cache-Umgehungen.
- 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-Treffer.
- scarce
- Die Anzahl der knappen Caches.
JSON-Dokumente
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)
Verkehrsermittlung
Die Verkehrsermittlung 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 Verkehr unter bestimmten Umständen von dem tatsächlichen Bandbreitenverkehr abweichen kann. Websockets und abgebrochene Downloads können Ungenauigkeiten verursachen. Die Funktionsweise des Moduls hängt überhaupt nicht davon ab, ob die Direktive access_log "ein" oder "aus" ist. Noch einmal, 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 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-Verkehrsstatistiken:
* 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 ist, 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 alle Zonen zu erhalten
- Es ist genau das gleiche 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?