Aller au contenu

vts : module de statut du trafic des hôtes virtuels NGINX

Installation

Vous pouvez installer ce module sur toute distribution basée sur RHEL, y compris, mais sans s'y limiter :

  • RedHat Enterprise Linux 7, 8, 9 et 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 et Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-vts
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-vts

Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :

load_module modules/ngx_http_vhost_traffic_status_module.so;

Ce document décrit nginx-module-vts v0.2.7 publié le 08 août 2026.


CI License

Module de statut du trafic des hôtes virtuels Nginx

Test

Exécutez sudo prove -r t après avoir installé ce module. sudo est requis car le test nécessite que Nginx écoute sur le port 80.

Captures d'écran

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;
        }
    }
}

Description

Il s'agit d'un module Nginx qui permet d'accéder aux informations de statut des hôtes virtuels. Il contient l'état actuel tel que les serveurs, les upstreams, les caches. Ceci est similaire à la surveillance de l'activité en direct de nginx plus. Le html intégré est également tiré de la page de démonstration de l'ancienne version.

Tout d'abord, la directive vhost_traffic_status_zone est requise, puis si la directive vhost_traffic_status_display est définie, l'accès peut se faire comme suit :

  • /status/format/json
  • Si vous demandez /status/format/json, la réponse sera un document JSON contenant les données d'activité actuelles pour une utilisation dans des tableaux de bord en direct et des outils de surveillance tiers.
  • /status/format/html
  • Si vous demandez /status/format/html, la réponse sera le tableau de bord en direct intégré en HTML qui demande en interne /status/format/json.
  • /status/format/jsonp
  • Si vous demandez /status/format/jsonp, la réponse sera une fonction de rappel JSONP contenant les données d'activité actuelles pour une utilisation dans des tableaux de bord en direct et des outils de surveillance tiers.
  • /status/format/prometheus
  • Si vous demandez /status/format/prometheus, la réponse sera un document prometheus contenant les données d'activité actuelles.
  • /status/control
  • Si vous demandez /status/control, la réponse sera un document JSON après avoir réinitialisé ou supprimé des zones via une chaîne de requête. Voir Control.

Le document JSON contient ce qui suit :

{
    "hostName": ...,
    "moduleVersion": ...,
    "nginxVersion": ...,
    "loadMsec": ...,
    "nowMsec": ...,
    "connections": {
        "active":...,
        "reading":...,
        "writing":...,
        "waiting":...,
        "accepted":...,
        "handled":...,
        "requests":...
    },
    "sharedZones": {
        "name":...,
        "maxSize":...,
        "usedSize":...,
        "usedNode":...,
        "freeSize":...
    },
    "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
  • Version de base, durée de fonctionnement ((nowMsec - loadMsec)/1000)
  • nowMsec, loadMsec sont en millisecondes.
  • connections
  • Connexions et requêtes totales (identique à stub_status_module dans NGINX)
  • sharedZones
  • Les informations de mémoire partagée utilisées dans nginx-module-vts.
  • serverZones
  • Trafic (entrée/sortie) et nombre de requêtes et de réponses et taux de succès du cache pour chaque zone de serveur
  • Trafic total (entrée/sortie) et nombre de requêtes et de réponses (le nom de la zone est *) et taux de succès
  • filterZones
  • Trafic (entrée/sortie) et nombre de requêtes et de réponses et taux de succès du cache pour chaque zone de serveur filtrée via la directive vhost_traffic_status_filter_by_set_key
  • Trafic total (entrée/sortie) et nombre de requêtes et de réponses (le nom de la zone est *) et taux de succès filtrés via la directive vhost_traffic_status_filter_by_set_key
  • upstreamZones
  • Trafic (entrée/sortie) et nombre de requêtes et de réponses par serveur dans chaque groupe d'upstreams
  • Paramètres actuels (weight, maxfails, failtimeout...) dans nginx.conf
  • cacheZones
  • Trafic (entrée/sortie) et taille (capacité/utilisée) et taux de succès pour chaque zone de cache lors de l'utilisation de la directive proxy_cache.

Les objets overCounts dans le document JSON sont principalement destinés aux systèmes 32 bits et seront incrémentés de 1 si leur valeur déborde. La directive vhost_traffic_status_display_format définit le format de sortie par défaut qui est l'un des suivants : json, jsonp, html, prometheus. (Défaut : json)

Le calcul du trafic est le suivant :

  • ServerZones
  • in += octets_requis
  • out += octets_envoyés
  • FilterZones
  • in += octets_requis via le filtre
  • out += octets_envoyés via le filtre
  • UpstreamZones
  • in += octets_requis via les ServerZones
  • out += octets_envoyés via les ServerZones
  • cacheZones
  • in += octets_requis via les ServerZones
  • out += octets_envoyés via les ServerZones

Tous les calculs sont effectués dans la phase de traitement des logs de Nginx. Les redirections internes (X-Accel-Redirect ou error_page) ne sont pas calculées dans les UpstreamZones.

Mises en garde : ce module repose sur le système de journalisation de nginx (NGX_HTTP_LOG_PHASE : dernière phase du http de nginx), donc le trafic peut dans certaines circonstances être différent de la bande passante réelle. Les websockets, les téléchargements annulés peuvent être une cause d'inexactitudes. Le fonctionnement du module n'a aucune importance que la directive access_log soit "on" ou "off". Encore une fois, ce module fonctionne bien avec "access_log off". Lors de l'utilisation de plusieurs domaines, il définit le premier domaine (à gauche) de la directive server_name. Si vous ne le souhaitez pas, voir les directives vhost_traffic_status_filter_by_host, vhost_traffic_status_filter_by_set_key.

Voir les modules suivants pour les statistiques de trafic stream : * nginx-module-sts * nginx-module-stream-sts

Calculs et intervalles

Moyennes

Toutes les moyennes sont actuellement calculées comme AMM(Moyenne arithmétique) sur les dernières 64 valeurs.

Contrôle

Il est possible de réinitialiser ou de supprimer des zones de trafic via une chaîne de requête. La requête répond avec un document JSON.

  • Syntaxe URI
  • /{status_uri}/control?cmd={commande}&group={groupe}&zone={nom}
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;
        }
    }
}

