sts: Módulo de estado del tráfico del servidor de transmisión de Nginx
Instalación
Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:
- RedHat Enterprise Linux 7, 8, 9 y 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 y 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
Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:
load_module modules/ngx_http_stream_server_traffic_status_module.so;
Este documento describe nginx-module-sts v0.1.1 lanzado el 04 de julio de 2018.
Módulo de estado del tráfico del servidor de transmisión de Nginx
Capturas de pantalla

Sinopsis
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 {
...
}
}
Descripción
Este es un módulo de Nginx que proporciona acceso a la información del estado del tráfico del servidor de transmisión. Esta es una versión porting del nginx-module-vts al subsistema "stream" de NGINX para soportar las mismas características en nginx-module-vts. Contiene el estado actual, como servidores, upstreams, y filtros definidos por el usuario.
Primero que nada, se requiere tanto la directiva server_traffic_status_zone en el bloque de stream como stream_server_traffic_status_zone en el bloque http, y luego si la directiva stream_server_traffic_status_display está configurada, se puede acceder de la siguiente manera:
- /status/format/json
- Si solicitas
/status/format/json, responderá con un documento JSON que contiene los datos de actividad actuales para usar en tableros en vivo y herramientas de monitoreo de terceros. - /status/format/html
- Si solicitas
/status/format/html, responderá con el tablero en vivo incorporado en HTML que solicita internamente a/status/format/json. - /status/format/jsonp
- Si solicitas
/status/format/jsonp, responderá con una función de callback JSONP que contiene los datos de actividad actuales para usar en tableros en vivo y herramientas de monitoreo de terceros. - /status/format/prometheus
- Si solicitas
/status/format/prometheus, responderá con un documento prometheus que contiene los datos de actividad actuales. - /status/control
- Si solicitas
/status/control, responderá con un documento JSON después de restablecer o eliminar zonas a través de una cadena de consulta. Consulta el Control.
El documento JSON contiene lo siguiente:
{
"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":...
}
...
],
...
}
}
- main
- Versión básica, tiempo de actividad((nowMsec - loadMsec)/1000)
- nowMsec, loadMsec es un milisegundo.
- connections
- Total de conexiones y solicitudes (igual que stub_status_module en NGINX)
- streamServerZones
- Tráfico (entrada/salida) y conteos de solicitudes y respuestas y estado (1xx, 2xx...) tasa de aciertos por cada zona de servidor
- Tráfico total (Entrada/Salida) y conteos de solicitudes y respuestas (el nombre de la zona es
*) y tasa de aciertos - streamFilterZones
- Tráfico (entrada/salida) y conteos de solicitudes y respuestas y estado (1xx, 2xx...) tasa de aciertos por cada zona de servidor filtrada a través de la directiva
server_traffic_status_filter_by_set_key - Tráfico total (Entrada/Salida) y conteos de solicitudes y respuestas (el nombre de la zona es
*) y tasa de aciertos filtrada a través de la directivaserver_traffic_status_filter_by_set_key - streamUpstreamZones
- Tráfico (entrada/salida) y conteos de solicitudes y respuestas por servidor en cada grupo upstream
- Configuraciones actuales (peso, maxfails, failtimeout...) en nginx.conf
La directiva stream_server_traffic_status_display_format establece el formato de salida predeterminado que es uno de json, jsonp, html, prometheus. (Predeterminado: json)
El cálculo del tráfico es el siguiente:
- streamServerZones
- in += requested_bytes
- out += sent_bytes
- streamFilterZones
- in += requested_bytes a través del filtro
- out += sent_bytes a través del filtro
- streamUpstreamZones
- in += requested_bytes a través de los ServerZones
- out += sent_bytes a través de los ServerZones
Todos los cálculos se realizan en la fase de procesamiento de registros de Nginx.
Advertencias: este módulo depende del sistema de registro de nginx (NGX_STREAM_LOG_PHASE: última fase del stream de nginx), por lo que el tráfico puede ser en ciertas circunstancias diferente al tráfico real de ancho de banda.
Websocket, descargas canceladas pueden ser causa de inexactitudes.
El funcionamiento del módulo no importa en absoluto si la directiva access_log está "on" o "off".
Nuevamente, este módulo funciona bien con "access_log off".
Control
Es posible restablecer o eliminar zonas de tráfico a través de una cadena de consulta. La solicitud responde con un documento JSON.
- Sintaxis 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 se establece como arriba, entonces la URI de control es como example.org/status/control.
Los argumentos de solicitud disponibles son los siguientes:
* cmd=\<status|reset|delete>
* status
* Devuelve el estado de las zonas de tráfico en formato json como status/format/json.
* reset
* Restablece las zonas de tráfico sin eliminar nodos en la memoria compartida. (= inicializa a 0)
* delete
* Elimina las zonas de tráfico en la memoria compartida. cuando se vuelve a solicitar se recrean.
* 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
Para obtener el estado de las zonas de tráfico al instante
Esto es similar a status/format/json excepto que puede obtener cada zona.
Para obtener todas las zonas
- Es exactamente lo mismo que
status/format/json. - /status/control?cmd=status&group=*
Para obtener zonas de grupo
- 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=*
Para obtener cada zona
- zona única en streamServerZones
- /status/control?cmd=status&group=server&zone=
name - zona única en streamFilterZones
- /status/control?cmd=status&group=filter&zone=
filter_group@name - zona única en streamUpstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - zona única en streamUpstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
name
Para restablecer zonas de tráfico al instante
Restablece los valores de las zonas especificadas a 0.
Para restablecer todas las zonas
- /status/control?cmd=reset&group=*
Para restablecer zonas de grupo
- 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=*
Para restablecer cada zona
- zona única en streamServerZones
- /status/control?cmd=reset&group=server&zone=
name - zona única en streamFilterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - zona única en streamUpstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - zona única en streamUpstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name
Para eliminar zonas de tráfico al instante
Elimina las zonas especificadas en la memoria compartida.
Para eliminar todas las zonas
- /status/control?cmd=delete&group=*
Para eliminar zonas de grupo
- 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=*
Para eliminar cada zona
- zona única en streamServerZones
- /status/control?cmd=delete&group=server&zone=
name - zona única en streamFilterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - zona única en streamUpstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - zona única en streamUpstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name
JSON
La siguiente información de estado se proporciona en formato JSON:
Json utilizado por el estado
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- Nombre del host.
- nginxVersion
- Versión de NGINX proporcionada.
- loadMsec
- Tiempo de proceso cargado en milisegundos.
- nowMsec
- Hora actual en milisegundos.
- connections
- active
- El número actual de conexiones de cliente activas.
- reading
- El número total de conexiones de cliente en lectura.
- writing
- El número total de conexiones de cliente en escritura.
- waiting
- El número total de conexiones de cliente en espera.
- accepted
- El número total de conexiones de cliente aceptadas.
- handled
- El número total de conexiones de cliente manejadas.
- requests
- El número total de conexiones de cliente solicitadas.
- sharedZones
- name
- El nombre de la memoria compartida especificada en la configuración. (predeterminado:
stream_server_traffic_status)
- El nombre de la memoria compartida especificada en la configuración. (predeterminado:
- maxSize
- El límite en el tamaño máximo de la memoria compartida especificada en la configuración.
- usedSize
- El tamaño actual de la memoria compartida.
- usedNode
- El número actual de nodos que utilizan la memoria compartida. Se puede obtener un tamaño aproximado para un nodo con la siguiente fórmula: (usedSize / usedNode)
- streamServerZones
- connectCounter
- El número total de solicitudes de cliente recibidas de los clientes.
- inBytes
- El número total de bytes recibidos de los clientes.
- outBytes
- El número total de bytes enviados a los clientes.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- El número de respuestas con códigos de estado 1xx, 2xx, 3xx, 4xx y 5xx.
- sessionMsecCounter
- El número de tiempo acumulado de procesamiento de solicitudes en milisegundos.
- sessionMsec
- El promedio de los tiempos de procesamiento de solicitudes en milisegundos.
- sessionMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos de procesamiento de solicitudes en milisegundos.
- sessionBuckets
- msecs
- Los valores de los cubos del histograma establecidos por la directiva
server_traffic_status_histogram_buckets. - counters
- Los valores acumulativos por la razón de que cada valor de cubo es mayor o igual al tiempo de procesamiento de la solicitud.
- streamFilterZones
- Proporciona los mismos campos que
streamServerZonesexcepto que incluye nombres de grupo. - streamUpstreamZones
- server
- Una dirección del servidor.
- connectCounter
- El número total de conexiones de cliente reenviadas a este servidor.
- inBytes
- El número total de bytes recibidos de este servidor.
- outBytes
- El número total de bytes enviados a este servidor.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- El número de respuestas con códigos de estado 1xx, 2xx, 3xx, 4xx y 5xx.
- sessionMsecCounter
- El número de tiempos acumulados de procesamiento de solicitudes en milisegundos incluyendo upstream.
- sessionMsec
- El promedio de los tiempos de procesamiento de solicitudes en milisegundos incluyendo upstream.
- sessionMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos de procesamiento de solicitudes en milisegundos incluyendo upstream.
- sessionBuckets
- msecs
- Los valores de los cubos del histograma establecidos por la directiva
server_traffic_status_histogram_buckets. - counters
- Los valores acumulativos por la razón de que cada valor de cubo es mayor o igual al tiempo de procesamiento de la solicitud.
- uSessionMsecCounter
- El número de tiempos acumulados en milisegundos de la duración de la sesión al servidor upstream.
- uSessionMsec
- El promedio de los tiempos de duración de la sesión en milisegundos al servidor upstream.
- uSessionMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos de duración de la sesión en milisegundos al servidor upstream.
- uSessionBuckets
- msecs
- Los valores de los cubos del histograma establecidos por la directiva
server_traffic_status_histogram_buckets. - counters
- Los valores acumulativos por la razón de que cada valor de cubo es mayor o igual al tiempo de duración de la sesión al servidor upstream.
- uConnectMsecCounter
- El número de tiempos acumulados en milisegundos para conectarse al servidor upstream.
- uConnectMsec
- El promedio de los tiempos en milisegundos para conectarse al servidor upstream (1.11.4).
- uConnectMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos en milisegundos para conectarse al servidor upstream.
- uConnectBuckets
- msecs
- Los valores de los cubos del histograma establecidos por la directiva
server_traffic_status_histogram_buckets. - counters
- Los valores acumulativos por la razón de que cada valor de cubo es mayor o igual al tiempo para conectarse al servidor upstream.
- uFirstByteMsecCounter
- El número de tiempos acumulados en milisegundos para recibir el primer byte de datos.
- uFirstByteMsec
- El promedio de los tiempos en milisegundos para recibir el primer byte de datos (1.11.4).
- uFirstByteMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos en milisegundos para recibir el primer byte de datos (1.11.4).
- uFirstByteBuckets
- msecs
- Los valores de los cubos del histograma establecidos por la directiva
server_traffic_status_histogram_buckets. - counters
- Los valores acumulativos por la razón de que cada valor de cubo es mayor o igual al tiempo para recibir el primer byte de datos.
- weight
- Configuración actual de
weightdel servidor.
- Configuración actual de
- maxFails
- Configuración actual de
max_failsdel servidor.
- Configuración actual de
- failTimeout
- Configuración actual de
fail_timeoutdel servidor.
- Configuración actual de
- backup
- Configuración actual de
backupdel servidor.
- Configuración actual de
- down
- Configuración actual de
downdel servidor.
- Configuración actual de
Json utilizado por control
/{status_uri}/control?cmd=reset&...
/{status_uri}/control?cmd=delete&...
- processingReturn
- El resultado de verdadero o falso.
- processingCommandString
- La cadena de comando solicitada.
- processingGroupString
- La cadena de grupo solicitada.
- processingZoneString
- La cadena de zona solicitada.
- processingCounts
- El número de procesamiento real.
Variables
Las siguientes variables embebidas se proporcionan en el bloque stream:
- $sts_connect_counter
- El número total de solicitudes de cliente recibidas de los clientes.
- $sts_in_bytes
- El número total de bytes recibidos de los clientes.
- $sts_out_bytes
- El número total de bytes enviados a los clientes.
- $sts_1xx_counter
- El número de respuestas con códigos de estado 1xx.
- $sts_2xx_counter
- El número de respuestas con códigos de estado 2xx.
- $sts_3xx_counter
- El número de respuestas con códigos de estado 3xx.
- $sts_4xx_counter
- El número de respuestas con códigos de estado 4xx.
- $sts_5xx_counter
- El número de respuestas con códigos de estado 5xx.
- $sts_session_time
- El promedio de los tiempos de procesamiento de solicitudes.
Límite
Es posible limitar el tráfico total por cada servidor utilizando la directiva
server_traffic_status_limit_traffic.
También es posible limitar todo el tráfico utilizando la directiva
server_traffic_status_limit_traffic_by_set_key.
Cuando se excede el límite, el servidor devolverá el error 503
(Service Temporarily Unavailable) en respuesta a una solicitud.
El código de retorno puede ser modificable.
Para limitar el tráfico para el servidor
stream {
server_traffic_status_zone;
...
server {
listen 1981;
server_traffic_status_limit_traffic in:64G;
server_traffic_status_limit_traffic out:1024G;
...
}
}
- Limitar el tráfico total de entrada/salida en el
1981/tcpa 64G y 1024G respectivamente.
Para limitar el tráfico para el filtro
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;
...
}
}
- Limitar el tráfico total que va hacia los EE. UU. y CN en el
example.orga 1024G y 2048G respectivamente.
Para limitar el tráfico para 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;
...
}
}
- Limitar el tráfico total que va hacia el backend upstream en el
1981/tcpa 512G y 1024G por cada par.
Advertencias: El tráfico es la transferencia acumulativa o contador, no un ancho de banda.
Casos de uso
Es posible calcular las estadísticas individuales definidas por el usuario utilizando la directiva server_traffic_status_filter_by_set_key.
Para calcular el tráfico para un país individual usando 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;
}
}
- Calcular el tráfico para un país individual de todos los grupos de servidores.
- Calcular el tráfico para un país individual de cada grupo de servidores.
Básicamente, la imagen de la bandera del país está incorporada en HTML.
La imagen de la bandera del país se habilita si la cadena country está incluida
en el nombre del grupo que es el segundo argumento de la directiva server_traffic_status_filter_by_set_key.
Personalización
Para personalizar después de que se instale el módulo
-
Necesitas cambiar la cadena
{{uri}}a tu URI de estado en status.template.html de la siguiente manera:shell> vi share/status.template.htmlvar vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000; -
Y luego, personaliza y copia status.template.html al directorio raíz del servidor de la siguiente manera:
shell> cp share/status.template.html /usr/share/nginx/html/status.html -
Configura
nginx.confserver { server_name example.org; root /usr/share/nginx/html; # Redirigir solicitudes para / a /status.html location = / { return 301 /status.html; } location = /status.html {} # Todo lo que comience con /status (excepto /status.html) es # procesado por el manejador de estado location /status { stream_server_traffic_status_display; stream_server_traffic_status_display_format json; } } -
Accede a tu html.
http://example.org/status.html
Para personalizar antes de que se instale el módulo
-
Modifica
share/status.template.html(No cambies la cadena{{uri}}) -
Recrea el
ngx_http_stream_server_traffic_status_module_html.hde la siguiente manera:shell> cd util shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_stream_server_traffic_status_module_html.h -
Agrega el módulo a la configuración de construcción añadiendo
--add-module=/path/to/nginx-module-sts --add-module=/path/to/nginx-module-stream-sts -
Construye el binario de nginx.
-
Instala el binario de nginx.
Directivas
stream_server_traffic_status
| - | - |
|---|---|
| Sintaxis | stream_server_traffic_status \<on|off> |
| Predeterminado | off |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita el funcionamiento del módulo.
Si configuras la directiva stream_server_traffic_status_zone, se habilita automáticamente.
stream_server_traffic_status_zone
| - | - |
|---|---|
| Sintaxis | stream_server_traffic_status_zone [shared:name] |
| Predeterminado | shared:stream_server_traffic_status |
| Contexto | http |
Descripción: Establece parámetros para una zona de memoria compartida especificada por la directiva server_traffic_status_zone en el bloque de stream.
Advertencias: El name debe ser el mismo que el especificado por server_traffic_status_zone.
stream_server_traffic_status_display
| - | - |
|---|---|
| Sintaxis | stream_server_traffic_status_display |
| Predeterminado | - |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita el manejador de visualización del módulo.
stream_server_traffic_status_display_format
| - | - |
|---|---|
| Sintaxis | stream_server_traffic_status_display_format \<json|html|jsonp|prometheus> |
| Predeterminado | json |
| Contexto | http, server, location |
Descripción: Establece el formato de salida del manejador de visualización.
Si configuras json, responderá con un documento JSON.
Si configuras html, responderá con el tablero en vivo incorporado en HTML.
Si configuras jsonp, responderá con una función de callback JSONP (predeterminado: ngx_http_stream_server_traffic_status_jsonp_callback).
Si configuras prometheus, responderá con un documento prometheus.
stream_server_traffic_status_display_jsonp
| - | - |
|---|---|
| Sintaxis | stream_server_traffic_status_display_jsonp callback |
| Predeterminado | ngx_http_stream_server_traffic_status_jsonp_callback |
| Contexto | http, server, location |
Descripción: Establece el nombre de callback para el JSONP.
stream_server_traffic_status_average_method
| - | - |
|---|---|
| Sintaxis | stream_server_traffic_status_average_method \<AMM|WMA> [period] |
| Predeterminado | AMM 60s |
| Contexto | http, server, location |
Descripción: Establece el método que es una fórmula que calcula el promedio de los tiempos de procesamiento de respuestas.
El period es un tiempo efectivo de los valores utilizados para el cálculo del promedio. (Predeterminado: 60s)
Si period se establece en 0, se ignora el tiempo efectivo.
En este caso, se muestra el último valor promedio incluso si no hay solicitudes y después de que transcurre el tiempo.
Los valores correspondientes son sessionMsec, uSessionMsec, uConnectMsec, uFirstByteMsec en JSON.
- AMM
- El AMM es la media aritmética.
- WMA
- El WMA es la media móvil ponderada.
server_traffic_status
| - | - |
|---|---|
| Sintaxis | server_traffic_status \<on|off> |
| Predeterminado | off |
| Contexto | stream, server |
Descripción: Habilita o deshabilita el funcionamiento del módulo.
Si configuras la directiva server_traffic_status_zone, se habilita automáticamente.
server_traffic_status_zone
| - | - |
|---|---|
| Sintaxis | server_traffic_status_zone [shared:name:size] |
| Predeterminado | shared:stream_server_traffic_status:1m |
| Contexto | stream |
Descripción: Establece parámetros para una zona de memoria compartida que mantendrá estados para varias claves.
La caché se comparte entre todos los procesos de trabajo.
server_traffic_status_filter
| - | - |
|---|---|
| Sintaxis | server_traffic_status_filter \<on|off> |
| Predeterminado | on |
| Contexto | stream, server |
Descripción: Habilita o deshabilita las características de filtrado.
server_traffic_status_filter_by_set_key
| - | - |
|---|---|
| Sintaxis | server_traffic_status_filter_by_set_key key [name] |
| Predeterminado | - |
| Contexto | stream, server |
Descripción: Habilita las claves por variable definida por el usuario.
El key es una cadena clave para calcular el tráfico.
El name es una cadena de grupo para calcular el tráfico.
El key y name pueden contener variables como $host, $server_addr, $server_port.
El grupo de name pertenece a streamFilterZones si se especifica.
El grupo de key pertenece a streamServerZones si no se especifica el segundo argumento name.
El ejemplo con el módulo geoip es el siguiente:
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
| - | - |
|---|---|
| Sintaxis | server_traffic_status_filter_check_duplicate \<on|off> |
| Predeterminado | on |
| Contexto | stream, server |
Descripción: Habilita o deshabilita la deduplicación de server_traffic_status_filter_by_set_key.
Se procesa solo uno de los valores duplicados (key + name) en cada directiva (stream, server) si esta opción está habilitada.
server_traffic_status_limit
| - | - |
|---|---|
| Sintaxis | server_traffic_status_limit \<on|off> |
| Predeterminado | on |
| Contexto | stream, server |
Descripción: Habilita o deshabilita las características de límite.
server_traffic_status_limit_traffic
| - | - |
|---|---|
| Sintaxis | server_traffic_status_limit_traffic member:size [code] |
| Predeterminado | - |
| Contexto | stream, server |
Descripción: Habilita el límite de tráfico para el member especificado.
El member es una cadena de miembro para limitar el tráfico.
El size es un tamaño (k/m/g) para limitar el tráfico.
El code es un código para devolver en respuesta a solicitudes rechazadas. (Predeterminado: 503)
Las cadenas member disponibles son las siguientes:
* connect
* El número total de conexiones de cliente recibidas de los clientes.
* in
* El número total de bytes recibidos de los clientes.
* out
* El número total de bytes enviados a los clientes.
* 1xx
* El número de respuestas con códigos de estado 1xx.
* 2xx
* El número de respuestas con códigos de estado 2xx.
* 3xx
* El número de respuestas con códigos de estado 3xx.
* 4xx
* El número de respuestas con códigos de estado 4xx.
* 5xx
* El número de respuestas con códigos de estado 5xx.
server_traffic_status_limit_traffic_by_set_key
| - | - |
|---|---|
| Sintaxis | server_traffic_status_limit_traffic_by_set_key key member:size [code] |
| Predeterminado | - |
| Contexto | stream, server |
Descripción: Habilita el límite de tráfico para el key y member especificados.
El key es una cadena clave para limitar el tráfico.
El member es una cadena de miembro para limitar el tráfico.
El size es un tamaño (k/m/g) para limitar el tráfico.
El code es un código para devolver en respuesta a solicitudes rechazadas. (Predeterminado: 503)
La sintaxis de key es la siguiente:
* group@[subgroup@]name
Las cadenas group disponibles son las siguientes:
* NO
* El grupo de servidor.
* UA
* El grupo de upstream solo.
* UG
* El grupo de upstream (usar subgroup).
* FG
* El grupo de filtro (usar subgroup).
Las cadenas member disponibles son las siguientes:
* connect
* El número total de solicitudes de cliente recibidas de los clientes.
* in
* El número total de bytes recibidos de los clientes.
* out
* El número total de bytes enviados a los clientes.
* 1xx
* El número de respuestas con códigos de estado 1xx.
* 2xx
* El número de respuestas con códigos de estado 2xx.
* 3xx
* El número de respuestas con códigos de estado 3xx.
* 4xx
* El número de respuestas con códigos de estado 4xx.
* 5xx
* El número de respuestas con códigos de estado 5xx.
El member es el mismo que la directiva server_traffic_status_limit_traffic.
server_traffic_status_limit_check_duplicate
| - | - |
|---|---|
| Sintaxis | server_traffic_status_limit_check_duplicate \<on|off> |
| Predeterminado | on |
| Contexto | stream, server |
Descripción: Habilita o deshabilita la deduplicación de server_traffic_status_limit_by_set_key.
Se procesa solo uno de los valores duplicados (member | key + member) en cada directiva (stream, server) si esta opción está habilitada.
server_traffic_status_average_method
| - | - |
|---|---|
| Sintaxis | server_traffic_status_average_method \<AMM|WMA> [period] |
| Predeterminado | AMM 60s |
| Contexto | stream, server |
Descripción: Establece el método que es una fórmula que calcula el promedio de los tiempos de procesamiento de respuestas.
El period es un tiempo efectivo de los valores utilizados para el cálculo del promedio. (Predeterminado: 60s)
Si period se establece en 0, se ignora el tiempo efectivo.
En este caso, el último valor promedio se muestra incluso si no hay solicitudes y después de que transcurre el tiempo.
El valor correspondiente es solo la variable $sts_session_time.
- AMM
- El AMM es la media aritmética.
- WMA
- El WMA es la media móvil ponderada.
Advertencias: La variable $sts_session_time es el valor calculado en el momento de la última solicitud.
No se calcula al usar variables.
server_traffic_status_histogram_buckets
| - | - |
|---|---|
| Sintaxis | server_traffic_status_histogram_buckets second ... |
| Predeterminado | - |
| Contexto | stream |
Descripción: Establece los cubos de observación que se utilizarán en los histogramas.
Por defecto, si no configuras esta directiva, no funcionará.
El second puede expresarse en decimales con un valor mínimo de 0.001 (1ms).
El tamaño máximo de los cubos es 32. Si este valor es insuficiente para ti,
cambia el NGX_STREAM_SERVER_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN en el
nginx-mdule-stream-sts/src/ngx_stream_server_traffic_status_node.h
y el NGX_HTTP_STREAM_SERVER_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN en el
nginx-module-sts/src/ngx_http_stream_server_traffic_status_node.h.
Por ejemplos:
* server_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1 0.5 1 5 10
* Los cubos de observación son [5ms 10ms 50ms 1s 5s 10s].
* server_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1
* Los cubos de observación son [5ms 10ms 50ms 1s].
Advertencias: Por defecto, si no configuras esta directiva, las estadísticas del histograma no funcionan.
Ver también
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-sts.