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
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-vts
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-vts
Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:
load_module modules/ngx_http_vhost_traffic_status_module.so;
Este documento describe nginx-module-vts v0.2.5 lanzado el 28 de diciembre de 2025.
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. El sudo es necesario porque la prueba requiere 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 la información de estado del host virtual. Contiene el estado actual, como servidores, upstreams, 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 que restablezca o elimine 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
- Conexiones totales 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 y tasa de aciertos de caché 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 de caché 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 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á "activada" o "desactivada".
Nuevamente, este módulo funciona bien con "access_log desactivado".
Al usar varios dominios, se establece en el primer dominio (izquierda) de la directiva server_name.
Si no deseas esto, 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. cuando se vuelve 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 instante
Esto es similar a status/format/json excepto que puede obtener cada zona.
Para obtener zonas completas
- 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 instante
Restablece los valores de las zonas especificadas a 0.
Para restablecer zonas completas
- /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 instante
Elimina las zonas especificadas en la memoria compartida.
Para eliminar zonas completas
- /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 solicitudes de conexiones de cliente.
- 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 obsoletas.
- updating
- El número de cachés en actualización.
- revalidated
- El número de cachés revalidadas.
- 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 acumulado 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 cubo 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 acumulado 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 cubo 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 respuestas solo upstream acumulado 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.
- msecs
- Los tiempos de procesamiento de respuestas solo upstream en milisegundos.
- responseBuckets
- msecs
- Los valores de cubo 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 respuestas 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 es solo una marca de que el servidor del ngx_http_upstream_module está caído (por ejemplo,server backend3.example.com down), no el estado real del servidor upstream. Cambiará a 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é especificado 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 lo que especifiqué.
- El límite en el tamaño máximo de la caché especificado en la configuración. Si
- usedSize
- El tamaño actual de la caché. Este valor se toma de nginx como el valor
maxSizeanterior.
- El tamaño actual de la caché. Este valor se toma de nginx como el valor
- 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 obsoletas.
- updating
- El número de cachés en actualización.
- revalidated
- El número de cachés revalidadas.
- 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 integradas 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 obsoletas.
- $vts_cache_updating_counter
- El número de cachés en actualización.
- $vts_cache_revalidated_counter
- El número de cachés revalidadas.
- $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 acumulado.
- $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
(Service Temporarily Unavailable) 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;
...
}
}
- Limitar 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;
...
}
}
- Limitar el tráfico total que ingresa a 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;
}
...
}
}
- Limitar el tráfico total que ingresa al 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 grupos de servidores totales.
- 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 que coincida 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 por
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 por código de estado http detallado
Advertencias: $status variable 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 DNS A, 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 DNS A, 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 DNS A se almacenan en caché en memoria. Por lo tanto, los registros DNS A no cambian en memoria incluso si los registros DNS A 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 DNS A deelb.example.orgcambia, se mostrarán tanto la antigua IP como la nueva IP en::nogroups. A diferencia de la primera configuración del grupo upstream, la segunda configuración funciona bien incluso si los registros DNS A 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 por 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 de 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 instala 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 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.
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 el mensaje (
"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone") se imprime 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 la restauración de datos de estadísticas.
La ruta es una ubicación para volcar los datos de estadísticas. (por ejemplo, /var/log/nginx/vts.db)
El periodo 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 JSON de serverZones. 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 número y cadena especificados.
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 obsoletas.
* cache_updating
* El número de cachés en actualización.
* cache_revalidated
* El número de cachés revalidadas.
* 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 member 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 servidores.
* 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 member 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 obsoletas.
* cache_updating
* El número de cachés en actualización.
* cache_revalidated
* El número de cachés revalidadas.
* 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.
- grupo
- server
- filter
- upstream@alone
- upstream@group
- cache
- zona
- server
- name
- filter
- filter_group@name
- upstream@group
- upstream_group@name
- upstream@alone
- @name
- cache
- name
- nombre
- requestCounter
- El número total de solicitudes de cliente recibidas de los clientes.
- requestMsecCounter
- El número de tiempo de procesamiento de solicitudes acumulado en milisegundos.
- requestMsec
- El promedio de los tiempos de procesamiento de solicitudes en milisegundos.
- responseMsecCounter
- El número de tiempo de procesamiento de respuestas solo upstream acumulado 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é especificado 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 obsoletas.
- cacheUpdating
- El número de cachés en actualización.
- cacheRevalidated
- El número de cachés revalidadas.
- 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 periodo es un tiempo efectivo de los valores utilizados para el cálculo del promedio. (Predeterminado: 60s)
Si se establece periodo en 0, se ignora el tiempo efectivo.
En este caso, se muestra el último valor promedio incluso si no hay solicitudes y después del transcurso del 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 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_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 hacer 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 el PR sea fusionado, crea la nueva etiqueta y el lanzamiento en las GitHub Releases.
Vea también
- Estado de tráfico de stream
- nginx-module-sts
-
Prometheus
-
Protección del sistema
- nginx-module-sysguard
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-vts.