Si cela est configuré comme ci-dessus, alors l'URI de contrôle est comme example.org/status/control.

Les arguments de requête disponibles sont les suivants : * cmd=\<status|reset|delete> * status * Il retourne le statut des zones de trafic au format json comme status/format/json. * reset * Il réinitialise les zones de trafic sans supprimer les nœuds dans la mémoire partagée.(= init à 0) * delete * Il supprime les zones de trafic dans la mémoire partagée. lors d'une nouvelle requête, elles sont recréées. * group=\<server|filter|upstream@alone|upstream@group|cache|*> * server * filter * upstream@alone * upstream@group * cache * * * zone=nom * server * nom * filter * groupe_filtre@nom * upstream@group * groupe_upstream@nom * upstream@alone * @nom * cache * nom

Pour obtenir le statut des zones de trafic à la volée

Ceci est similaire à status/format/json sauf qu'il peut obtenir chaque zone.

Pour obtenir toutes les zones

  • C'est exactement la même chose que status/format/json.
  • /status/control?cmd=status&group=*

Pour obtenir des groupes de zones

  • 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=*

Les valeurs mainZones sont les valeurs de statut par défaut incluant hostName, moduleVersion, nginxVersion, loadMsec, nowMsec, connections.

Pour obtenir chaque zone

  • zone unique dans serverZones
  • /status/control?cmd=status&group=server&zone=nom
  • zone unique dans filterZones
  • /status/control?cmd=status&group=filter&zone=groupe_filtre@nom
  • zone unique dans upstreamZones
  • /status/control?cmd=status&group=upstream@group&zone=groupe_upstream@nom
  • zone unique dans upstreamZones::nogroups
  • /status/control?cmd=status&group=upstream@alone&zone=nom
  • zone unique dans cacheZones
  • /status/control?cmd=status&group=cache&zone=nom

Pour réinitialiser les zones de trafic à la volée

Il réinitialise les valeurs des zones spécifiées à 0.

Pour réinitialiser toutes les zones

  • /status/control?cmd=reset&group=*

Pour réinitialiser des groupes de zones

  • 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=*

