vts
# *vts*: Módulo de estado de tráfico de host virtual 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
=== "CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023+"
```bash
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-vts
```
=== "CentOS/RHEL 7 y Amazon Linux 2"
```bash
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-vts
```
Habilita el módulo añadiendo lo siguiente en la parte superior de `/etc/nginx/nginx.conf`:
```nginx
load_module modules/ngx_http_vhost_traffic_status_module.so;
Este documento describe nginx-module-vts v0.2.6 lanzado el 29 de julio de 2026.
Módulo de estado de tráfico de host virtual de NGINX
Prueba
Ejecuta sudo prove -r t después de haber instalado este módulo. Se requiere sudo porque la prueba necesita que NGINX escuche en el puerto 80.
Capturas de pantalla


Sinopsis
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
Descripción
Este es un módulo de NGINX que proporciona acceso a información de estado del host virtual. Contiene el estado actual, como servidores, upstreams y cachés. Esto es similar al monitoreo de actividad en vivo de nginx plus. El HTML incorporado también se toma de la página de demostración de la versión antigua.
Primero, se requiere la directiva vhost_traffic_status_zone, y luego, si se establece la directiva vhost_traffic_status_display, 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 paneles de control en vivo y herramientas de monitoreo de terceros. - /status/format/html
- Si solicitas
/status/format/html, responderá con el panel de control 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 paneles de control 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": ...,
"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
- 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)
- sharedZones
- La información de memoria compartida utilizada en nginx-module-vts.
- serverZones
- Tráfico (entrada/salida) y conteos de solicitudes y respuestas 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 - filterZones
- Tráfico (entrada/salida) y conteos de solicitudes y respuestas y tasa de aciertos por cada zona de servidor filtrada a través de la directiva
vhost_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 directivavhost_traffic_status_filter_by_set_key - upstreamZones
- Tráfico (entrada/salida) y conteos de solicitudes y respuestas por servidor en cada grupo de upstream
- Configuraciones actuales (peso, maxfails, failtimeout...) en nginx.conf
- cacheZones
- Tráfico (entrada/salida) y tamaño (capacidad/utilizado) y tasa de aciertos por cada zona de caché al usar la directiva proxy_cache.
Los objetos overCounts en el documento JSON son principalmente para sistemas de 32 bits y se incrementarán en 1 si su valor se desborda. La directiva vhost_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:
- ServerZones
- in += requested_bytes
- out += sent_bytes
- FilterZones
- in += requested_bytes a través del filtro
- out += sent_bytes a través del filtro
- UpstreamZones
- in += requested_bytes a través de las ServerZones
- out += sent_bytes a través de las ServerZones
- cacheZones
- in += requested_bytes a través de las ServerZones
- out += sent_bytes a través de las ServerZones
Todos los cálculos se realizan en la fase de procesamiento de registros de NGINX. Las redirecciones internas (X-Accel-Redirect o error_page) no se calculan en las UpstreamZones.
Advertencias: este módulo depende del sistema de registro de nginx (NGX_HTTP_LOG_PHASE: última fase del http de nginx), por lo que el tráfico puede ser en ciertas circunstancias diferente al tráfico de ancho de banda real. 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". Al usar varios dominios, se establece como el primer dominio (izquierda) de la directiva server_name. Si no lo deseas, consulta la directiva vhost_traffic_status_filter_by_host, vhost_traffic_status_filter_by_set_key.
Consulta los siguientes módulos para las estadísticas de tráfico stream:
* nginx-module-sts
* nginx-module-stream-sts
Cálculos e Intervalos
Promedios
Todos los promedios se calculan actualmente como AMM (Media Aritmética) sobre los últimos 64 valores.
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 {
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 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. al volver a solicitar se recrea.
* 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
Para obtener el estado de las zonas de tráfico al vuelo
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
- 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=*
Los valores mainZones son valores de estado predeterminados que incluyen hostName, moduleVersion, nginxVersion, loadMsec, nowMsec, connections.
Para obtener cada zona
- zona única en serverZones
- /status/control?cmd=status&group=server&zone=
name - zona única en filterZones
- /status/control?cmd=status&group=filter&zone=
filter_group@name - zona única en upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - zona única en upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
name - zona única en cacheZones
- /status/control?cmd=status&group=cache&zone=
name
Para restablecer zonas de tráfico al vuelo
Restablece los valores de las zonas especificadas a 0.
Para restablecer todas las zonas
- /status/control?cmd=reset&group=*
Para restablecer zonas de grupo
- 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=*
Para restablecer cada zona
- zona única en serverZones
- /status/control?cmd=reset&group=server&zone=
name - zona única en filterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - zona única en upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - zona única en upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name - zona única en cacheZones
- /status/control?cmd=reset&group=cache&zone=
name
Para eliminar zonas de tráfico al vuelo
Elimina las zonas especificadas en la memoria compartida.
Para eliminar todas las zonas
- /status/control?cmd=delete&group=*
Para eliminar zonas de grupo
- 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=*
Para eliminar cada zona
- zona única en serverZones
- /status/control?cmd=delete&group=server&zone=
name - zona única en filterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - zona única en upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - zona única en upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name - zona única en cacheZones
- /status/control?cmd=delete&group=cache&zone=
name
Establecer
Se pueden obtener los valores de estado en la configuración de nginx por separado utilizando la directiva vhost_traffic_status_set_by_filter. Se pueden adquirir casi todos los valores de estado y el valor obtenido se almacena en una variable definida por el usuario que es el primer argumento.
- Sintaxis de la Directiva
- 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;
}
}
}
La configuración anterior es la siguiente:
- $requestCounter
- serverZones -> example.org -> requestCounter
- $requestCounterKR
- filterZones -> country::example.org -> KR -> requestCounter
- $requestCounterB1
- upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter
Consulta la directiva vhost_traffic_status_set_by_filter para un uso detallado.
JSON
La siguiente información de estado se proporciona en formato JSON:
Json utilizado por estado
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- Nombre del host.
- moduleVersion
- Versión del módulo en formato
{version}(|.dev.{commit}). - nginxVersion
- Versión del proporcionado.
- 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:
vhost_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 utilizados en la memoria compartida. Se puede obtener un tamaño aproximado para un nodo con la siguiente fórmula: (usedSize / usedNode)
- serverZones
- requestCounter
- 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.
- miss
- El número de fallos de caché.
- bypass
- El número de omisiones de caché.
- expired
- El número de cachés expirados.
- stale
- El número de cachés obsoletos.
- updating
- El número de cachés en actualización.
- revalidated
- El número de cachés revalidados.
- hit
- El número de aciertos de caché.
- scarce
- El número de escasez de caché.
- requestMsecCounter
- El número de tiempo de procesamiento de solicitudes acumuladas en milisegundos.
- requestMsec
- El promedio de los tiempos de procesamiento de solicitudes en milisegundos.
- requestMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos de procesamiento de solicitudes en milisegundos.
- requestBuckets
- msecs
- Los valores de los cubos del histograma establecidos por la directiva
vhost_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 solicitudes.
- filterZones
- Proporciona los mismos campos que
serverZonesexcepto que incluye nombres de grupo. - upstreamZones
- server
- Una dirección del servidor.
- requestCounter
- 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.
- requestMsecCounter
- El número de tiempo de procesamiento de solicitudes acumuladas incluyendo upstream en milisegundos.
- requestMsec
- El promedio de los tiempos de procesamiento de solicitudes incluyendo upstream en milisegundos.
- requestMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos de procesamiento de solicitudes incluyendo upstream en milisegundos.
- requestBuckets
- msecs
- Los valores de los cubos del histograma establecidos por la directiva
vhost_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 solicitudes incluyendo upstream.
- responseMsecCounter
- El número de tiempo de procesamiento de respuesta acumulada solo upstream en milisegundos.
- responseMsec
- El promedio de los tiempos de procesamiento de respuestas solo upstream en milisegundos.
- responseMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos de procesamiento de respuestas solo upstream en milisegundos.
- responseBuckets
- msecs
- Los valores de los cubos del histograma establecidos por la directiva
vhost_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 respuesta solo upstream.
- 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. Básicamente, esto solo marca el estado del servidor del ngx_http_upstream_module como inactivo (por ejemplo,server backend3.example.com down), no el estado real del servidor upstream. Cambiará al estado real si habilitas la directiva de zona upstream.
- Configuración actual de
- cacheZones
- maxSize
- El límite en el tamaño máximo de la caché especificada en la configuración. Si
max_sizeen la directivaproxy_cache_pathno se especifica, se asigna el valor dependiente del sistemaNGX_MAX_OFF_T_VALUEpor defecto. En otras palabras, este valor es de nginx, no de lo que especifiqué.
- El límite en el tamaño máximo de la caché especificada en la configuración. Si
- usedSize
- El tamaño actual de la caché. Este valor se toma de nginx como el valor anterior de
maxSize.
- El tamaño actual de la caché. Este valor se toma de nginx como el valor anterior de
- inBytes
- El número total de bytes recibidos de la caché.
- outBytes
- El número total de bytes enviados desde la caché.
- responses
- miss
- El número de fallos de caché.
- bypass
- El número de omisiones de caché.
- expired
- El número de cachés expirados.
- stale
- El número de cachés obsoletos.
- updating
- El número de cachés en actualización.
- revalidated
- El número de cachés revalidados.
- hit
- El número de aciertos de caché.
- scarce
- El número de escasez de caché.
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 incrustadas se proporcionan:
- $vts_request_counter
- El número total de solicitudes de cliente recibidas de los clientes.
- $vts_in_bytes
- El número total de bytes recibidos de los clientes.
- $vts_out_bytes
- El número total de bytes enviados a los clientes.
- $vts_1xx_counter
- El número de respuestas con códigos de estado 1xx.
- $vts_2xx_counter
- El número de respuestas con códigos de estado 2xx.
- $vts_3xx_counter
- El número de respuestas con códigos de estado 3xx.
- $vts_4xx_counter
- El número de respuestas con códigos de estado 4xx.
- $vts_5xx_counter
- El número de respuestas con códigos de estado 5xx.
- $vts_cache_miss_counter
- El número de fallos de caché.
- $vts_cache_bypass_counter
- El número de omisiones de caché.
- $vts_cache_expired_counter
- El número de cachés expirados.
- $vts_cache_stale_counter
- El número de cachés obsoletos.
- $vts_cache_updating_counter
- El número de cachés en actualización.
- $vts_cache_revalidated_counter
- El número de cachés revalidados.
- $vts_cache_hit_counter
- El número de aciertos de caché.
- $vts_cache_scarce_counter
- El número de escasez de caché.
- $vts_request_time_counter
- El número de tiempo de procesamiento de solicitudes acumuladas.
- $vts_request_time
- El promedio de los tiempos de procesamiento de solicitudes.
Límite
Es posible limitar el tráfico total por cada host utilizando la directiva vhost_traffic_status_limit_traffic. También es posible limitar todo el tráfico utilizando la directiva vhost_traffic_status_limit_traffic_by_set_key. Cuando se excede el límite, el servidor devolverá el error 503 (Servicio Temporalmente No Disponible) en respuesta a una solicitud. El código de retorno puede ser modificable.
Para limitar el tráfico para el servidor
http {
vhost_traffic_status_zone;
...
server {
server_name *.example.org;
vhost_traffic_status_limit_traffic in:64G;
vhost_traffic_status_limit_traffic out:1024G;
...
}
}
- Limita el tráfico total de entrada/salida en el
*.example.orga 64G y 1024G respectivamente. Funciona individualmente por cada dominio si se habilita la directivavhost_traffic_status_filter_by_host.
Para limitar el tráfico para el filtro
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;
...
}
}
- Limita el tráfico total que entra en EE. UU. y CN en el
example.orga 1024G y 2048G respectivamente.
Para limitar el tráfico para 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;
}
...
}
}
- Limita el tráfico total que entra en el backend upstream en el
example.orga 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 estadísticas individuales definidas por el usuario utilizando la directiva vhost_traffic_status_filter_by_set_key.
Para calcular el tráfico por país individual utilizando 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;
}
}
}
- Calcular el tráfico por país individual de todos los grupos de servidores.
- Calcular el tráfico por 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 vhost_traffic_status_filter_by_set_key.
Para calcular el tráfico por volumen de almacenamiento individual
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;
}
}
}
- Calcular el tráfico por volumen de almacenamiento individual coincidente con la expresión regular de la directiva location.
Para calcular el tráfico por agente de usuario individual
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;
}
}
}
- Calcular el tráfico para un
http_user_agentindividual.
Para calcular el tráfico por código de estado http detallado
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;
}
}
}
- Calcular el tráfico para un
código de estado httpdetallado.
Advertencias: La variable $status está disponible en nginx-(1.3.2, 1.2.2).
Para calcular el tráfico para dns dinámico
Si el dominio tiene múltiples registros A de DNS, puedes calcular el tráfico para IPs individuales del dominio utilizando la función de filtro o una variable en 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;
}
}
}
- Calcular el tráfico para IPs individuales del dominio
elb.example.org. Sielb.example.orgtiene múltiples registros A de DNS, se mostrarán todas las IPs enfilterZones. En la configuración anterior, cuando NGINX se inicia o recarga su configuración, consulta a un servidor DNS para resolver el dominio y los registros A de DNS se almacenan en caché en memoria. Por lo tanto, los registros A de DNS no cambian en memoria incluso si los registros A de DNS son cambiados por el administrador de DNS a menos que NGINX se reinicie o recargue.
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;
}
}
}
- Calcular el tráfico para IPs individuales del dominio
elb.example.org. Si el registro A de DNS deelb.example.orgcambia, se mostrarán tanto la IP antigua como la nueva en::nogroups. A diferencia de la primera configuración del grupo upstream, la segunda configuración funciona bien incluso si los registros A de DNS son cambiados por el administrador de DNS.
Advertencias: Para más detalles sobre NGINX DNS consulta el dns-service-discovery-nginx-plus.
Para calcular el tráfico excepto para la página de estado
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;
}
}
}
- La URI
/statusse excluye del cálculo del tráfico de estado y de la función de límite. Consulta las siguientes directivas: - vhost_traffic_status_bypass_limit
- vhost_traffic_status_bypass_stats
Para mantener los datos de estadísticas de forma permanente
http {
vhost_traffic_status_zone;
vhost_traffic_status_dump /var/log/nginx/vts.db;
...
server {
...
}
}
- La directiva
vhost_traffic_status_dumpmantiene los datos de estadísticas de forma permanente incluso si el sistema se reinicia o NGINX se reinicia. Consulta la directiva vhost_traffic_status_dump para un uso detallado.
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, personalizar y copiar 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; # Redirige solicitudes para / a /status.html location = / { return 301 /status.html; } location = /status.html {} # Todo lo que comienza con /status (excepto /status.html) es # procesado por el controlador de estado location /status { vhost_traffic_status_display; vhost_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_vhost_traffic_status_module_html.hde la siguiente manera:shell> cd util shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_vhost_traffic_status_module_html.h -
Agrega el módulo a la configuración de compilación añadiendo
--add-module=/path/to/nginx-module-vts -
Compila el binario de nginx.
-
Instala el binario de nginx.
Dashboard de React
Un dashboard alternativo basado en React está disponible en el directorio front/. Obtiene datos de la API existente /status/format/json y renderiza las mismas tablas que la página HTML incorporada.
Requisitos previos
- Node.js >= 20.19 (o >= 22.12)
- npm
Servir a través de nginx
Agrega el siguiente bloque location junto a la configuración existente de /status:
location = /status/dashboard {
return 301 /status/dashboard/;
}
location /status/dashboard/ {
alias /path/to/nginx-module-vts/front/dist/;
index index.html;
}
Después de recargar nginx, el dashboard de React estará disponible en /status/dashboard.
Desarrollo
shell> make front-dev
El servidor de desarrollo Vite proxy las solicitudes /status/format/json a http://localhost:80 para que el dashboard pueda desarrollarse contra una instancia de nginx en ejecución.
Limpiar
shell> make front-clean
Elimina front/dist/ y front/node_modules/.
Directivas

vhost_traffic_status
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status \<on|off> |
| Predeterminado | off |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita el funcionamiento del módulo. Si estableces la directiva vhost_traffic_status_zone, se habilita automáticamente.
vhost_traffic_status_zone
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_zone [shared:name:size] |
| Predeterminado | shared:vhost_traffic_status:1m |
| Contexto | http |
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. En la mayoría de los casos, el tamaño de memoria compartida utilizado por nginx-module-vts no aumenta mucho. El tamaño de memoria compartida aumenta bastante al usar la directiva vhost_traffic_status_filter_by_set_key, pero si las claves del filtro son fijas (por ejemplo, el número total de códigos de país es de aproximadamente 240) no aumenta continuamente.
Si usas la directiva vhost_traffic_status_filter_by_set_key, configúralo de la siguiente manera:
- Establece un tamaño de memoria compartida de más de 32M por defecto. (
vhost_traffic_status_zone shared:vhost_traffic_status:32m) - Si se imprime el mensaje (
"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone") en error_log, aumenta a más de (usedSize * 2).
vhost_traffic_status_dump
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_dump path [period] |
| Predeterminado | - |
| Contexto | http |
Descripción: Habilita el volcado y restauración de datos estadísticos. La ruta es una ubicación para volcar los datos estadísticos. (por ejemplo, /var/log/nginx/vts.db) El período es un tiempo de ciclo de respaldo. (Predeterminado: 60s) Se respalda inmediatamente independientemente del ciclo de respaldo si nginx se cierra por señal (SIGKILL).
vhost_traffic_status_display
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_display |
| Predeterminado | - |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita el controlador de visualización del módulo.
vhost_traffic_status_display_format
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_display_format \<json|html|jsonp|prometheus> |
| Predeterminado | json |
| Contexto | http, server, location |
Descripción: Establece el formato de salida del controlador de visualización. Si estableces json, responderá con un documento JSON. Si estableces html, responderá con el panel de control en vivo incorporado en HTML. Si estableces jsonp, responderá con una función de callback JSONP (predeterminado: ngx_http_vhost_traffic_status_jsonp_callback). Si estableces prometheus, responderá con un documento prometheus.
vhost_traffic_status_display_jsonp
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_display_jsonp callback |
| Predeterminado | ngx_http_vhost_traffic_status_jsonp_callback |
| Contexto | http, server, location |
Descripción: Establece el nombre de callback para el JSONP.
vhost_traffic_status_display_sum_key
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_display_sum_key name |
| Predeterminado | * |
| Contexto | http, server, location |
Descripción: Establece la cadena de clave de suma en el campo serverZones del JSON. La cadena de clave de suma predeterminada es el "*".
vhost_traffic_status_filter
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_filter \<on|off> |
| Predeterminado | on |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita las funciones de filtro.
vhost_traffic_status_filter_by_host
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_filter_by_host \<on|off> |
| Predeterminado | off |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita las claves por el campo de encabezado Host. Si estableces on y la directiva server_name de nginx establece varios nombres o un nombre comodín que comienza con un asterisco, por ejemplo, “.example.org” y se solicita al servidor con un nombre de host como (a|b|c).example.org o .example.org, entonces json serverZones se imprime de la siguiente manera:
server {
server_name *.example.org;
vhost_traffic_status_filter_by_host on;
...
}
...
"serverZones": {
"a.example.org": {
...
},
"b.example.org": {
...
},
"c.example.org": {
...
}
...
},
...
Proporciona la misma función que establece vhost_traffic_status_filter_by_set_key $host.
vhost_traffic_status_filter_by_set_key
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_filter_by_set_key key [name] |
| Predeterminado | - |
| Contexto | http, server, location |
Descripción: Habilita las claves por variable definida por el usuario. La clave es una cadena clave para calcular el tráfico. El nombre es una cadena de grupo para calcular el tráfico. La clave y el nombre pueden contener variables como $host, $server_name. El grupo del nombre pertenece a filterZones si se especifica. El grupo de la clave pertenece a serverZones si no se especifica el segundo argumento nombre. El ejemplo con el módulo geoip es el siguiente:
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
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_filter_check_duplicate \<on|off> |
| Predeterminado | on |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita la deduplicación de vhost_traffic_status_filter_by_set_key. Se procesa solo uno de los valores duplicados (key + name) en cada directiva (http, server, location) si esta opción está habilitada.
vhost_traffic_status_filter_max_node
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_filter_max_node number [string ...] |
| Predeterminado | 0 |
| Contexto | http |
Descripción: Habilita el límite del tamaño del filtro utilizando los valores especificados de número y cadena. Si se excede el número, se eliminan los nodos existentes mediante el algoritmo LRU. El argumento número es el tamaño del nodo que se limitará. El valor predeterminado 0 no limita los filtros. Un nodo es un objeto en filterZones en el documento JSON. Los argumentos cadena son los valores de cadena coincidentes para el valor de cadena de grupo establecido por la directiva vhost_traffic_status_filter_by_set_key. Incluso si solo la primera parte coincide, la coincidencia es exitosa como la expresión regular /^string.*/. Por defecto, si no estableces argumentos cadena, se aplicará a todos los filtros.
Por ejemplos:
$ vi nginx.conf
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
# Todos los filtros están limitados a un total de 16 nodos.
# vhost_traffic_status_filter_max_node 16
# Los patrones de cadena de grupo `/^uris.*/` y `/^client::ports.*/` están limitados a un total de 64 nodos.
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

En el ejemplo anterior, los patrones de cadena de grupo /^uris.*/ y /^client::ports.*/ están limitados a un total de 16 nodos. Los otros filtros como country::.* no están limitados.
vhost_traffic_status_limit
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_limit \<on|off> |
| Predeterminado | on |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita las funciones de límite.
vhost_traffic_status_limit_traffic
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_limit_traffic member:size [code] |
| Predeterminado | - |
| Contexto | http, server, location |
Descripción: Habilita el límite de tráfico para el miembro especificado. El miembro es una cadena de miembro para limitar el tráfico. El tamaño es un tamaño (k/m/g) para limitar el tráfico. El código es un código para devolver en respuesta a solicitudes rechazadas. (Predeterminado: 503)
Las cadenas de miembro disponibles son las siguientes:
* request
* 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.
* cache_miss
* El número de fallos de caché.
* cache_bypass
* El número de omisiones de caché.
* cache_expired
* El número de cachés expirados.
* cache_stale
* El número de cachés obsoletos.
* cache_updating
* El número de cachés en actualización.
* cache_revalidated
* El número de cachés revalidados.
* cache_hit
* El número de aciertos de caché.
* cache_scarce
* El número de escasez de caché.
vhost_traffic_status_limit_traffic_by_set_key
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_limit_traffic_by_set_key key member:size [code] |
| Predeterminado | - |
| Contexto | http, server, location |
Descripción: Habilita el límite de tráfico para el key y miembro especificados. La clave es una cadena clave para limitar el tráfico. El miembro es una cadena de miembro para limitar el tráfico. El tamaño es un tamaño (k/m/g) para limitar el tráfico. El código 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 de group disponibles son las siguientes:
* NO
* El grupo de servidor.
* UA
* El grupo de upstream solo.
* UG
* El grupo de upstream. (usa subgroup)
* CC
* El grupo de caché.
* FG
* El grupo de filtro. (usa subgroup)
Las cadenas de miembro disponibles son las siguientes:
* request
* 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.
* cache_miss
* El número de fallos de caché.
* cache_bypass
* El número de omisiones de caché.
* cache_expired
* El número de cachés expirados.
* cache_stale
* El número de cachés obsoletos.
* cache_updating
* El número de cachés en actualización.
* cache_revalidated
* El número de cachés revalidados.
* cache_hit
* El número de aciertos de caché.
* cache_scarce
* El número de escasez de caché.
El miembro es el mismo que la directiva vhost_traffic_status_limit_traffic.
vhost_traffic_status_limit_check_duplicate
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_limit_check_duplicate \<on|off> |
| Predeterminado | on |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita la deduplicación de vhost_traffic_status_limit_by_set_key. Se procesa solo uno de los valores duplicados (miembro | key + miembro) en cada directiva (http, server, location) si esta opción está habilitada.
vhost_traffic_status_set_by_filter
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_set_by_filter $variable group/zone/name |
| Predeterminado | - |
| Contexto | http, server, location, if |
Descripción: Obtiene el valor de estado especificado almacenado en memoria compartida. Puede adquirir casi todos los valores de estado y el valor obtenido se almacena en $variable que es el primer argumento.
- 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
- El número total de solicitudes de cliente recibidas de los clientes.
- requestMsecCounter
- El número de tiempo de procesamiento de solicitudes acumuladas en milisegundos.
- requestMsec
- El promedio de los tiempos de procesamiento de solicitudes en milisegundos.
- responseMsecCounter
- El número de tiempo de procesamiento de respuesta acumulada solo upstream en milisegundos.
- responseMsec
- El promedio de los tiempos de procesamiento de respuestas solo upstream en milisegundos.
- inBytes
- El número total de bytes recibidos de los clientes.
- outBytes
- El número total de bytes enviados a los clientes.
- 1xx, 2xx, 3xx, 4xx, 5xx
- El número de respuestas con códigos de estado 1xx, 2xx, 3xx, 4xx y 5xx.
- cacheMaxSize
- El límite en el tamaño máximo de la caché especificada en la configuración.
- cacheUsedSize
- El tamaño actual de la caché.
- cacheMiss
- El número de fallos de caché.
- cacheBypass
- El número de omisiones de caché.
- cacheExpired
- El número de cachés expirados.
- cacheStale
- El número de cachés obsoletos.
- cacheUpdating
- El número de cachés en actualización.
- cacheRevalidated
- El número de cachés revalidados.
- cacheHit
- El número de aciertos de caché.
- cacheScarce
- El número de escasez de caché.
- weight
- Configuración actual de peso del servidor.
- maxFails
- Configuración actual de max_fails del servidor.
- failTimeout
- Configuración actual de fail_timeout del servidor.
- backup
- Configuración actual de backup del servidor. (0|1)
- down
- Configuración actual de down del servidor. (0|1)
Advertencias: El nombre es sensible a mayúsculas y minúsculas. Todos los valores devueltos son de tipo entero.
Por ejemplos:
* requestCounter en serverZones
* vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter
* requestCounter en filterZones
* vhost_traffic_status_set_by_filter $requestCounter filter/country::example.org@KR/requestCounter
* requestCounter en upstreamZones
* vhost_traffic_status_set_by_filter $requestCounter upstream@group/[email protected]:80/requestCounter
* requestCounter en upstreamZones::nogroups
* vhost_traffic_status_set_by_filter $requestCounter upstream@alone/10.10.10.11:80/requestCounter
* cacheHit en cacheZones
* vhost_traffic_status_set_by_filter $cacheHit cache/my_cache_name/cacheHit
vhost_traffic_status_average_method
| - | - |
|---|---|
| Sintaxis | vhost_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 período es un tiempo efectivo de los valores utilizados para el cálculo del promedio. (Predeterminado: 60s) Si se establece período en 0, el tiempo efectivo se ignora. En este caso, se mostrará el último valor promedio incluso si no hay solicitudes y después de transcurrido el tiempo. Los valores correspondientes son requestMsec y responseMsec en JSON.
- AMM
- El AMM es la media aritmética.
- WMA
- El WMA es la media móvil ponderada.
vhost_traffic_status_histogram_buckets
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_histogram_buckets second ... |
| Predeterminado | - |
| Contexto | http, server, location |
Descripción: Establece los cubos de observación que se utilizarán en los histogramas. Por defecto, si no estableces esta directiva, no funcionará. El segundo puede expresarse en lugares decimales con un valor mínimo de 0.001 (1ms). El tamaño máximo de los cubos es 32. Si este valor no es suficiente para ti, cambia el NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN en el src/ngx_http_vhost_traffic_status_node.h.
Por ejemplos:
* vhost_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 100ms 500ms 1s 5s 10s].
* vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1
* Los cubos de observación son [5ms 10ms 50ms 100ms].
Advertencias: Por defecto, si no estableces esta directiva, las estadísticas del histograma no funcionan. Los histogramas restaurados por la directiva vhost_traffic_status_dump no se ven afectados por los cambios en los cubos por la directiva vhost_traffic_status_histogram_buckets. Por lo tanto, primero debes eliminar la zona o el archivo de volcado antes de cambiar los cubos por la directiva vhost_traffic_status_histogram_buckets. Similar a lo anterior, elimina el archivo de volcado cuando uses el histograma por primera vez.
vhost_traffic_status_bypass_limit
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_bypass_limit \<on|off> |
| Predeterminado | off |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita el bypass de las directivas vhost_traffic_status_limit. Las funciones de límite se omiten si esta opción está habilitada. Esto es útil si deseas conectar la página web de estado como /status independientemente de las directivas vhost_traffic_status_limit de la siguiente manera:
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
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_bypass_stats \<on|off> |
| Predeterminado | off |
| Contexto | http, server, location |
Descripción: Habilita o deshabilita el bypass de vhost_traffic_status. Las funciones de estadísticas de estado de tráfico se omiten si esta opción está habilitada. En otras palabras, se excluye de las estadísticas de estado de tráfico. Esto es útil si deseas ignorar tu solicitud en la página web de estado como /status de la siguiente manera:
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
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_stats_by_upstream \<on|off> |
| Predeterminado | on |
| Contexto | http |
Descripción: Habilita o deshabilita las estadísticas de upstreamZone. La upstreamZone en las funciones de estadísticas de estado de tráfico se omite si esta opción está deshabilitada. En otras palabras, se excluye de las estadísticas de estado de tráfico. Esto es útil si deseas deshabilitar la recopilación de estadísticas para servidores upstream para reducir la carga de 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
Permite rastrear códigos de estado HTTP específicos o todos los códigos de estado en el módulo de estado de tráfico Vhost.
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_measure_status_codes [all] [status_code1] [status_code2] ... |
| Predeterminado | off |
| Contexto | http |
Parámetros
status_code1, status_code2, ...: Códigos de estado HTTP específicos a rastrear (100-599)all: Rastrear todos los códigos de estado HTTP
Ejemplos
Rastrear códigos de estado específicos:
vhost_traffic_status_measure_status_codes 200 404 500;
Rastrear todos los códigos de estado:
vhost_traffic_status_measure_status_codes all;
Descripción
- Por defecto, no se habilita el rastreo de códigos de estado específicos
- Los códigos de estado deben estar en orden ascendente
- Solo se aceptan códigos de estado HTTP válidos entre 100 y 599
- Al usar
all, se rastreará cada código de estado
Lanzamientos
Para realizar un lanzamiento, crea una entrada de changelog PR con 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-
Después de que se fusione el PR, crea la nueva etiqueta y el lanzamiento en GitHub Releases.
Consulta También
- Estado de tráfico de stream
- nginx-module-sts
-
Prometheus
-
Protección del sistema
- [nginx-module-sysguard](https://github.com/vozlt/nginx-module-sys