sts: Module de statut du trafic serveur de flux 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-sts
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-sts
Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :
load_module modules/ngx_http_stream_server_traffic_status_module.so;
Ce document décrit nginx-module-sts v0.1.1 publié le 4 juillet 2018.
Module de statut du trafic serveur de flux Nginx
Captures d'écran

Synopsis
http {
stream_server_traffic_status_zone;
...
server {
...
location /status {
stream_server_traffic_status_display;
stream_server_traffic_status_display_format html;
}
}
}
stream {
server_traffic_status_zone;
...
server {
...
}
}
Description
Il s'agit d'un module Nginx qui fournit un accès aux informations de statut du trafic serveur de flux. C'est une version portage du nginx-module-vts vers le sous-système "stream" de NGINX afin de prendre en charge les mêmes fonctionnalités que dans nginx-module-vts. Il contient le statut actuel tel que serveurs, upstreams, filtre défini par l'utilisateur.
Tout d'abord, il est nécessaire d'avoir à la fois la directive server_traffic_status_zone dans le bloc stream et stream_server_traffic_status_zone dans le bloc http, et ensuite, si la directive stream_server_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 Contrôle.
Le document JSON contient ce qui suit :
{
"hostName": ...,
"nginxVersion": ...,
"loadMsec": ...,
"nowMsec": ...,
"connections": {
"active":...,
"reading":...,
"writing":...,
"waiting":...,
"accepted":...,
"handled":...,
"requests":...
},
"sharedZones": {
"name":...,
"maxSize":...,
"usedSize":...,
"usedNode":...
},
"streamServerZones": {
"...":{
"port":...,
"protocol":...,
"connectCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
},
"sessionMsecCounter":...,
"sessionMsec":...,
"sessionMsecs":{
"times":[...],
"msecs":[...]
},
"sessionBuckets":{
"msecs":[...],
"counters":[...]
}
}
...
},
"streamFilterZones": {
"...":{
"...":{
"port":...,
"protocol":...,
"connectCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
},
"sessionMsecCounter":...,
"sessionMsec":...,
"sessionMsecs":{
"times":[...],
"msecs":[...]
},
"sessionBuckets":{
"msecs":[...],
"counters":[...]
}
},
...
},
...
},
"streamUpstreamZones": {
"...":[
{
"server":...,
"connectCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...
},
"sessionMsecCounter":...,
"sessionMsec":...,
"sessionMsecs":{
"times":[...],
"msecs":[...]
},
"sessionBuckets":{
"msecs":[...]
"counters":[...]
},
"uSessionMsecCounter":...,
"uSessionMsec":...,
"uSessionMsecs":{
"times":[...],
"msecs":[...]
},
"uSessionBuckets":{
"msecs":[...]
"counters":[...]
},
"uConnectMsecCounter":...,
"uConnectMsec":...,
"uConnectMsecs":{
"times":[...],
"msecs":[...]
},
"uConnectBuckets":{
"msecs":[...]
"counters":[...]
},
"uFirstByteMsecCounter":...,
"uFirstByteMsec":...,
"uFirstByteMsecs":{
"times":[...],
"msecs":[...]
},
"uFirstByteBuckets":{
"msecs":[...]
"counters":[...]
},
"weight":...,
"maxFails":...,
"failTimeout":...,
"backup":...,
"down":...
}
...
],
...
}
}
- principal
- Version de base, temps de fonctionnement((nowMsec - loadMsec)/1000)
- nowMsec, loadMsec est en millisecondes.
- connexions
- Total des connexions et des demandes (identique à stub_status_module dans NGINX)
- streamServerZones
- Trafic (entrant/sortant) et comptes de demandes et de réponses et statut (1xx, 2xx...) taux de réussite par zone de serveur
- Trafic total (entrant/sortant) et comptes de demandes et de réponses (le nom de la zone est
*) et taux de réussite - streamFilterZones
- Trafic (entrant/sortant) et comptes de demandes et de réponses et statut (1xx, 2xx...) taux de réussite par zone de serveur filtrée par la directive
server_traffic_status_filter_by_set_key - Trafic total (entrant/sortant) et comptes de demandes et de réponses (le nom de la zone est
*) et taux de réussite filtrés par la directiveserver_traffic_status_filter_by_set_key - streamUpstreamZones
- Trafic (entrant/sortant) et comptes de demandes et de réponses par serveur dans chaque groupe upstream
- Paramètres actuels (poids, maxfails, failtimeout...) dans nginx.conf
La directive stream_server_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 :
- streamServerZones
- in += requested_bytes
- out += sent_bytes
- streamFilterZones
- in += requested_bytes via le filtre
- out += sent_bytes via le filtre
- streamUpstreamZones
- 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.
Avertissements : ce module repose sur le système de journalisation de nginx (NGX_STREAM_LOG_PHASE : dernière phase du flux nginx), donc le trafic peut être
dans certaines circonstances différent du trafic de bande passante réel.
Websocket, téléchargements annulés peuvent être la cause d'inexactitudes.
Le fonctionnement du module ne dépend pas du tout de la directive access_log "on" ou "off".
Encore une fois, ce module fonctionne bien avec "access_log off".
Contrôle
Il est possible de réinitialiser ou de supprimer des zones de trafic via une chaîne de requête. La demande répond avec un document JSON.
- Syntaxe URI
- /
{status_uri}/control?cmd={command}&group={group}&zone={name}
http {
stream_server_traffic_status_zone;
...
server {
server_name example.org;
...
location /status {
stream_server_traffic_status_display;
stream_server_traffic_status_display_format html;
}
} }
}
stream {
geoip_country /usr/share/GeoIP/GeoIP.dat;
server_traffic_status_zone;
server_traffic_status_filter_by_set_key $geoip_country_code country::*;
server {
...
}
...
}
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|*>
* server
* filter
* upstream@alone
* upstream@group
* *
* zone=name
* server
* name
* filter
* filter_group@name
* upstream@group
* upstream_group@name
* upstream@alone
* @name
Pour obtenir le statut des zones de trafic à la volée
C'est similaire à status/format/json sauf que cela 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 des zones de groupe
- streamServerZones
- /status/control?cmd=status&group=server&zone=*
- streamFilterZones
- /status/control?cmd=status&group=filter&zone=*
- streamUpstreamZones
- /status/control?cmd=status&group=upstream@group&zone=*
- streamUpstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=*
Pour obtenir chaque zone
- zone unique dans streamServerZones
- /status/control?cmd=status&group=server&zone=
name - zone unique dans streamFilterZones
- /status/control?cmd=status&group=filter&zone=
filter_group@name - zone unique dans streamUpstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - zone unique dans streamUpstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&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 des zones de groupe
- streamServerZones
- /status/control?cmd=reset&group=server&zone=*
- streamFilterZones
- /status/control?cmd=reset&group=filter&zone=*
- streamUpstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=*
- streamUpstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=*
Pour réinitialiser chaque zone
- zone unique dans streamServerZones
- /status/control?cmd=reset&group=server&zone=
name - zone unique dans streamFilterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - zone unique dans streamUpstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - zone unique dans streamUpstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name
Pour supprimer des 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 des zones de groupe
- streamServerZones
- /status/control?cmd=delete&group=server&zone=*
- streamFilterZones
- /status/control?cmd=delete&group=filter&zone=*
- streamUpstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=*
- streamUpstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=*
Pour supprimer chaque zone
- zone unique dans streamServerZones
- /status/control?cmd=delete&group=server&zone=
name - zone unique dans streamFilterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - zone unique dans streamUpstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - zone unique dans streamUpstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name
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.
- nginxVersion
- Version fournie.
- loadMsec
- Temps de chargement du processus en millisecondes.
- nowMsec
- Temps actuel en millisecondes
- connexions
- 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. (par défaut :
stream_server_traffic_status)
- Le nom de la mémoire partagée spécifié 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 utilisant la mémoire partagée. On peut obtenir une taille approximative pour un nœud avec la formule suivante : (usedSize / usedNode)
- streamServerZones
- connectCounter
- Le nombre total de demandes client reçues des clients.
- 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 des codes d'état 1xx, 2xx, 3xx, 4xx et 5xx.
- sessionMsecCounter
- Le nombre de temps de traitement des demandes accumulé en millisecondes.
- sessionMsec
- La moyenne des temps de traitement des demandes en millisecondes.
- sessionMsecs
- times
- Les temps en millisecondes lors des temps de traitement des demandes.
- msecs
- Les temps de traitement des demandes en millisecondes.
- sessionBuckets
- msecs
- Les valeurs de seau de l'histogramme définies par la directive
server_traffic_status_histogram_buckets. - counters
- Les valeurs cumulées pour la raison que chaque valeur de seau est supérieure ou égale au temps de traitement de la demande.
- streamFilterZones
- Il fournit les mêmes champs que
streamServerZonessauf qu'il inclut les noms de groupe. - streamUpstreamZones
- server
- Une adresse du serveur.
- connectCounter
- 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 des codes d'état 1xx, 2xx, 3xx, 4xx et 5xx.
- sessionMsecCounter
- Le nombre de temps de traitement des demandes accumulé en millisecondes, y compris l'upstream.
- sessionMsec
- La moyenne des temps de traitement des demandes en millisecondes, y compris l'upstream.
- sessionMsecs
- times
- Les temps en millisecondes lors des temps de traitement des demandes.
- msecs
- Les temps de traitement des demandes en millisecondes, y compris l'upstream.
- sessionBuckets
- msecs
- Les valeurs de seau de l'histogramme définies par la directive
server_traffic_status_histogram_buckets. - counters
- Les valeurs cumulées pour la raison que chaque valeur de seau est supérieure ou égale au temps de traitement des demandes.
- uSessionMsecCounter
- Le nombre de temps accumulé en millisecondes pour la durée de la session au serveur upstream.
- uSessionMsec
- La moyenne des temps de durée de session en millisecondes au serveur upstream.
- uSessionMsecs
- times
- Les temps en millisecondes lors des temps de traitement des demandes.
- msecs
- Les temps de durée de session en millisecondes au serveur upstream.
- uSessionBuckets
- msecs
- Les valeurs de seau de l'histogramme définies par la directive
server_traffic_status_histogram_buckets. - counters
- Les valeurs cumulées pour la raison que chaque valeur de seau est supérieure ou égale au temps de durée de session au serveur upstream.
- uConnectMsecCounter
- Le nombre de temps accumulé en millisecondes pour se connecter au serveur upstream.
- uConnectMsec
- La moyenne des temps en millisecondes pour se connecter au serveur upstream (1.11.4).
- uConnectMsecs
- times
- Les temps en millisecondes lors des temps de traitement des demandes.
- msecs
- Les temps en millisecondes pour se connecter au serveur upstream.
- uConnectBuckets
- msecs
- Les valeurs de seau de l'histogramme définies par la directive
server_traffic_status_histogram_buckets. - counters
- Les valeurs cumulées pour la raison que chaque valeur de seau est supérieure ou égale au temps pour se connecter au serveur upstream.
- uFirstByteMsecCounter
- Le nombre de temps accumulé en millisecondes pour recevoir le premier byte de données.
- uFirstByteMsec
- La moyenne des temps en millisecondes pour recevoir le premier byte de données (1.11.4).
- uFirstByteMsecs
- times
- Les temps en millisecondes lors des temps de traitement des demandes.
- msecs
- Les temps en millisecondes pour recevoir le premier byte de données (1.11.4).
- uFirstByteBuckets
- msecs
- Les valeurs de seau de l'histogramme définies par la directive
server_traffic_status_histogram_buckets. - counters
- Les valeurs cumulées pour la raison que chaque valeur de seau est supérieure ou égale au temps pour recevoir le premier byte de données.
- 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.
- Paramètre
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 traitements effectifs.
Variables
Les variables intégrées suivantes sont fournies dans le bloc stream :
- $sts_connect_counter
- Le nombre total de demandes client reçues des clients.
- $sts_in_bytes
- Le nombre total de bytes reçus des clients.
- $sts_out_bytes
- Le nombre total de bytes envoyés aux clients.
- $sts_1xx_counter
- Le nombre de réponses avec des codes d'état 1xx.
- $sts_2xx_counter
- Le nombre de réponses avec des codes d'état 2xx.
- $sts_3xx_counter
- Le nombre de réponses avec des codes d'état 3xx.
- $sts_4xx_counter
- Le nombre de réponses avec des codes d'état 4xx.
- $sts_5xx_counter
- Le nombre de réponses avec des codes d'état 5xx.
- $sts_session_time
- La moyenne des temps de traitement des demandes.
Limite
Il est possible de limiter le trafic total par serveur en utilisant la directive
server_traffic_status_limit_traffic.
Il est également possible de limiter tout le trafic en utilisant la directive
server_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
stream {
server_traffic_status_zone;
...
server {
listen 1981;
server_traffic_status_limit_traffic in:64G;
server_traffic_status_limit_traffic out:1024G;
...
}
}
- Limite le trafic total entrant/sortant sur le
1981/tcpà 64G et 1024G respectivement.
Pour limiter le trafic pour le filtre
stream {
geoip_country /usr/share/GeoIP/GeoIP.dat;
server_traffic_status_zone;
...
server {
listen 1981;
server_traffic_status_filter_by_set_key $geoip_country_code country::$server_addr;
server_traffic_status_limit_traffic_by_set_key FG@country::$server_addr@US out:1024G;
server_traffic_status_limit_traffic_by_set_key FG@country::$server_addr@CN out:2048G;
...
}
}
- Limite le trafic total entrant vers les États-Unis et la Chine sur
example.orgà 1024G et 2048G respectivement.
Pour limiter le trafic pour l'upstream
stream {
server_traffic_status_zone;
...
upstream backend {
server 10.10.10.17:80;
server 10.10.10.18:80;
}
server {
listen 1981;
server_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:512G;
server_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:1024G;
proxy_pass backend;
...
}
}
- Limite le trafic total entrant vers l'upstream backend sur le
1981/tcpà 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 server_traffic_status_filter_by_set_key.
Pour calculer le trafic pour un pays individuel en utilisant GeoIP
stream {
geoip_country /usr/share/GeoIP/GeoIP.dat;
server_traffic_status_zone;
server_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
...
server_traffic_status_filter_by_set_key $geoip_country_code country::$server_addr:$server_port;
}
}
- Calcule le trafic pour chaque pays des groupes de serveurs totaux.
- Calcule le trafic pour chaque pays de chaque groupe de serveurs.
Fondamentalement, les images des drapeaux des pays sont intégrées dans HTML.
L'image des drapeaux des 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 server_traffic_status_filter_by_set_key.
Personnalisation
Pour personnaliser après l'installation du module
-
Vous devez changer la chaîne
{{uri}}par votre uri de statut dans status.template.html comme suit :shell> vi share/status.template.htmlvar vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000; -
Et 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 demandes pour / vers /status.html location = / { return 301 /status.html; } location = /status.html {} # Tout ce qui commence par /status (sauf /status.html) est # traité par le gestionnaire de statut location /status { stream_server_traffic_status_display; stream_server_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_stream_server_traffic_status_module_html.hcomme suit :shell> cd util shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_stream_server_traffic_status_module_html.h -
Ajoutez le module à la configuration de construction en ajoutant
--add-module=/path/to/nginx-module-sts --add-module=/path/to/nginx-module-stream-sts -
Construisez le binaire nginx.
-
Installez le binaire nginx.
Directives
stream_server_traffic_status
| - | - |
|---|---|
| Syntaxe | stream_server_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 stream_server_traffic_status_zone, elle est automatiquement activée.
stream_server_traffic_status_zone
| - | - |
|---|---|
| Syntaxe | stream_server_traffic_status_zone [shared:name] |
| Par défaut | shared:stream_server_traffic_status |
| Contexte | http |
Description : Définit les paramètres pour une zone de mémoire partagée spécifiée par la directive server_traffic_status_zone
dans le bloc stream.
Avertissements : Le name doit être le même que celui spécifié par server_traffic_status_zone.
stream_server_traffic_status_display
| - | - |
|---|---|
| Syntaxe | stream_server_traffic_status_display |
| Par défaut | - |
| Contexte | http, server, location |
Description : Active ou désactive le gestionnaire d'affichage du module.
stream_server_traffic_status_display_format
| - | - |
|---|---|
| Syntaxe | stream_server_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_stream_server_traffic_status_jsonp_callback).
Si vous définissez prometheus, cela répondra avec un document prometheus.
stream_server_traffic_status_display_jsonp
| - | - |
|---|---|
| Syntaxe | stream_server_traffic_status_display_jsonp callback |
| Par défaut | ngx_http_stream_server_traffic_status_jsonp_callback |
| Contexte | http, server, location |
Description : Définit le nom de la fonction de rappel pour le JSONP.
stream_server_traffic_status_average_method
| - | - |
|---|---|
| Syntaxe | stream_server_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 pour calculer la moyenne des temps de traitement des réponses.
La période est un temps effectif des valeurs utilisées pour le calcul de la moyenne. (Par défaut : 60s)
Si period est défini sur 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 demandes et après l'écoulement du temps.
Les valeurs correspondantes sont sessionMsec, uSessionMsec, uConnectMsec, uFirstByteMsec dans JSON.
- AMM
- L'AMM est la moyenne arithmétique.
- WMA
- La WMA est la moyenne mobile pondérée.
server_traffic_status
| - | - |
|---|---|
| Syntaxe | server_traffic_status \<on|off> |
| Par défaut | off |
| Contexte | stream, server |
Description : Active ou désactive le fonctionnement du module.
Si vous définissez la directive server_traffic_status_zone, elle est automatiquement activée.
server_traffic_status_zone
| - | - |
|---|---|
| Syntaxe | server_traffic_status_zone [shared:name:size] |
| Par défaut | shared:stream_server_traffic_status:1m |
| Contexte | stream |
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.
server_traffic_status_filter
| - | - |
|---|---|
| Syntaxe | server_traffic_status_filter \<on|off> |
| Par défaut | on |
| Contexte | stream, server |
Description : Active ou désactive les fonctionnalités de filtrage.
server_traffic_status_filter_by_set_key
| - | - |
|---|---|
| Syntaxe | server_traffic_status_filter_by_set_key key [name] |
| Par défaut | - |
| Contexte | stream, server |
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 le name peuvent contenir des variables telles que $host, $server_addr, $server_port.
Le groupe du name appartient à streamFilterZones s'il est spécifié.
Le groupe du key appartient à streamServerZones s'il n'y a pas de deuxième argument name spécifié.
L'exemple avec le module geoip est le suivant :
stream {
...
server {
listen 1981;
server_traffic_status_filter_by_set_key $geoip_country_code country::$server_addr:$server_port;
...
}
}
...
"streamServerZones": {
...
},
"streamFilterZones": {
"country::example.org": {
"KR": {
"port":...,
"protocol":...,
"connectCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
},
"sessionMsec":...
"sessionMsecs":{
"times":[...],
"msecs":[...]
},
},
},
"US": {
...
},
...
},
...
},
...
server_traffic_status_filter_check_duplicate
| - | - |
|---|---|
| Syntaxe | server_traffic_status_filter_check_duplicate \<on|off> |
| Par défaut | on |
| Contexte | stream, server |
Description : Active ou désactive la dé-duplication de server_traffic_status_filter_by_set_key.
Elle ne traite qu'une seule des valeurs dupliquées (key + name) dans chaque directive (stream, server) si cette option est activée.
server_traffic_status_limit
| - | - |
|---|---|
| Syntaxe | server_traffic_status_limit \<on|off> |
| Par défaut | on |
| Contexte | stream, server |
Description : Active ou désactive les fonctionnalités de limite.
server_traffic_status_limit_traffic
| - | - |
|---|---|
| Syntaxe | server_traffic_status_limit_traffic member:size [code] |
| Par défaut | - |
| Contexte | stream, server |
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 :
* connect
* Le nombre total de connexions client reçues des clients.
* 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.
server_traffic_status_limit_traffic_by_set_key
| - | - |
|---|---|
| Syntaxe | server_traffic_status_limit_traffic_by_set_key key member:size [code] |
| Par défaut | - |
| Contexte | stream, server |
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 group disponibles sont les suivantes :
* NO
* Le groupe de serveur.
* UA
* Le groupe d'upstream seul.
* UG
* Le groupe d'upstream group. (utilisez subgroup)
* FG
* Le groupe de filtre. (utilisez subgroup)
Les chaînes member disponibles sont les suivantes :
* connect
* Le nombre total de demandes client reçues des clients.
* 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.
Le member est le même que la directive server_traffic_status_limit_traffic.
server_traffic_status_limit_check_duplicate
| - | - |
|---|---|
| Syntaxe | server_traffic_status_limit_check_duplicate \<on|off> |
| Par défaut | on |
| Contexte | stream, server |
Description : Active ou désactive la dé-duplication de server_traffic_status_limit_by_set_key.
Elle ne traite qu'une seule des valeurs dupliquées (member | key + member)
dans chaque directive (stream, server) si cette option est activée.
server_traffic_status_average_method
| - | - |
|---|---|
| Syntaxe | server_traffic_status_average_method \<AMM|WMA> [period] |
| Par défaut | AMM 60s |
| Contexte | stream, server |
Description : Définit la méthode qui est une formule pour calculer la moyenne des temps de traitement des réponses.
La période est un temps effectif des valeurs utilisées pour le calcul de la moyenne. (Par défaut : 60s)
Si period est défini sur 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 demandes et après l'écoulement du temps.
La valeur correspondante est uniquement la variable $sts_session_time.
- AMM
- L'AMM est la moyenne arithmétique.
- WMA
- La WMA est la moyenne mobile pondérée.
Avertissements : La variable $sts_session_time est la valeur calculée au moment de la dernière demande.
Elle n'est pas calculée lors de l'utilisation de variables.
server_traffic_status_histogram_buckets
| - | - |
|---|---|
| Syntaxe | server_traffic_status_histogram_buckets second ... |
| Par défaut | - |
| Contexte | stream |
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,
modifiez NGX_STREAM_SERVER_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN dans le
nginx-mdule-stream-sts/src/ngx_stream_server_traffic_status_node.h
et NGX_HTTP_STREAM_SERVER_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN dans le
nginx-module-sts/src/ngx_http_stream_server_traffic_status_node.h.
Par exemple :
* server_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 1s 5s 10s].
* server_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1
* Les seaux d'observation sont [5ms 10ms 50ms 1s].
Avertissements : Par défaut, si vous ne définissez pas cette directive, les statistiques de l'histogramme ne fonctionnent pas.
Voir aussi
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-sts.