Pour réinitialiser chaque zone

  • zone unique dans serverZones
  • /status/control?cmd=reset&group=server&zone=nom
  • zone unique dans filterZones
  • /status/control?cmd=reset&group=filter&zone=groupe_filtre@nom
  • zone unique dans upstreamZones
  • /status/control?cmd=reset&group=upstream@group&zone=groupe_upstream@nom
  • zone unique dans upstreamZones::nogroups
  • /status/control?cmd=reset&group=upstream@alone&zone=nom
  • zone unique dans cacheZones
  • /status/control?cmd=reset&group=cache&zone=nom

Pour supprimer les zones de trafic à la volée

Il supprime les zones spécifiées dans la mémoire partagée.

Pour supprimer toutes les zones

  • /status/control?cmd=delete&group=*

Pour supprimer des groupes de zones

  • 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=*

Pour supprimer chaque zone

  • zone unique dans serverZones
  • /status/control?cmd=delete&group=server&zone=nom
  • zone unique dans filterZones
  • /status/control?cmd=delete&group=filter&zone=groupe_filtre@nom
  • zone unique dans upstreamZones
  • /status/control?cmd=delete&group=upstream@group&zone=groupe_upstream@nom
  • zone unique dans upstreamZones::nogroups
  • /status/control?cmd=delete&group=upstream@alone&zone=nom
  • zone unique dans cacheZones
  • /status/control?cmd=delete&group=cache&zone=nom

Définition

Il est possible d'obtenir les valeurs de statut dans la configuration nginx séparément en utilisant la directive vhost_traffic_status_set_by_filter. Il peut acquérir presque toutes les valeurs de statut et la valeur obtenue est stockée dans une variable définie par l'utilisateur qui est le premier argument.

  • Syntaxe de la directive
  • vhost_traffic_status_set_by_filter $variable groupe/zone/nom
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;
        }
    }
}

Les paramètres ci-dessus sont les suivants :

  • $requestCounter
  • serverZones -> example.org -> requestCounter
  • $requestCounterKR
  • filterZones -> country::example.org -> KR -> requestCounter
  • $requestCounterB1
  • upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter

Veuillez consulter la directive vhost_traffic_status_set_by_filter pour une utilisation détaillée.

JSON

Les informations de statut suivantes sont fournies au format JSON :

Json utilisé par status

/{status_uri}/format/json

