Zum Inhalt

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.


CI License

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

screenshot-vts-0

screenshot-vts-1

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/json anfordern, 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/html anfordern, wird mit dem integrierten Live-Dashboard in HTML geantwortet, das intern auf /status/format/json zugreift.
  • /status/format/jsonp
  • Wenn Sie /status/format/jsonp anfordern, 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/prometheus anfordern, wird mit einem prometheus-Dokument geantwortet, das die aktuellen Aktivitätsdaten enthält.
  • /status/control
  • Wenn Sie /status/control anfordern, 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_key gefiltert wird
  • Gesamtverkehr (ein/ausschließlich) und Anfragen- und Antwortzahlen (Der Zonenname ist *) und Trefferquote, gefiltert durch die Direktive vhost_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)
  • 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_buckets festgelegt 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_buckets festgelegt 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_buckets festgelegt 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.
  • maxFails
    • Aktuelle max_fails-Einstellung des Servers.
  • failTimeout
    • Aktuelle fail_timeout-Einstellung des Servers.
  • backup
    • Aktuelle backup-Einstellung des Servers.
  • 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.
  • cacheZones
  • maxSize
    • Die Grenze für die maximale Größe des Caches, die in der Konfiguration angegeben ist. Wenn max_size in der Direktive proxy_cache_path nicht angegeben ist, wird der systemabhängige Wert NGX_MAX_OFF_T_VALUE standardmäßig zugewiesen. Mit anderen Worten, dieser Wert stammt von Nginx, nicht von dem, was ich angegeben habe.
  • usedSize
    • Die aktuelle Größe des Caches. Dieser Wert wird von Nginx wie der obige maxSize-Wert übernommen.
  • 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)
  • 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_buckets festgelegt 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_buckets festgelegt 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_buckets festgelegt 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.
  • maxFails
    • Aktuelle max_fails-Einstellung des Servers.
  • failTimeout
    • Aktuelle fail_timeout-Einstellung des Servers.
  • backup
    • Aktuelle backup-Einstellung des Servers.
  • 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.
  • cacheZones
  • maxSize
    • Die Grenze für die maximale Größe des Caches, die in der Konfiguration angegeben ist. Wenn max_size in der Direktive proxy_cache_path nicht angegeben ist, wird der systemabhängige Wert NGX_MAX_OFF_T_VALUE standardmäßig zugewiesen. Mit anderen Worten, dieser Wert stammt von Nginx, nicht von dem, was ich angegeben habe.
  • usedSize
    • Die aktuelle Größe des Caches. Dieser Wert wird von Nginx wie der obige maxSize-Wert übernommen.
  • 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)
  • 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_buckets festgelegt 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_buckets festgelegt 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_buckets festgelegt 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.
  • maxFails
    • Aktuelle max_fails-Einstellung des Servers.
  • failTimeout
    • Aktuelle fail_timeout-Einstellung des Servers.
  • backup
    • Aktuelle backup-Einstellung des Servers.
  • 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.
  • cacheZones
  • maxSize
    • Die Grenze für die maximale Größe des Caches, die in der Konfiguration angegeben ist. Wenn max_size in der Direktive proxy_cache_path nicht angegeben ist, wird der systemabhängige Wert NGX_MAX_OFF_T_VALUE standardmäßig zugewiesen. Mit anderen Worten, dieser Wert stammt von Nginx, nicht von dem, was ich angegeben habe.
  • usedSize
    • Die aktuelle Größe des Caches. Dieser Wert wird von Nginx wie der obige maxSize-Wert übernommen.
  • 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?