vts: Module de statut du trafic des hôtes virtuels NGINX
Installation
Vous pouvez installer ce module dans 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.5 publié le 28 décembre 2025.
Module de statut du trafic des hôtes virtuels Nginx
Test
Exécutez sudo prove -r t après avoir installé ce module. Le sudo est requis car
le test nécessite que Nginx écoute sur le port 80.
Captures d'écran


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 fournit un accès aux informations de statut des hôtes virtuels. Il contient le statut actuel tel que serveurs, upstreams, 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,
et ensuite, si la directive vhost_traffic_status_display est définie, elle peut être accessible comme suit :
- /status/format/json
- Si vous demandez
/status/format/json, cela répondra avec un document JSON contenant les données d'activité actuelles à utiliser dans des tableaux de bord en direct et des outils de surveillance tiers. - /status/format/html
- Si vous demandez
/status/format/html, cela répondra avec 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, cela répondra avec une fonction de rappel JSONP contenant les données d'activité actuelles à utiliser dans des tableaux de bord en direct et des outils de surveillance tiers. - /status/format/prometheus
- Si vous demandez
/status/format/prometheus, cela répondra avec un document prometheus contenant les données d'activité actuelles. - /status/control
- Si vous demandez
/status/control, cela répondra avec un document JSON après avoir réinitialisé ou supprimé des zones via une chaîne de requête. Voir le Contrôle.
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":...
},
"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, temps de disponibilité((nowMsec - loadMsec)/1000)
- nowMsec, loadMsec est en millisecondes.
- connections
- Total des connexions et des requêtes (identique à stub_status_module dans NGINX)
- sharedZones
- Les informations de mémoire partagée utilisées dans nginx-module-vts.
- serverZones
- Trafic (entrant/sortant) et compte des requêtes et des réponses et ratio de hits par zone de serveur
- Trafic total (entrant/sortant) et compte des requêtes et des réponses (le nom de la zone est
*) et ratio de hits - filterZones
- Trafic (entrant/sortant) et compte des requêtes et des réponses et ratio de hits par zone de serveur filtrée par la directive
vhost_traffic_status_filter_by_set_key - Trafic total (entrant/sortant) et compte des requêtes et des réponses (le nom de la zone est
*) et ratio de hits filtré par la directivevhost_traffic_status_filter_by_set_key - upstreamZones
- Trafic (entrant/sortant) et compte des requêtes et des réponses par serveur dans chaque groupe upstream
- Paramètres actuels (poids, maxfails, failtimeout...) dans nginx.conf
- cacheZones
- Trafic (entrant/sortant) et taille (capacité/utilisée) et ratio de hits par zone de cache lors de l'utilisation de la directive proxy_cache.
Les objets overCounts dans le document JSON sont principalement pour les 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 json, jsonp, html, prometheus. (Par défaut : json)
Le calcul du trafic est le suivant :
- ServerZones
- in += requested_bytes
- out += sent_bytes
- FilterZones
- in += requested_bytes via le filtre
- out += sent_bytes via le filtre
- UpstreamZones
- in += requested_bytes via les ServerZones
- out += sent_bytes via les ServerZones
- cacheZones
- in += requested_bytes via les ServerZones
- out += sent_bytes via les ServerZones
Tous les calculs fonctionnent dans la phase de traitement des journaux de Nginx. Les redirections internes (X-Accel-Redirect ou error_page) ne sont pas calculées dans les UpstreamZones.
Avertissements : ce module s'appuie sur le système de journalisation de nginx (NGX_HTTP_LOG_PHASE : dernière phase du http de nginx), donc le trafic peut être
dans certaines circonstances différent du trafic réel en bande passante.
Les Websockets, les téléchargements annulés peuvent être la cause d'inexactitudes.
Le fonctionnement du module n'a pas d'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 est défini sur le premier domaine (gauche) de la directive server_name.
Si vous ne le souhaitez pas, consultez la directive 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 64 dernières 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={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;
}
}
}
Si cela est défini 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
* Cela retourne le statut des zones de trafic au format json comme status/format/json.
* reset
* Cela réinitialise les zones de trafic sans supprimer les nœuds en mémoire partagée. (= init à 0)
* delete
* Cela supprime les zones de trafic en mémoire partagée. lors de la nouvelle demande, elles sont recréées.
* 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
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 le même que
status/format/json. - /status/control?cmd=status&group=*
Pour obtenir les zones de groupe
- 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=
name - zone unique dans filterZones
- /status/control?cmd=status&group=filter&zone=
filter_group@name - zone unique dans upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - zone unique dans upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
name - zone unique dans cacheZones
- /status/control?cmd=status&group=cache&zone=
name
Pour réinitialiser les zones de trafic à la volée
Cela réinitialise les valeurs des zones spécifiées à 0.
Pour réinitialiser toutes les zones
- /status/control?cmd=reset&group=*
Pour réinitialiser les zones de groupe
- 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=
name - zone unique dans filterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - zone unique dans upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - zone unique dans upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name - zone unique dans cacheZones
- /status/control?cmd=reset&group=cache&zone=
name
Pour supprimer les zones de trafic à la volée
Cela supprime les zones spécifiées en mémoire partagée.
Pour supprimer toutes les zones
- /status/control?cmd=delete&group=*
Pour supprimer les zones de groupe
- 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=
name - zone unique dans filterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - zone unique dans upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - zone unique dans upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name - zone unique dans cacheZones
- /status/control?cmd=delete&group=cache&zone=
name
Définir
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 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;
}
}
}
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 le statut
/{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 fournie.
- loadMsec
- Temps de processus chargé en millisecondes.
- nowMsec
- Temps actuel 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ée dans la configuration. (par défaut :
vhost_traffic_status)
- Le nom de la mémoire partagée spécifiée dans la configuration. (par défaut :
- 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 utilisés dans la mémoire partagée. On peut obtenir une taille approximative pour un nœud avec la formule suivante : (usedSize / usedNode)
- serverZones
- requestCounter
- Le nombre total de requêtes client reçues.
- inBytes
- Le nombre total de bytes reçus des clients.
- outBytes
- Le nombre total de bytes envoyés aux clients.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- Le nombre de réponses avec les codes d'état 1xx, 2xx, 3xx, 4xx et 5xx.
- miss
- Le nombre de cache manqué.
- bypass
- Le nombre de contournements de cache.
- expired
- Le nombre de cache expiré.
- stale
- Le nombre de cache obsolète.
- updating
- Le nombre de cache en cours de mise à jour.
- revalidated
- Le nombre de cache revalidé.
- hit
- Le nombre de cache atteint.
- scarce
- Le nombre de cache rare.
- requestMsecCounter
- Le nombre de temps de traitement des requêtes accumulées en millisecondes.
- requestMsec
- La moyenne des temps de traitement des requêtes en millisecondes.
- requestMsecs
- times
- Les temps en millisecondes lors des temps de traitement des requêtes.
- msecs
- Les temps de traitement des requêtes en millisecondes.
- requestBuckets
- msecs
- Les valeurs de seau de l'histogramme définies par la directive
vhost_traffic_status_histogram_buckets. - counters
- Les valeurs cumulées pour la raison pour laquelle chaque valeur de seau est supérieure ou égale au temps de traitement de la requête.
- filterZones
- Il fournit les mêmes champs que
serverZonessauf qu'il inclut les noms de groupes. - upstreamZones
- server
- Une adresse du serveur.
- requestCounter
- Le nombre total de connexions client transférées à ce serveur.
- inBytes
- Le nombre total de bytes reçus de ce serveur.
- outBytes
- Le nombre total de bytes envoyés à ce serveur.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- Le nombre de réponses avec les codes d'état 1xx, 2xx, 3xx, 4xx et 5xx.
- requestMsecCounter
- Le nombre de temps de traitement des requêtes accumulées incluant l'upstream en millisecondes.
- requestMsec
- La moyenne des temps de traitement des requêtes incluant l'upstream en millisecondes.
- requestMsecs
- times
- Les temps en millisecondes lors des temps de traitement des requêtes.
- msecs
- Les temps de traitement des requêtes incluant l'upstream en millisecondes.
- requestBuckets
- msecs
- Les valeurs de seau de l'histogramme définies par la directive
vhost_traffic_status_histogram_buckets. - counters
- Les valeurs cumulées pour la raison pour laquelle chaque valeur de seau est supérieure ou égale au temps de traitement de la requête incluant l'upstream.
- responseMsecCounter
- Le nombre de temps de traitement des réponses uniquement upstream accumulées en millisecondes.
- responseMsec
- La moyenne des temps de traitement des réponses uniquement upstream en millisecondes.
- responseMsecs
- times
- Les temps en millisecondes lors des temps de traitement des requêtes.
- msecs
- Les temps de traitement des réponses uniquement upstream en millisecondes.
- responseBuckets
- msecs
- Les valeurs de seau de l'histogramme définies par la directive
vhost_traffic_status_histogram_buckets. - counters
- Les valeurs cumulées pour la raison pour laquelle chaque valeur de seau est supérieure ou égale au temps de traitement de la réponse uniquement upstream.
- weight
- Paramètre
weightactuel du serveur.
- Paramètre
- maxFails
- Paramètre
max_failsactuel du serveur.
- Paramètre
- failTimeout
- Paramètre
fail_timeoutactuel du serveur.
- Paramètre
- backup
- Paramètre
backupactuel du serveur.
- Paramètre
- down
- Paramètre
downactuel du serveur. En gros, c'est juste une marque de l'état du serveur du ngx_http_upstream_module (par exemple,server backend3.example.com down), pas l'état réel du serveur upstream. Cela changera d'état réel si vous activez la directive de zone upstream.
- Paramètre
- cacheZones
- maxSize
- La limite de la taille maximale du cache spécifiée dans la configuration. Si
max_sizedans la directiveproxy_cache_pathn'est pas spécifiée, la valeur dépendante du systèmeNGX_MAX_OFF_T_VALUEest assignée par défaut. En d'autres termes, cette valeur provient de nginx, pas de ce que j'ai spécifié.
- La limite de la taille maximale du cache spécifiée dans la configuration. Si
- usedSize
- La taille actuelle du cache. Cette valeur est prise de nginx comme la valeur
maxSizeci-dessus.
- La taille actuelle du cache. Cette valeur est prise de nginx comme la valeur
- inBytes
- Le nombre total de bytes reçus du cache.
- outBytes
- Le nombre total de bytes envoyés depuis le cache.
- responses
- miss
- Le nombre de cache manqué.
- bypass
- Le nombre de contournements de cache.
- expired
- Le nombre de cache expiré.
- stale
- Le nombre de cache obsolète.
- updating
- Le nombre de cache en cours de mise à jour.
- revalidated
- Le nombre de cache revalidé.
- hit
- Le nombre de cache atteint.
- scarce
- Le nombre de cache rare.
Json utilisé par le contrôle
/{status_uri}/control?cmd=reset&...
/{status_uri}/control?cmd=delete&...
- processingReturn
- Le résultat de 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 traitement réel.
Variables
Les variables intégrées suivantes sont fournies :
- $vts_request_counter
- Le nombre total de requêtes client reçues.
- $vts_in_bytes
- Le nombre total de bytes reçus des clients.
- $vts_out_bytes
- Le nombre total de bytes envoyés aux clients.
- $vts_1xx_counter
- Le nombre de réponses avec des codes d'état 1xx.
- $vts_2xx_counter
- Le nombre de réponses avec des codes d'état 2xx.
- $vts_3xx_counter
- Le nombre de réponses avec des codes d'état 3xx.
- $vts_4xx_counter
- Le nombre de réponses avec des codes d'état 4xx.
- $vts_5xx_counter
- Le nombre de réponses avec des codes d'état 5xx.
- $vts_cache_miss_counter
- Le nombre de cache manqué.
- $vts_cache_bypass_counter
- Le nombre de contournements de cache.
- $vts_cache_expired_counter
- Le nombre de cache expiré.
- $vts_cache_stale_counter
- Le nombre de cache obsolète.
- $vts_cache_updating_counter
- Le nombre de cache en cours de mise à jour.
- $vts_cache_revalidated_counter
- Le nombre de cache revalidé.
- $vts_cache_hit_counter
- Le nombre de cache atteint.
- $vts_cache_scarce_counter
- Le nombre de cache rare.
- $vts_request_time_counter
- Le nombre de temps de traitement des requêtes accumulées.
- $vts_request_time
- La moyenne des temps de traitement des requêtes.
Limite
Il est possible de limiter le trafic total par chaque 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 renverra l'erreur 503
(Service temporairement indisponible) en réponse à une demande.
Le code de retour peut être modifiable.
Pour limiter le trafic pour le 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 le
*.example.orgà 64G et 1024G respectivement. Cela fonctionne individuellement par domaine si la directivevhost_traffic_status_filter_by_hostest activée.
Pour limiter le trafic pour le 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 entrant vers les États-Unis et la Chine sur le
example.orgà 1024G et 2048G respectivement.
Pour limiter le trafic pour l'upstream
http {
vhost_traffic_status_zone;
...
upstream backend {
server 10.10.10.17:80;
server 10.10.10.18:80;
}
server {
server_name example.org;
location /backend {
vhost_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:512G;
vhost_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:1024G;
proxy_pass http://backend;
}
...
}
}
- Limite le trafic total entrant vers l'upstream backend sur le
example.orgà 512G et 1024G par pair.
Avertissements : Le trafic est le transfert cumulatif ou le compteur, pas une bande passante.
Cas d'utilisation
Il est possible de calculer les statistiques individuelles définies par l'utilisateur en utilisant la directive vhost_traffic_status_filter_by_set_key.
Pour calculer le trafic pour chaque pays en utilisant GeoIP
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Calculer le trafic pour chaque pays de tous les groupes de serveurs.
- Calculer le trafic pour chaque pays de chaque groupe de serveurs.
Fondamentalement, les images des drapeaux des pays sont intégrées dans le HTML.
L'image du drapeau du pays est activée si la chaîne country est incluse
dans le nom du groupe qui est le deuxième argument de la directive vhost_traffic_status_filter_by_set_key.
Pour calculer le trafic pour chaque volume de stockage
http {
vhost_traffic_status_zone;
...
server {
...
location ~ ^/storage/(.+)/.*$ {
set $volume $1;
vhost_traffic_status_filter_by_set_key $volume storage::$server_name;
}
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Calculer le trafic pour chaque volume de stockage correspondant à l'expression régulière de la directive location.
Pour calculer le trafic pour chaque agent utilisateur
http {
vhost_traffic_status_zone;
map $http_user_agent $filter_user_agent {
default 'unknown';
~iPhone ios;
~Android android;
~(MSIE|Mozilla) windows;
}
vhost_traffic_status_filter_by_set_key $filter_user_agent agent::*;
...
server {
...
vhost_traffic_status_filter_by_set_key $filter_user_agent agent::$server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Calculer le trafic pour chaque
http_user_agent
Pour calculer le trafic pour les codes d'état http détaillés
http {
vhost_traffic_status_zone;
server {
...
vhost_traffic_status_filter_by_set_key $status $server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Calculer le trafic pour les codes d'état http détaillés
Avertissements : La variable $status est disponible dans nginx-(1.3.2, 1.2.2).
Pour calculer le trafic pour le dns dynamique
Si le domaine a plusieurs enregistrements DNS A, vous pouvez calculer le trafic pour chaque IP pour le domaine en utilisant la fonctionnalité de filtre ou une variable dans proxy_pass.
http {
vhost_traffic_status_zone;
upstream backend {
elb.example.org:80;
}
...
server {
...
location /backend {
vhost_traffic_status_filter_by_set_key $upstream_addr upstream::backend;
proxy_pass backend;
}
}
}
- Calculer le trafic pour chaque IP pour le domaine
elb.example.org. Sielb.example.orga plusieurs enregistrements DNS A, toutes les IPs seront affichées dansfilterZones. Dans les paramètres ci-dessus, lorsque NGINX démarre ou recharge sa configuration, il interroge un serveur DNS pour résoudre le domaine et les enregistrements DNS A sont mis en cache en mémoire. Par conséquent, les enregistrements DNS A ne changent pas en mémoire même si les enregistrements DNS A sont modifiés par l'administrateur DNS à moins que NGINX ne redémarre ou recharge.
http {
vhost_traffic_status_zone;
resolver 10.10.10.53 valid=10s
...
server {
...
location /backend {
set $backend_server elb.example.org;
proxy_pass http://$backend_server;
}
}
}
- Calculer le trafic pour chaque IP pour le domaine
elb.example.org. Si l'enregistrement DNS A deelb.example.orgest modifié, les anciennes et nouvelles IP seront affichées dans::nogroups. Contrairement au premier paramètre du groupe upstream, le deuxième paramètre fonctionne bien même si les enregistrements DNS A sont modifiés par l'administrateur DNS.
Avertissements : Pour plus de détails sur le DNS NGINX, voir le
dns-service-discovery-nginx-plus.
Pour calculer le trafic sauf pour la page de statut
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- L'URI
/statusest exclue du calcul du trafic de statut et de la fonctionnalité de limite. Voir les directives suivantes : - vhost_traffic_status_bypass_limit
- vhost_traffic_status_bypass_stats
Pour maintenir les données statistiques de manière permanente
http {
vhost_traffic_status_zone;
vhost_traffic_status_dump /var/log/nginx/vts.db;
...
server {
...
}
}
- La directive
vhost_traffic_status_dumpmaintient les données statistiques de manière permanente même si le système a été redémarré ou nginx a été redémarré. Veuillez consulter la directive vhost_traffic_status_dump pour une utilisation détaillée.
Personnalisation
Pour personnaliser après l'installation du module
-
Vous devez changer la chaîne
{{uri}}à votre URI de statut dans status.template.html comme suit :shell> vi share/status.template.htmlvar vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000; -
Ensuite, personnalisez et copiez status.template.html dans le répertoire racine du serveur comme suit :
shell> cp share/status.template.html /usr/share/nginx/html/status.html -
Configurez
nginx.confserver { server_name example.org; root /usr/share/nginx/html; # Redirige les requêtes pour / vers /status.html location = / { return 301 /status.html; } location = /status.html {} # Tout ce qui commence par /status (sauf pour /status.html) est # traité par le gestionnaire de statut location /status { vhost_traffic_status_display; vhost_traffic_status_display_format json; } } -
Accédez à votre html.
http://example.org/status.html
Pour personnaliser avant l'installation du module
-
Modifiez
share/status.template.html(Ne changez pas la chaîne{{uri}}) -
Recréez le
ngx_http_vhost_traffic_status_module_html.hcomme suit :shell> cd util shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_vhost_traffic_status_module_html.h -
Ajoutez le module à la configuration de construction en ajoutant
--add-module=/path/to/nginx-module-vts -
Construisez le binaire nginx.
-
Installez le binaire nginx.
Directives

vhost_traffic_status
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status \<on|off> |
| Par défaut | off |
| Contexte | http, server, location |
Description : Active ou désactive le fonctionnement du module.
Si vous définissez la directive vhost_traffic_status_zone, elle est automatiquement activée.
vhost_traffic_status_zone
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_zone [shared:name:size] |
| Par défaut | shared:vhost_traffic_status:1m |
| Contexte | http |
Description : Définit les paramètres pour une zone de mémoire partagée qui conservera les états pour diverses clés.
Le cache est partagé entre tous les processus de travail.
Dans la plupart des cas, la taille de la mémoire partagée utilisée par nginx-module-vts n'augmente pas beaucoup.
La taille de la mémoire partagée augmente considérablement lors de l'utilisation de la directive vhost_traffic_status_filter_by_set_key
mais si les clés du filtre sont fixes (par exemple, le nombre total de codes de pays est d'environ 240)
elle n'augmente pas continuellement.
Si vous utilisez la directive vhost_traffic_status_filter_by_set_key, définissez-la comme suit :
- Définissez la taille de la mémoire partagée à plus de 32M par défaut.
(
vhost_traffic_status_zone shared:vhost_traffic_status:32m) - Si le message (
"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone") s'affiche dans error_log, augmentez à plus de (usedSize * 2).
vhost_traffic_status_dump
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_dump path [period] |
| Par défaut | - |
| Contexte | http |
Description : Active le dump et la restauration des données statistiques.
Le path est un emplacement pour dumper les données statistiques. (par exemple, /var/log/nginx/vts.db)
Le period est un temps de cycle de sauvegarde. (Par défaut : 60s)
Il est sauvegardé immédiatement indépendamment du cycle de sauvegarde si nginx est quitté par signal (SIGKILL).
vhost_traffic_status_display
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_display |
| Par défaut | - |
| Contexte | http, server, location |
Description : Active ou désactive le gestionnaire d'affichage du module.
vhost_traffic_status_display_format
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_display_format \<json|html|jsonp|prometheus> |
| Par défaut | json |
| Contexte | http, server, location |
Description : Définit le format de sortie du gestionnaire d'affichage.
Si vous définissez json, cela répondra avec un document JSON.
Si vous définissez html, cela répondra avec le tableau de bord en direct intégré en HTML.
Si vous définissez jsonp, cela répondra avec une fonction de rappel JSONP (par défaut : ngx_http_vhost_traffic_status_jsonp_callback).
Si vous définissez prometheus, cela répondra avec un document prometheus.
vhost_traffic_status_display_jsonp
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_display_jsonp callback |
| Par défaut | ngx_http_vhost_traffic_status_jsonp_callback |
| Contexte | http, server, location |
Description : Définit le nom de rappel pour le JSONP.
vhost_traffic_status_display_sum_key
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_display_sum_key name |
| Par défaut | * |
| Contexte | http, server, location |
Description : Définit la chaîne de clé de somme dans le champ serverZones du JSON. La chaîne de clé de somme par défaut est le "*".
vhost_traffic_status_filter
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_filter \<on|off> |
| Par défaut | on |
| Contexte | http, server, location |
Description : Active ou désactive les fonctionnalités de filtre.
vhost_traffic_status_filter_by_host
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_filter_by_host \<on|off> |
| Par défaut | off |
| Contexte | http, server, location |
Description : Active ou désactive les clés par le champ d'en-tête Host.
Si vous définissez on et que la directive server_name de nginx définit plusieurs noms ou un nom générique commençant par un astérisque, par exemple “.example.org”
et que vous demandez au serveur avec un nom d'hôte tel que (a|b|c).example.org ou .example.org
alors le json serverZones est imprimé comme suit :
server {
server_name *.example.org;
vhost_traffic_status_filter_by_host on;
...
}
...
"serverZones": {
"a.example.org": {
...
},
"b.example.org": {
...
},
"c.example.org": {
...
}
...
},
...
Cela fournit la même fonction que celle définie par vhost_traffic_status_filter_by_set_key $host.
vhost_traffic_status_filter_by_set_key
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_filter_by_set_key key [name] |
| Par défaut | - |
| Contexte | http, server, location |
Description : Active les clés par variable définie par l'utilisateur.
Le key est une chaîne clé pour calculer le trafic.
Le name est une chaîne de groupe pour calculer le trafic.
Le key et name peuvent contenir des variables telles que $host, $server_name.
Le groupe name appartient à filterZones s'il est spécifié.
Le groupe key appartient à serverZones s'il n'est pas spécifié en tant que deuxième argument name.
L'exemple avec le module geoip est le suivant :
server {
server_name example.org;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
...
}
...
"serverZones": {
...
},
"filterZones": {
"country::example.org": {
"KR": {
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
},
"US": {
...
},
...
},
...
},
...
vhost_traffic_status_filter_check_duplicate
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_filter_check_duplicate \<on|off> |
| Par défaut | on |
| Contexte | http, server, location |
Description : Active ou désactive la dé-duplication de vhost_traffic_status_filter_by_set_key.
Il est traité uniquement un des valeurs en double (key + name) dans chaque directive (http, server, location) si cette option est activée.
vhost_traffic_status_filter_max_node
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_filter_max_node number [string ...] |
| Par défaut | 0 |
| Contexte | http |
Description : Active la limite de la taille du filtre en utilisant les valeurs number et string spécifiées.
Si le number est dépassé, les nœuds existants sont supprimés par l'algorithme LRU.
L'argument number est la taille du nœud qui sera limitée.
La valeur par défaut 0 ne limite pas les filtres.
Un nœud est un objet dans filterZones dans le document JSON.
Les arguments string sont les valeurs de chaîne correspondantes pour la valeur de chaîne de groupe définie par la directive vhost_traffic_status_filter_by_set_key.
Même si seule la première partie correspond, la correspondance est réussie comme l'expression régulière /^string.*/.
Par défaut, si vous ne définissez pas d'arguments string, cela s'applique à tous les filtres.
Par exemple :
$ vi nginx.conf
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
# Tous les filtres sont limités à un total de 16 nœuds.
# vhost_traffic_status_filter_max_node 16
# Les motifs de chaîne de groupe `/^uris.*/` et `/^client::ports.*/` sont limités à un total de 64 nœuds.
vhost_traffic_status_filter_max_node 16 uris client::ports;
...
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $uri uris::$server_name;
vhost_traffic_status_filter_by_set_key $remote_port client::ports::$server_name;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
}
}
$ for i in {0..1000}; do curl -H 'Host: example.org' -i "http://localhost:80/test$i"; done

Dans l'exemple ci-dessus, les motifs de chaîne de groupe /^uris.*/ et /^client::ports.*/ sont limités à un total de 16 nœuds.
Les autres filtres comme country::.* ne sont pas limités.
vhost_traffic_status_limit
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_limit \<on|off> |
| Par défaut | on |
| Contexte | http, server, location |
Description : Active ou désactive les fonctionnalités de limite.
vhost_traffic_status_limit_traffic
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_limit_traffic member:size [code] |
| Par défaut | - |
| Contexte | http, server, location |
Description : Active la limite de trafic pour le member spécifié.
Le member est une chaîne membre pour limiter le trafic.
Le size est une taille (k/m/g) pour limiter le trafic.
Le code est un code à retourner en réponse aux demandes rejetées. (Par défaut : 503)
Les chaînes member disponibles sont les suivantes :
* request
* Le nombre total de requêtes client reçues.
* in
* Le nombre total de bytes reçus des clients.
* out
* Le nombre total de bytes envoyés aux clients.
* 1xx
* Le nombre de réponses avec des codes d'état 1xx.
* 2xx
* Le nombre de réponses avec des codes d'état 2xx.
* 3xx
* Le nombre de réponses avec des codes d'état 3xx.
* 4xx
* Le nombre de réponses avec des codes d'état 4xx.
* 5xx
* Le nombre de réponses avec des codes d'état 5xx.
* cache_miss
* Le nombre de cache manqué.
* cache_bypass
* Le nombre de contournements de cache.
* cache_expired
* Le nombre de cache expiré.
* cache_stale
* Le nombre de cache obsolète.
* cache_updating
* Le nombre de cache en cours de mise à jour.
* cache_revalidated
* Le nombre de cache revalidé.
* cache_hit
* Le nombre de cache atteint.
* cache_scarce
* Le nombre de cache rare.
vhost_traffic_status_limit_traffic_by_set_key
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_limit_traffic_by_set_key key member:size [code] |
| Par défaut | - |
| Contexte | http, server, location |
Description : Active la limite de trafic pour le key et le member spécifiés.
Le key est une chaîne clé pour limiter le trafic.
Le member est une chaîne membre pour limiter le trafic.
Le size est une taille (k/m/g) pour limiter le trafic.
Le code est un code à retourner en réponse aux demandes rejetées. (Par défaut : 503)
La syntaxe de key est la suivante :
* group@[subgroup@]name
Les chaînes de group disponibles sont les suivantes :
* NO
* Le groupe de serveur.
* UA
* Le groupe d'upstream seul.
* UG
* Le groupe d'upstream group. (utilisez subgroup)
* CC
* Le groupe de cache.
* FG
* Le groupe de filtre. (utilisez subgroup)
Les chaînes de member disponibles sont les suivantes :
* request
* Le nombre total de requêtes client reçues.
* in
* Le nombre total de bytes reçus des clients.
* out
* Le nombre total de bytes envoyés aux clients.
* 1xx
* Le nombre de réponses avec des codes d'état 1xx.
* 2xx
* Le nombre de réponses avec des codes d'état 2xx.
* 3xx
* Le nombre de réponses avec des codes d'état 3xx.
* 4xx
* Le nombre de réponses avec des codes d'état 4xx.
* 5xx
* Le nombre de réponses avec des codes d'état 5xx.
* cache_miss
* Le nombre de cache manqué.
* cache_bypass
* Le nombre de contournements de cache.
* cache_expired
* Le nombre de cache expiré.
* cache_stale
* Le nombre de cache obsolète.
* cache_updating
* Le nombre de cache en cours de mise à jour.
* cache_revalidated
* Le nombre de cache revalidé.
* cache_hit
* Le nombre de cache atteint.
* cache_scarce
* Le nombre de cache rare.
Le member est le même que la directive vhost_traffic_status_limit_traffic.
vhost_traffic_status_limit_check_duplicate
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_limit_check_duplicate \<on|off> |
| Par défaut | on |
| Contexte | http, server, location |
Description : Active ou désactive la dé-duplication de vhost_traffic_status_limit_by_set_key.
Il est traité uniquement un des valeurs en double (member | key + member)
dans chaque directive (http, server, location) si cette option est activée.
vhost_traffic_status_set_by_filter
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_set_by_filter $variable group/zone/name |
| Par défaut | - |
| Contexte | http, server, location, if |
Description : Obtenez la valeur de statut spécifiée stockée en mémoire partagée.
Il peut acquérir presque toutes les valeurs de statut et la valeur obtenue est stockée dans $variable qui est le premier argument.
- group
- server
- filter
- upstream@alone
- upstream@group
- cache
- zone
- server
- name
- filter
- filter_group@name
- upstream@group
- upstream_group@name
- upstream@alone
- @name
- cache
- name
- name
- requestCounter
- Le nombre total de requêtes client reçues.
- requestMsecCounter
- Le nombre de temps de traitement des requêtes accumulées en millisecondes.
- requestMsec
- La moyenne des temps de traitement des requêtes en millisecondes.
- responseMsecCounter
- Le nombre de temps de traitement des réponses uniquement upstream accumulées en millisecondes.
- responseMsec
- La moyenne des temps de traitement des réponses uniquement upstream en millisecondes.
- inBytes
- Le nombre total de bytes reçus des clients.
- outBytes
- Le nombre total de bytes envoyés aux clients.
- 1xx, 2xx, 3xx, 4xx, 5xx
- Le nombre de réponses avec des codes d'état 1xx, 2xx, 3xx, 4xx et 5xx.
- cacheMaxSize
- La limite de la taille maximale du cache spécifiée dans la configuration.
- cacheUsedSize
- La taille actuelle du cache.
- cacheMiss
- Le nombre de cache manqué.
- cacheBypass
- Le nombre de contournements de cache.
- cacheExpired
- Le nombre de cache expiré.
- cacheStale
- Le nombre de cache obsolète.
- cacheUpdating
- Le nombre de cache en cours de mise à jour.
- cacheRevalidated
- Le nombre de cache revalidé.
- cacheHit
- Le nombre de cache atteint.
- cacheScarce
- Le nombre de cache rare.
- weight
- Paramètre de poids 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. (0|1)
- down
- Paramètre down actuel du serveur. (0|1)
Avertissements : Le name est sensible à la casse. Toutes les valeurs de retour prennent le type entier.
Par exemple :
* requestCounter dans serverZones
* vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter
* requestCounter dans filterZones
* vhost_traffic_status_set_by_filter $requestCounter filter/country::example.org@KR/requestCounter
* requestCounter dans upstreamZones
* vhost_traffic_status_set_by_filter $requestCounter upstream@group/[email protected]:80/requestCounter
* requestCounter dans upstreamZones::nogroups
* vhost_traffic_status_set_by_filter $requestCounter upstream@alone/10.10.10.11:80/requestCounter
* cacheHit dans cacheZones
* vhost_traffic_status_set_by_filter $cacheHit cache/my_cache_name/cacheHit
vhost_traffic_status_average_method
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_average_method \<AMM|WMA> [period] |
| Par défaut | AMM 60s |
| Contexte | http, server, location |
Description : Définit la méthode qui est une formule qui calcule la moyenne des temps de traitement des réponses.
Le period est un temps effectif des valeurs utilisées pour le calcul de la moyenne. (Par défaut : 60s)
Si period est défini à 0, le temps effectif est ignoré.
Dans ce cas, la dernière valeur moyenne est affichée même s'il n'y a pas de requêtes et après l'écoulement du temps.
Les valeurs correspondantes sont requestMsec et responseMsec dans JSON.
- AMM
- L'AMM est la moyenne arithmétique.
- WMA
- La WMA est la moyenne mobile pondérée.
vhost_traffic_status_histogram_buckets
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_histogram_buckets second ... |
| Par défaut | - |
| Contexte | http, server, location |
Description : Définit les seaux d'observation à utiliser dans les histogrammes.
Par défaut, si vous ne définissez pas cette directive, elle ne fonctionnera pas.
Le second peut être exprimé en décimales avec une valeur minimale de 0.001 (1ms).
La taille maximale des seaux est de 32. Si cette valeur est insuffisante pour vous,
changez le NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN dans le src/ngx_http_vhost_traffic_status_node.h
Par exemple :
* vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1 0.5 1 5 10
* Les seaux d'observation sont [5ms 10ms 50ms 100ms 500ms 1s 5s 10s].
* vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1
* Les seaux d'observation sont [5ms 10ms 50ms 100ms].
Avertissements : Par défaut, si vous ne définissez pas cette directive, les statistiques d'histogramme ne fonctionnent pas.
Les histogrammes restaurés par la directive vhost_traffic_status_dump ne sont pas affectés par les changements des seaux
par la directive vhost_traffic_status_histogram_buckets.
Donc, vous devez d'abord supprimer la zone ou le fichier dump avant de changer les seaux
par la directive vhost_traffic_status_histogram_buckets.
De même, supprimez le fichier dump lors de l'utilisation de l'histogramme pour la première fois.
vhost_traffic_status_bypass_limit
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_bypass_limit \<on|off> |
| Par défaut | off |
| Contexte | http, server, location |
Description : Active ou désactive le contournement des directives vhost_traffic_status_limit.
Les fonctionnalités de limite sont contournées si cette option est activée.
Ceci est principalement utile si vous souhaitez vous connecter à la page Web de statut comme /status indépendamment des directives vhost_traffic_status_limit comme suit :
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
vhost_traffic_status_bypass_stats
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_bypass_stats \<on|off> |
| Par défaut | off |
| Contexte | http, server, location |
Description : Active ou désactive le contournement de vhost_traffic_status.
Les fonctionnalités de statistiques de statut de trafic sont contournées si cette option est activée.
En d'autres termes, cela est exclu des statistiques de statut de trafic.
Ceci est principalement utile si vous souhaitez ignorer votre demande dans la page Web de statut comme /status comme suit :
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
vhost_traffic_status_stats_by_upstream
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_stats_by_upstream \<on|off> |
| Par défaut | on |
| Contexte | http |
Description : Active ou désactive les statistiques upstreamZone.
La upstreamZone dans les fonctionnalités de statistiques de statut de trafic est contournée si cette option est désactivée.
En d'autres termes, cela est exclu des statistiques de statut de trafic.
Ceci est principalement utile si vous souhaitez désactiver la collecte de statistiques pour les serveurs upstream afin de réduire la charge CPU.
http {
vhost_traffic_status_zone;
vhost_traffic_status_stats_by_upstream off;
proxy_cache_path /var/cache/nginx keys_zone=zone1:1m max_size=1g inactive=24h;
upstream backend {
...
}
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
location /backend {
proxy_cache zone1;
proxy_pass http://backend;
}
}
}
vhost_traffic_status_measure_status_codes
Permet le suivi de codes d'état HTTP spécifiques ou de tous les codes d'état dans le module Vhost Traffic Status.
| - | - |
|---|---|
| Syntaxe | vhost_traffic_status_measure_status_codes [all] [status_code1] [status_code2] ... |
| Par défaut | off |
| Contexte | http |
Paramètres
status_code1, status_code2, ...: Codes d'état HTTP spécifiques à suivre (100-599)all: Suivre tous les codes d'état HTTP
Exemples
Suivre des codes d'état spécifiques :
vhost_traffic_status_measure_status_codes 200 404 500;
Suivre tous les codes d'état :
vhost_traffic_status_measure_status_codes all;
Description
- Par défaut, aucun suivi de code d'état spécifique n'est activé
- Les codes d'état doivent être dans l'ordre croissant
- Seuls les codes d'état HTTP valides entre 100 et 599 sont acceptés
- Lors de l'utilisation de
all, chaque code d'état sera suivi
Versions
Pour effectuer une version, créez une entrée de changelog PR avec git-chglog
version="v0.2.0"
git checkout -b "cut-${version}"
git-chglog -o CHANGELOG.md --next-tag "${version}"
git add CHANGELOG.md
sed -i "s/NGX_HTTP_VTS_MODULE_VERSION \".*/NGX_HTTP_VTS_MODULE_VERSION \"${version}\"/" src/ngx_http_vhost_traffic_status_module.h
git add src/ngx_http_vhost_traffic_status_module.h
git-chglog -t .chglog/RELNOTES.tmpl --next-tag "${version}" "${version}" | git commit -F-
Après que la PR soit fusionnée, créez le nouveau tag et la version sur les GitHub Releases.
Voir aussi
- Statut du trafic stream
- nginx-module-sts
-
Prometheus
-
Protection du système
- nginx-module-sysguard
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub de nginx-module-vts.