/{status_uri}/control?cmd=status&...

  • hostName
  • Nom d'hôte.
  • moduleVersion
  • Version du module au format {version}(|.dev.{commit}).
  • nginxVersion
  • Version de nginx fournie.
  • loadMsec
  • Heure de chargement du processus en millisecondes.
  • nowMsec
  • Heure actuelle en millisecondes
  • connections
  • active
    • Le nombre actuel de connexions client actives.
  • reading
    • Le nombre total de connexions client en lecture.
  • writing
    • Le nombre total de connexions client en écriture.
  • waiting
    • Le nombre total de connexions client en attente.
  • accepted
    • Le nombre total de connexions client acceptées.
  • handled
    • Le nombre total de connexions client traitées.
  • requests
    • Le nombre total de connexions client demandées.
  • sharedZones
  • name
    • Le nom de la mémoire partagée spécifié dans la configuration.(défaut : vhost_traffic_status)
  • maxSize
    • La limite de la taille maximale de la mémoire partagée spécifiée dans la configuration.
  • usedSize
    • La taille actuelle de la mémoire partagée.
  • usedNode
    • Le nombre actuel de nœuds utilisant la mémoire partagée. On peut obtenir une taille approximative pour un nœud avec la formule suivante : (usedSize / usedNode)
  • freeSize
    • L'espace restant dans la mémoire partagée pour plus de nœuds. usedSize ci-dessus est la somme des tailles des nœuds, ce qui n'est pas ce que la zone a dépensé, car l'allocateur de dalles distribue une page entière ou un emplacement entier pour chacun d'eux. Une zone cesse donc d'accepter des nœuds alors que usedSize est toujours inférieur à maxSize, et c'est cette valeur qui l'indique. Un nœud est plus grand qu'une demi-page, donc là où une page fait 4k, c'est l'espace pour plus de nœuds ; là où la page est plus grande, c'est une limite inférieure, car une page partiellement utilisée peut encore en contenir un.
  • serverZones
  • requestCounter
    • Le nombre total de requêtes client reçues des clients.
  • inBytes
    • Le nombre total d'octets reçus des clients.
  • outBytes
    • Le nombre total d'octets envoyés aux clients.
  • responses
    • 1xx, 2xx, 3xx, 4xx, 5xx
    • Le nombre de réponses avec les codes de statut 1xx, 2xx, 3xx, 4xx et 5xx.
    • miss
    • Le nombre d'échecs de cache.
    • bypass
    • Le nombre de contournements de cache.
    • expired
    • Le nombre de caches expirés.
    • stale
    • Le nombre de caches obsolètes.
    • updating
    • Le nombre de mises à jour de cache.
    • revalidated
    • Le nombre de caches revalidés.
    • hit
    • Le nombre de succès de cache.
    • scarce
    • Le nombre de caches rares.
  • requestMsecCounter
    • Le nombre de temps de traitement de requête accumulés en millisecondes.
  • requestMsec
    • La moyenne des temps de traitement de requête en millisecondes.
  • requestMsecs
    • times
    • Les temps en millisecondes aux temps de traitement de requête.
    • msecs
    • Les temps de traitement de requête en millisecondes.
  • requestBuckets
    • msecs
    • Les valeurs de compartiment de l'histogramme définies par la directive vhost_traffic_status_histogram_buckets.
    • counters
    • Les valeurs cumulatives car chaque valeur de compartiment est supérieure ou égale au temps de traitement de requête.
  • filterZones
  • Il fournit les mêmes champs que serverZones sauf qu'il inclut les noms de groupes.
  • upstreamZones
  • server
    • Une adresse du serveur.
  • requestCounter
    • Le nombre total de connexions client transférées vers ce serveur.
  • inBytes
    • Le nombre total d'octets reçus de ce serveur.
  • outBytes
    • Le nombre total d'octets envoyés à ce serveur.
  • responses
    • 1xx, 2xx, 3xx, 4xx, 5xx
    • Le nombre de réponses avec les codes de statut 1xx, 2xx, 3xx, 4xx et 5xx.
  • requestMsecCounter
    • Le nombre de temps de traitement de requête accumulés incluant l'upstream en millisecondes.
  • requestMsec
    • La moyenne des temps de traitement de requête incluant l'upstream en millisecondes.
  • requestMsecs
    • times
    • Les temps en millisecondes aux temps de traitement de requête.
    • msecs
    • Les temps de traitement de requête incluant l'upstream en millisecondes.
  • requestBuckets
    • msecs
    • Les valeurs de compartiment de l'histogramme définies par la directive vhost_traffic_status_histogram_buckets.
    • counters
    • Les valeurs cumulatives car chaque valeur de compartiment est supérieure ou égale au temps de traitement de requête incluant l'upstream.
  • responseMsecCounter
    • Le nombre de temps de traitement de réponse uniquement upstream accumulés en millisecondes.
  • responseMsec
    • La moyenne des temps de traitement de réponse uniquement upstream en millisecondes.
  • responseMsecs
    • times
    • Les temps en millisecondes aux temps de traitement de requête.
    • msecs
    • Les temps de traitement de réponse uniquement upstream en millisecondes.
  • responseBuckets
    • msecs
    • Les valeurs de compartiment de l'histogramme définies par la directive vhost_traffic_status_histogram_buckets.
    • counters
    • Les valeurs cumulatives car chaque valeur de compartiment est supérieure ou égale au temps de traitement de réponse uniquement upstream.
  • weight
    • Paramètre weight actuel du serveur.
  • maxFails
    • Paramètre max_fails actuel du serveur.
  • failTimeout
    • Paramètre fail_timeout actuel du serveur.
  • backup
    • Paramètre backup actuel du serveur.
  • down
    • Paramètre down actuel du serveur. Fondamentalement, ce n'est qu'une marque du serveur down du ngx_http_upstream_module (par exemple server backend3.example.com down), pas l'état réel du serveur upstream. Il changera à l'état réel si vous activez la directive upstream zone.
  • cacheZones
  • maxSize
    • La limite de la taille maximale du cache spécifiée dans la configuration. Si max_size dans la directive proxy_cache_path n'est pas spécifié, la valeur dépendante du système NGX_MAX_OFF_T_VALUE est assignée par défaut. En d'autres termes, cette valeur provient de nginx, pas de ce que j'ai spécifié.
  • usedSize
    • La taille actuelle du cache. Cette valeur est tirée de nginx comme la valeur maxSize ci-dessus.
  • inBytes
    • Le nombre total d'octets reçus du cache.
  • outBytes
    • Le nombre total d'octets envoyés depuis le cache.
  • responses
    • miss
    • Le nombre d'échecs de cache.
    • bypass
    • Le nombre de contournements de cache.
    • expired
    • Le nombre de caches expirés.
    • stale
    • Le nombre de caches obsolètes.
    • updating
    • Le nombre de mises à jour de cache.
    • revalidated
    • Le nombre de caches revalidés.
    • hit
    • Le nombre de succès de cache.
    • scarce
    • Le nombre de caches rares.

