Módulo de estado del tráfico de host virtual nginx
Vea los lanzamientos de GitHub para el último lanzamiento etiquetado.
Ejecute sudo prove -rt después de haber instalado este módulo. Se requiere el sudo porque la prueba requiere que Nginx escuche en el puerto 80.
Las versiones anteriores no se prueban.
shell> git clone git://github.com/vozlt/nginx-module-vts.git
Agregue el módulo a la configuración de compilación agregando --add-module=/path/to/nginx-module-vts
Construya el binario Nginx.
Instale el binario Nginx.
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}Este es un módulo NGINX que proporciona acceso a la información de estado del host virtual. Contiene el estado actual, como servidores, aguas arriba, cachés. Esto es similar al monitoreo de la actividad en vivo de Nginx Plus. El HTML incorporado también se toma de la página de demostración de la versión anterior.
En primer lugar, se requiere la directiva vhost_traffic_status_zone , y luego, si la directiva vhost_traffic_status_display está configurada, puede ser acceso a lo siguiente:
/status/format/json , responderá con un documento JSON que contiene los datos de actividad actuales para usar en paneles en vivo y herramientas de monitoreo de terceros./status/format/html , responderá con el tablero en vivo incorporado en HTML que solicita internamente a /status/format/json ./status/format/jsonp , responderá con una función de devolución de llamada JSONP que contiene los datos de actividad actuales para usar en paneles en vivo y herramientas de monitoreo de terceros./status/format/prometheus , responderá con un documento Prometheus que contiene los datos de actividad actuales./status/control , responderá con un documento JSON después de restablecer o eliminar zonas a través de una cadena de consulta. Ver el control.El documento JSON contiene de la siguiente manera:
{
"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" : ...
}
},
...
}
}* ) y la relación de HITvhost_traffic_status_filter_by_set_key* ) y la relación de búsqueda filtrada a través de la directiva vhost_traffic_status_filter_by_set_key Los objetos overCounts en el documento JSON son principalmente para el sistema 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 OUPT predeterminado que es uno de JSON, JSONP, HTML, Prometheus. (Predeterminado: JSON)
Cálculo del tráfico de la siguiente manera:
Todos los cálculos están funcionando en la fase de procesamiento de registro de Nginx. Las redireccionamientos internos (X-ACCEL-Redirect o Error_Page) no se calculan en las zonas aguas arriba.
Caveats: este módulo se basa en el sistema de registro NGINX (NGX_HTTP_LOG_PHASE: última fase del NGINX HTTP), por lo que el tráfico puede ser en ciertas cirumestres diferentes que el tráfico de ancho de banda real. WebSocket, las descargas canceladas pueden ser causas de inexactitudes. El funcionamiento del módulo no importa en absoluto si la Directiva Access_Log "ON" o "OFF". Nuevamente, este módulo funciona bien en "Access_log Off". Cuando se usa varios dominios, se establece para ser el primer dominio (izquierda) de la directiva server_name. Si no lo desea, vea el VHOST_TRAFFIC_STATUS_FILTER_BY_HOST, VHOST_TRAFFIC_STATUS_FILTER_BY_SET_KEY Directiva.
Consulte los siguientes módulos para las estadísticas de tráfico stream :
Todos los promedios se calculan actualmente como AMM (media aritmética) en los últimos 64 valores.
Es capaz de restablecer o eliminar las zonas de tráfico a través de una cadena de consulta. La solicitud responde con un documento JSON.
{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 estableció como se indicó anteriormente, el URI de control es como example.org/status/control .
Los argumentos de solicitud disponibles son los siguientes:
status | reset | delete >status/format/json .server | filter | upstream@alone | upstream@group | cache | * > Esto es similar al status/format/json excepto que puede obtener cada zonas.
status/format/json . Los valores de Mainzones son los valores de estado predeterminados que incluyen hostName , moduleVersion , nginxVersion , loadMsec , nowMsec , connections .
namefilter_group @ nameupstream_group @ namenamenameRestablece los valores de las zonas especificadas a 0.
namefilter_group @ nameupstream_group @ namenamenameElimina las zonas especificadas en la memoria compartida.
namefilter_group @ nameupstream_group @ namenamename Puede obtener los valores de estado en la configuración de Nginx por separado utilizando vhost_traffic_status_set_by_filter Directiva. Puede adquirir casi todos los valores de estado y el valor obtenido se almacena en variable definida por el usuario, que es el primer argumento.
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:
Consulte la directiva VHOST_TRAFFIC_STATUS_SET_BY_FILTER para obtener un uso detallado.
La siguiente información de estado se proporciona en formato JSON:
/ {status_uri} /format /json
/ {status_uri} / control? cmd = status & ...
{version}(|.dev.{commit}) formato.vhost_traffic_status )vhost_traffic_status_histogram_buckets .serverZones , excepto que incluía nombres de grupos.vhost_traffic_status_histogram_buckets .vhost_traffic_status_histogram_buckets .weight actual del servidor.max_fails del servidor.fail_timeout del servidor.backup actual del servidor.down actual del servidor. Básicamente, esto es solo una marca del servidor NGX_HTP_UPSTREAM_MODULE (por ejemplo, server backend3.example.com down ), no el estado real del servidor ascendente. Se cambiará al estado real si habilita la directiva de zona aguas arriba.max_size en la directiva proxy_cache_path , el valor dependiente del sistema NGX_MAX_OFF_T_VALUE se asigna de forma predeterminada. En otras palabras, este valor es de Nginx, no de lo que especificé.maxSize anterior. / {status_uri} / control? cmd = reet & ...
/ {status_uri} / control? cmd = delete & ...
Se proporcionan las siguientes variables integradas:
Es capaz de limitar el tráfico total por cada host utilizando la directiva vhost_traffic_status_limit_traffic . También puede 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 cambiante.
http {
vhost_traffic_status_zone;
...
server {
server_name *.example.org;
vhost_traffic_status_limit_traffic in:64G;
vhost_traffic_status_limit_traffic out:1024G;
...
}
}*.example.org a 64g y 1024g respectivamente. Funciona individualmente por cada dominio si se habilita vhost_traffic_status_filter_by_host . 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;
...
}
}
example.org a 1024g y 2048g respectivamente. 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;
}
...
}
}
example.org a 512g y 1024g por cada par. Caveats: el tráfico es la transferencia o contador acumulativo, no un ancho de banda.
Es capaz de calcular las estadísticas individuales definidas por el usuario utilizando la directiva vhost_traffic_status_filter_by_set_key .
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;
}
}
} Básicamente, la imagen de las banderas de campo está incorporada en HTML. La imagen de las banderas del país está habilitada si la cadena country se incluye en el nombre del grupo, que es el segundo argumento de vhost_traffic_status_filter_by_set_key Directiva.
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;
}
}
} 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;
}
}
}http_user_agent individual 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;
}
}
}http status code detallado Caveats: la variable de estado $ está disponible en Nginx- (1.3.2, 1.2.2).
Si el dominio tiene múltiples registros DNS A, puede calcular el tráfico para IP individuales para el 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;
}
}
}elb.example.org . Si elb.example.org tiene múltiples registros DNS A, se mostrará todos los IP en filterZones . En la configuración anterior, a medida que NGINX inicia o vuelve a cargarla, consulta un servidor DNS para resolver el dominio y DNS A registros se almacenan en caché en la memoria. Por lo tanto, los registros DNS A no se cambian en la memoria, incluso si el administrador DNS de DNS es atascado por el administrador de DNS a menos que NGINX reinicie o recarga. 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 ;
}
}
}elb.example.org . Si el DNS de elb.example.org se cambia un registro, se mostrará tanto la IP anterior como la nueva IP en ::nogroups . A diferencia de la primera configuración del grupo aguas arriba, la segunda configuración funciona bien incluso si el administrador DNS de DNS A DNS lo atribuye. Caveats: Por favor, más detalles sobre NGINX DNS Consulte el DNS-Service-Descosvery-Nginx-Plus.
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;
}
}
}/status está excluido del cálculo del tráfico de estado y la función Límite. Vea las siguientes directivas: http {
vhost_traffic_status_zone;
vhost_traffic_status_dump /var/log/nginx/vts.db;
...
server {
...
}
}vhost_traffic_status_dump mantiene los datos de estadísticas de forma permanente incluso si se ha reiniciado el sistema o se ha reiniciado Nginx. Consulte la directiva VHOST_TRAFFIC_STATUS_DUMP para un uso detallado. {{uri}} a su estado URI en status.template.html como sigue: shell> vi share/status.template.html
var vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000;
shell> cp share/status.template.html /usr/share/nginx/html/status.html
nginx.conf server {
server_name example.org;
root /usr/share/nginx/html;
# Redirect requests for / to /status.html
location = / {
return 301 /status.html;
}
location = /status.html {}
# Everything beginning /status (except for /status.html) is
# processed by the status handler
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format json;
}
}
http://example.org/status.html
Modificar share/status.template.html (no cambie {{uri}} cadena)
Recree el ngx_http_vhost_traffic_status_module_html.h como sigue:
shell> cd util
shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_vhost_traffic_status_module_html.h
Agregue el módulo a la configuración de compilación agregando --add-module=/path/to/nginx-module-vts
Construya el binario Nginx.
Instale el binario Nginx.

| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS <ON | OFF> |
| Por defecto | apagado |
| Contexto | http, servidor, ubicación |
Description: Habilita o deshabilita el módulo de trabajo. Si establece la directiva vhost_traffic_status_zone , está habilitado automáticamente.
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_ZONE [compartido: nombre: tamaño ] |
| Por defecto | Shared: VHOST_TRAFFIC_STATUS: 1M |
| Contexto | http |
Description: Establece parámetros para una zona de memoria compartida que mantendrá los estados para varias claves. El caché se comparte entre todos los procesos de trabajadores. 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 la memoria compartida aumenta bastante cuando se usa vhost_traffic_status_filter_by_set_key Directiva Pero si las claves del filtro se fijan ( por ejemplo, el número total del código del país es de aproximadamente 240 ), no aumenta continuamente.
Si usa vhost_traffic_status_filter_by_set_key Directiva, configúrelo de la siguiente manera:
vhost_traffic_status_zone shared:vhost_traffic_status:32m )"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone" ) Impreso en ERRY_LOG, aumente a más de (UsedSize * 2).| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_DUMP PATH [ Período ] |
| Por defecto | - |
| Contexto | http |
Description: Habilita el volcado y restauración de datos de estadísticas. La ruta es una ubicación para descargar los datos de las estadísticas (p. Ej. /var/log/nginx/vts.db ) El período es un tiempo de ciclo de respaldo. (Predeterminado: 60S) se realiza una copia de seguridad inmediatamente, independientemente del ciclo de copia de seguridad si la señal sale de Nginx ( SIGKILL ).
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_display |
| Por defecto | - |
| Contexto | http, servidor, ubicación |
Description: habilita o deshabilita el controlador de visualización del módulo.
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_DISPLAY_FORMAT <JSON | HTML | JSONP | PROMETHEUS> |
| Por defecto | json |
| Contexto | http, servidor, ubicación |
Description: Establece el formato de salida del controlador de visualización. Si establece json , responderá con un documento JSON. Si establece html , responderá con el tablero en vivo incorporado en HTML. Si establece jsonp , responderá con una función de devolución de llamada JSONP (predeterminada: NGX_HTP_VHOST_TRAFFIC_STATUS_JSONP_CALLBACK ). Si establece prometheus , responderá con un documento Prometheus.
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_DISPLAY_JSONP Callback |
| Por defecto | ngx_http_vhost_traffic_status_jsonp_callback |
| Contexto | http, servidor, ubicación |
Description: Establece el nombre de devolución de llamada para el JSONP.
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_DISPLAY_SUM_KEY Nombre |
| Por defecto | * |
| Contexto | http, servidor, ubicación |
Description: Establece la cadena de clave de suma en el JSON del campo ServerZones. La cadena de clave de suma predeterminada es la "*".
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_FILTER <ON | OFF> |
| Por defecto | en |
| Contexto | http, servidor, ubicación |
Description: habilita o deshabilita las características del filtro.
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_FILTER_BY_HOST <ON | OFF> |
| Por defecto | apagado |
| Contexto | http, servidor, ubicación |
Description: habilita o deshabilita las teclas por campo encabezado del host. Si se on y la directiva Server_Name de Nginx, establece varios nombres o comodines que comienzan con un asterisco, por ejemplo, " *.example.org" y solicitó servidor con 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 .
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_FILTER_BY_SET_KEKE [Nombre ] |
| Por defecto | - |
| Contexto | http, servidor, ubicación |
Description: habilita las teclas 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 nombre del argumento. 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" : {
...
},
...
},
...
},
...
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_FILTER_CHECK_DUPLICATE <ON | OFF> |
| Por defecto | en |
| Contexto | http, servidor, ubicación |
Description: habilita o deshabilita la deduplicación de VHOST_TRAFFIC_STATUS_FILTER_BY_SET_KEY. Se procesa solo uno de valores duplicados ( key + name ) en cada directivas (http, servidor, ubicación) si esta opción está habilitada.
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_FILTER_MAX_NODE Número [ cadena ...] |
| Por defecto | 0 |
| Contexto | http |
Description: habilita el límite del tamaño del filtro utilizando el número especificado y los valores de cadena . Si se excede el número , los nodos existentes son eliminados por el algoritmo LRU. El argumento numérico es el tamaño del nodo que será limitado. El valor predeterminado 0 no limita los filtros. El nodo One es un objeto en filterZones en el documento JSON. Los argumentos de cadena son los valores de cadena coincidentes para el valor de cadena de grupo establecido por vhost_traffic_status_filter_by_set_key Directiva. Incluso si solo la primera parte coincida, la coincidencia es exitosa como la expresión regular /^string.*/ . Por defecto, si no establece argumentos de cadena , se solicitó todos los filtros.
Para ejemplos:
$ vi nginx.conf
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
# The all filters are limited to a total of 16 nodes.
# vhost_traffic_status_filter_max_node 16
# The `/^uris.*/` and `/^client::ports.*/` group string patterns are limited to a total of 64 nodes.
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, el /^uris.*/ y /^client::ports.*/ Los patrones de cadena de grupos se limitan a un total de 16 nodos. Los otros filtros como country::.* No son limitados.
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_LIMIT <ON | OFF> |
| Por defecto | en |
| Contexto | http, servidor, ubicación |
Description: habilita o deshabilita las características de límite.
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_LIMIT_TRAFFICE MIEMBRE : Tamaño [ Código ] |
| Por defecto | - |
| Contexto | http, servidor, ubicación |
Description: habilita el límite de tráfico para el miembro especificado. El miembro es una cadena de miembros 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 las solicitudes rechazadas (predeterminado: 503)
Las cadenas member disponibles son las siguientes:
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_LIMIT_TRAFFIC_BY_SET_KEY MIEMBRO : Tamaño [ Código ] |
| Por defecto | - |
| Contexto | http, servidor, ubicación |
Description: Habilita el límite de tráfico para la clave y el miembro especificados. La clave es una cadena clave para limitar el tráfico. El miembro es una cadena de miembros 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 las solicitudes rechazadas (predeterminado: 503)
La sintaxis key es la siguiente:
group @[ subgroup @] name Las cadenas group disponibles son las siguientes:
subgroup )subgroup ) Las cadenas member disponibles son las siguientes:
El miembro es lo mismo que la directiva vhost_traffic_status_limit_traffic .
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_LIMIT_CHECK_DUPLICATE <ON | OFF> |
| Por defecto | en |
| Contexto | http, servidor, ubicación |
Description: habilita o deshabilita la deduplicación de VHOST_TRAFFIC_STATUS_LIMIT_BY_SET_KEY. Se procesa solo uno de valores duplicados ( member | key + member ) en cada directiva (http, servidor, ubicación) si esta opción está habilitada.
| - | - |
|---|---|
| Sintaxis | VHOST_TRAFFIC_STATUS_SET_BY_FILTER $ Variable Group / Zone / Name |
| Por defecto | - |
| Contexto | http, servidor, ubicación, si |
Description: Obtenga el valor de estado especificado almacenado en la memoria compartida. Puede adquirir casi todos los valores de estado y el valor obtenido se almacena en $ variable, que es el primer argumento.
Caveats: el nombre es sensible a la caja. Todos los valores de retorno toman el tipo de entero.
Para ejemplos:
$requestCounter server/example.org/requestCounter$requestCounter filter/country::example.org@KR/requestCounter$requestCounter upstream@group/[email protected]:80/requestCounter$requestCounter upstream@alone/10.10.10.11:80/requestCounter$cacheHit cache/my_cache_name/cacheHit| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_average_method <AMM|WMA> [ period ] |
| Por defecto | AMM 60s |
| Contexto | http, server, location |
Description: Sets the method which is a formula that calculate the average of response processing times. The period is an effective time of the values used for the average calculation.(Default: 60s) If period set to 0, effective time is ignored. In this case, the last average value is displayed even if there is no requests and after the elapse of time. The corresponding values are requestMsec and responseMsec in JSON.
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_histogram_buckets second ... |
| Por defecto | - |
| Contexto | http, server, location |
Description: Sets the observe buckets to be used in the histograms. By default, if you do not set this directive, it will not work. The second can be expressed in decimal places with a minimum value of 0.001(1ms). The maximum size of the buckets is 32. If this value is insufficient for you, change the NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN in the src/ngx_http_vhost_traffic_status_node.h
For examples:
0.005 0.01 0.05 0.1 0.5 1 5 100.005 0.01 0.05 0.1 Caveats: By default, if you do not set this directive, the histogram statistics does not work. The restored histograms by vhost_traffic_status_dump directive have no affected by changes to the buckets by vhost_traffic_status_histogram_buckets directive. So you must first delete the zone or the dump file before changing the buckets by vhost_traffic_status_histogram_buckets directive. Similar to the above, delete the dump file when using the histogram for the first time.
| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_bypass_limit <on|off> |
| Por defecto | apagado |
| Contexto | http, server, location |
Description: Enables or disables to bypass vhost_traffic_status_limit directives. The limit features is bypassed if this option is enabled. This is mostly useful if you want to connect the status web page like /status regardless of vhost_traffic_status_limit directives as follows:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}| - | - |
|---|---|
| Sintaxis | vhost_traffic_status_bypass_stats <on|off> |
| Por defecto | apagado |
| Contexto | http, server, location |
Description: Enables or disables to bypass vhost_traffic_status . The traffic status stats features is bypassed if this option is enabled. In other words, it is excluded from the traffic status stats. This is mostly useful if you want to ignore your request in status web page like /status as follows:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}To cut a release, create a changelog entry PR with 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-
After the PR is merged, create the new tag and release on the GitHub Releases.
Stream traffic status
Prometeo
System protection
YoungJoo.Kim(김영주) [[email protected]]