Json utilisé par control

/{status_uri}/control?cmd=reset&...

/{status_uri}/control?cmd=delete&...

  • processingReturn
  • Le résultat vrai ou faux.
  • processingCommandString
  • La chaîne de commande demandée.
  • processingGroupString
  • La chaîne de groupe demandée.
  • processingZoneString
  • La chaîne de zone demandée.
  • processingCounts
  • Le nombre de traitements réel.

Variables

Les variables intégrées suivantes sont fournies :

  • $vts_request_counter
  • Le nombre total de requêtes client reçues des clients.
  • $vts_in_bytes
  • Le nombre total d'octets reçus des clients.
  • $vts_out_bytes
  • Le nombre total d'octets envoyés aux clients.
  • $vts_1xx_counter
  • Le nombre de réponses avec les codes de statut 1xx.
  • $vts_2xx_counter
  • Le nombre de réponses avec les codes de statut 2xx.
  • $vts_3xx_counter
  • Le nombre de réponses avec les codes de statut 3xx.
  • $vts_4xx_counter
  • Le nombre de réponses avec les codes de statut 4xx.
  • $vts_5xx_counter
  • Le nombre de réponses avec les codes de statut 5xx.
  • $vts_cache_miss_counter
  • Le nombre d'échecs de cache.
  • $vts_cache_bypass_counter
  • Le nombre de contournements de cache.
  • $vts_cache_expired_counter
  • Le nombre de caches expirés.
  • $vts_cache_stale_counter
  • Le nombre de caches obsolètes.
  • $vts_cache_updating_counter
  • Le nombre de mises à jour de cache.
  • $vts_cache_revalidated_counter
  • Le nombre de caches revalidés.
  • $vts_cache_hit_counter
  • Le nombre de succès de cache.
  • $vts_cache_scarce_counter
  • Le nombre de caches rares.
  • $vts_request_time_counter
  • Le nombre de temps de traitement de requête accumulés.
  • $vts_request_time
  • La moyenne des temps de traitement de requête.

Limite

Il est possible de limiter le trafic total par hôte en utilisant la directive vhost_traffic_status_limit_traffic. Il est également possible de limiter tout le trafic en utilisant la directive vhost_traffic_status_limit_traffic_by_set_key. Lorsque la limite est dépassée, le serveur retournera l'erreur 503 (Service Temporairement Indisponible) en réponse à une requête. Le code de retour peut être modifié.

Pour limiter le trafic pour un serveur

http {

    vhost_traffic_status_zone;

    ...

    server {

        server_name *.example.org;

        vhost_traffic_status_limit_traffic in:64G;
        vhost_traffic_status_limit_traffic out:1024G;

        ...
    }
}
  • Limite le trafic total entrant/sortant sur *.example.org à 64G et 1024G respectivement. Cela fonctionne individuellement pour chaque domaine si la directive vhost_traffic_status_filter_by_host est activée.

Pour limiter le trafic pour un filtre

http {
    geoip_country /usr/share/GeoIP/GeoIP.dat;

    vhost_traffic_status_zone;

    ...

    server {

        server_name example.org;

        vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
        vhost_traffic_status_limit_traffic_by_set_key FG@country::$server_name@US out:1024G;
        vhost_traffic_status_limit_traffic_by_set_key FG@country::$server_name@CN out:2048G;

        ...

    }
}
  • Limite le trafic total vers les US et la Chine sur example.org à 1024G et 2048G respectivement.

Pour limiter le trafic pour un upstream

```Nginx http {

vhost_traffic_status_zone;

...

upstream backend {
    server 10.10.10.17:80;
    server 10.10.10