vts: Módulo de status de tráfego de host virtual do NGINX
Instalação
Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:
- RedHat Enterprise Linux 7, 8, 9 e 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 e 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
Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:
load_module modules/ngx_http_vhost_traffic_status_module.so;
Este documento descreve o nginx-module-vts v0.2.5 lançado em 28 de dezembro de 2025.
Módulo de status de tráfego de host virtual do NGINX
Teste
Execute sudo prove -r t após instalar este módulo. O sudo é necessário porque o teste requer que o NGINX escute na porta 80.
Capturas de tela


Sinopse
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
Descrição
Este é um módulo do NGINX que fornece acesso a informações de status de host virtual. Ele contém o status atual, como servidores, upstreams e caches. Isso é semelhante ao monitoramento de atividade em tempo real do NGINX Plus. O HTML embutido também é retirado da página de demonstração da versão antiga.
Primeiramente, a diretiva vhost_traffic_status_zone é necessária, e então, se a diretiva vhost_traffic_status_display estiver definida, pode ser acessada da seguinte forma:
- /status/format/json
- Se você solicitar
/status/format/json, responderá com um documento JSON contendo os dados de atividade atuais para uso em painéis ao vivo e ferramentas de monitoramento de terceiros. - /status/format/html
- Se você solicitar
/status/format/html, responderá com o painel ao vivo embutido em HTML que solicita internamente a/status/format/json. - /status/format/jsonp
- Se você solicitar
/status/format/jsonp, responderá com uma função de callback JSONP contendo os dados de atividade atuais para uso em painéis ao vivo e ferramentas de monitoramento de terceiros. - /status/format/prometheus
- Se você solicitar
/status/format/prometheus, responderá com um documento prometheus contendo os dados de atividade atuais. - /status/control
- Se você solicitar
/status/control, responderá com um documento JSON após redefinir ou excluir zonas através de uma string de consulta. Veja o Controle.
O documento JSON contém o seguinte:
{
"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
- Versão básica, tempo de atividade((nowMsec - loadMsec)/1000)
- nowMsec, loadMsec é em milissegundos.
- connections
- Total de conexões e solicitações (igual ao stub_status_module no NGINX)
- sharedZones
- As informações de memória compartilhada usadas no nginx-module-vts.
- serverZones
- Tráfego (entrada/saída) e contagem de solicitações e respostas e taxa de acerto de cache por cada zona de servidor
- Tráfego total (Entrada/Saída) e contagem de solicitações e respostas (o nome da zona é
*) e taxa de acerto - filterZones
- Tráfego (entrada/saída) e contagem de solicitações e respostas e taxa de acerto de cache por cada zona de servidor filtrada através da diretiva
vhost_traffic_status_filter_by_set_key - Tráfego total (Entrada/Saída) e contagem de solicitações e respostas (o nome da zona é
*) e taxa de acerto filtrada através da diretivavhost_traffic_status_filter_by_set_key - upstreamZones
- Tráfego (entrada/saída) e contagem de solicitações e respostas por servidor em cada grupo upstream
- Configurações atuais (peso, maxfails, failtimeout...) no nginx.conf
- cacheZones
- Tráfego (entrada/saída) e tamanho (capacidade/usado) e taxa de acerto por cada zona de cache ao usar a diretiva proxy_cache.
Os objetos overCounts no documento JSON são principalmente para sistemas de 32 bits e serão incrementados em 1 se seu valor transbordar. A diretiva vhost_traffic_status_display_format define o formato de saída padrão que é um dos json, jsonp, html, prometheus. (Padrão: json)
O cálculo de tráfego é o seguinte:
- ServerZones
- in += requested_bytes
- out += sent_bytes
- FilterZones
- in += requested_bytes via o filtro
- out += sent_bytes via o filtro
- UpstreamZones
- in += requested_bytes via as ServerZones
- out += sent_bytes via as ServerZones
- cacheZones
- in += requested_bytes via as ServerZones
- out += sent_bytes via as ServerZones
Todos os cálculos funcionam na fase de processamento de logs do NGINX. Redirecionamentos internos (X-Accel-Redirect ou error_page) não são calculados nas UpstreamZones.
Caveats: este módulo depende do sistema de logging do NGINX (NGX_HTTP_LOG_PHASE: última fase do http do NGINX), portanto, o tráfego pode ser em certas circunstâncias diferente do tráfego de largura de banda real. Websocket, downloads cancelados podem ser a causa de imprecisões. O funcionamento do módulo não depende se a diretiva access_log está "on" ou "off". Novamente, este módulo funciona bem com "access_log off". Ao usar vários domínios, ele é definido para o primeiro domínio (à esquerda) da diretiva server_name. Se você não quiser isso, veja a diretiva vhost_traffic_status_filter_by_host, vhost_traffic_status_filter_by_set_key.
Veja os seguintes módulos para as estatísticas de tráfego stream:
* nginx-module-sts
* nginx-module-stream-sts
Cálculos e Intervalos
Médias
Todas as médias são atualmente calculadas como AMM (Média Aritmética) sobre os últimos 64 valores.
Controle
É possível redefinir ou excluir zonas de tráfego através de uma string de consulta. A solicitação responde com um documento JSON.
- Sintaxe 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;
}
}
}
Se configurado como acima, então a URI de controle é como example.org/status/control.
Os argumentos de solicitação disponíveis são os seguintes:
* cmd=\<status|reset|delete>
* status
* Retorna o status das zonas de tráfego para o formato json como status/format/json.
* reset
* Redefine as zonas de tráfego sem excluir nós na memória compartilhada. (= inicializa para 0)
* delete
* Exclui as zonas de tráfego na memória compartilhada. Ao re-solicitar, elas são recriadas.
* 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 obter o status das zonas de tráfego em tempo real
Isso é semelhante ao status/format/json, exceto que pode obter cada zona.
Para obter zonas completas
- É exatamente o mesmo que
status/format/json. - /status/control?cmd=status&group=*
Para obter 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=*
Os valores mainZones são valores de status padrão, incluindo hostName, moduleVersion, nginxVersion, loadMsec, nowMsec, connections.
Para obter cada zona
- zona única em serverZones
- /status/control?cmd=status&group=server&zone=
name - zona única em filterZones
- /status/control?cmd=status&group=filter&zone=
filter_group@name - zona única em upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - zona única em upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
name - zona única em cacheZones
- /status/control?cmd=status&group=cache&zone=
name
Para redefinir zonas de tráfego em tempo real
Redefine os valores das zonas especificadas para 0.
Para redefinir zonas completas
- /status/control?cmd=reset&group=*
Para redefinir 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 redefinir cada zona
- zona única em serverZones
- /status/control?cmd=reset&group=server&zone=
name - zona única em filterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - zona única em upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - zona única em upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name - zona única em cacheZones
- /status/control?cmd=reset&group=cache&zone=
name
Para excluir zonas de tráfego em tempo real
Exclui as zonas especificadas na memória compartilhada.
Para excluir zonas completas
- /status/control?cmd=delete&group=*
Para excluir 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 excluir cada zona
- zona única em serverZones
- /status/control?cmd=delete&group=server&zone=
name - zona única em filterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - zona única em upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - zona única em upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name - zona única em cacheZones
- /status/control?cmd=delete&group=cache&zone=
name
Definir
É possível obter os valores de status na configuração do NGINX separadamente usando a diretiva vhost_traffic_status_set_by_filter. Ela pode adquirir quase todos os valores de status e o valor obtido é armazenado em uma variável definida pelo usuário, que é o primeiro argumento.
- Sintaxe da Diretiva
- 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;
}
}
}
As configurações acima são as seguintes:
- $requestCounter
- serverZones -> example.org -> requestCounter
- $requestCounterKR
- filterZones -> country::example.org -> KR -> requestCounter
- $requestCounterB1
- upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter
Consulte a diretiva vhost_traffic_status_set_by_filter para uso detalhado.
JSON
As seguintes informações de status são fornecidas no formato JSON:
Json usado pelo status
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- Nome do host.
- moduleVersion
- Versão do módulo no formato
{version}(|.dev.{commit}). - nginxVersion
- Versão do NGINX fornecido.
- loadMsec
- Tempo de carregamento do processo em milissegundos.
- nowMsec
- Tempo atual em milissegundos
- connections
- active
- O número atual de conexões ativas de clientes.
- reading
- O número total de conexões de clientes em leitura.
- writing
- O número total de conexões de clientes em escrita.
- waiting
- O número total de conexões de clientes em espera.
- accepted
- O número total de conexões de clientes aceitas.
- handled
- O número total de conexões de clientes tratadas.
- requests
- O número total de solicitações de clientes.
- sharedZones
- name
- O nome da memória compartilhada especificada na configuração. (padrão:
vhost_traffic_status)
- O nome da memória compartilhada especificada na configuração. (padrão:
- maxSize
- O limite no tamanho máximo da memória compartilhada especificada na configuração.
- usedSize
- O tamanho atual da memória compartilhada.
- usedNode
- O número atual de nós usando a memória compartilhada. É possível obter um tamanho aproximado para um nó com a seguinte fórmula: (usedSize / usedNode)
- serverZones
- requestCounter
- O número total de solicitações de clientes recebidas.
- inBytes
- O número total de bytes recebidos de clientes.
- outBytes
- O número total de bytes enviados para clientes.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- O número de respostas com códigos de status 1xx, 2xx, 3xx, 4xx e 5xx.
- miss
- O número de falhas de cache.
- bypass
- O número de bypass de cache.
- expired
- O número de expirações de cache.
- stale
- O número de caches obsoletos.
- updating
- O número de atualizações de cache.
- revalidated
- O número de revalidações de cache.
- hit
- O número de acertos de cache.
- scarce
- O número de escassez de cache.
- requestMsecCounter
- O número de tempo acumulado de processamento de solicitações em milissegundos.
- requestMsec
- A média dos tempos de processamento de solicitações em milissegundos.
- requestMsecs
- times
- Os tempos em milissegundos durante os tempos de processamento de solicitações.
- msecs
- Os tempos de processamento de solicitações em milissegundos.
- requestBuckets
- msecs
- Os valores do bucket do histograma definidos pela diretiva
vhost_traffic_status_histogram_buckets. - counters
- Os valores acumulados para o motivo de que cada valor de bucket é maior ou igual ao tempo de processamento da solicitação.
- filterZones
- Fornece os mesmos campos que
serverZones, exceto que inclui nomes de grupos. - upstreamZones
- server
- Um endereço do servidor.
- requestCounter
- O número total de conexões de clientes encaminhadas para este servidor.
- inBytes
- O número total de bytes recebidos deste servidor.
- outBytes
- O número total de bytes enviados para este servidor.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- O número de respostas com códigos de status 1xx, 2xx, 3xx, 4xx e 5xx.
- requestMsecCounter
- O número de tempo acumulado de processamento de solicitações incluindo upstream em milissegundos.
- requestMsec
- A média dos tempos de processamento de solicitações incluindo upstream em milissegundos.
- requestMsecs
- times
- Os tempos em milissegundos durante os tempos de processamento de solicitações.
- msecs
- Os tempos de processamento de solicitações incluindo upstream em milissegundos.
- requestBuckets
- msecs
- Os valores do bucket do histograma definidos pela diretiva
vhost_traffic_status_histogram_buckets. - counters
- Os valores acumulados para o motivo de que cada valor de bucket é maior ou igual ao tempo de processamento da solicitação incluindo upstream.
- responseMsecCounter
- O número de tempo acumulado apenas do processamento de respostas upstream em milissegundos.
- responseMsec
- A média dos tempos de processamento de respostas apenas upstream em milissegundos.
- responseMsecs
- times
- Os tempos em milissegundos durante os tempos de processamento de respostas.
- msecs
- Os tempos de processamento de respostas apenas upstream em milissegundos.
- responseBuckets
- msecs
- Os valores do bucket do histograma definidos pela diretiva
vhost_traffic_status_histogram_buckets. - counters
- Os valores acumulados para o motivo de que cada valor de bucket é maior ou igual ao tempo de processamento de resposta apenas upstream.
- weight
- Configuração atual de
weightdo servidor.
- Configuração atual de
- maxFails
- Configuração atual de
max_failsdo servidor.
- Configuração atual de
- failTimeout
- Configuração atual de
fail_timeoutdo servidor.
- Configuração atual de
- backup
- Configuração atual de
backupdo servidor.
- Configuração atual de
- down
- Configuração atual de
downdo servidor. Basicamente, isso é apenas uma marca do estado de servidor down do ngx_http_upstream_module (por exemplo,server backend3.example.com down), não o estado real do servidor upstream. Ele mudará para o estado real se você habilitar a diretiva de zona upstream.
- Configuração atual de
- cacheZones
- maxSize
- O limite no tamanho máximo do cache especificado na configuração. Se
max_sizena diretivaproxy_cache_pathnão for especificado, o valor dependente do sistemaNGX_MAX_OFF_T_VALUEé atribuído por padrão. Em outras palavras, esse valor é do NGINX, não do que eu especifiquei.
- O limite no tamanho máximo do cache especificado na configuração. Se
- usedSize
- O tamanho atual do cache. Esse valor é retirado do NGINX como o valor acima
maxSize.
- O tamanho atual do cache. Esse valor é retirado do NGINX como o valor acima
- inBytes
- O número total de bytes recebidos do cache.
- outBytes
- O número total de bytes enviados do cache.
- responses
- miss
- O número de falhas de cache.
- bypass
- O número de bypass de cache.
- expired
- O número de expirações de cache.
- stale
- O número de caches obsoletos.
- updating
- O número de atualizações de cache.
- revalidated
- O número de revalidações de cache.
- hit
- O número de acertos de cache.
- scarce
- O número de escassez de cache.
Json usado pelo controle
/{status_uri}/control?cmd=reset&...
/{status_uri}/control?cmd=delete&...
- processingReturn
- O resultado de verdadeiro ou falso.
- processingCommandString
- A string de comando solicitada.
- processingGroupString
- A string de grupo solicitada.
- processingZoneString
- A string de zona solicitada.
- processingCounts
- O número de processamento real.
Variáveis
As seguintes variáveis embutidas são fornecidas:
- $vts_request_counter
- O número total de solicitações de clientes recebidas.
- $vts_in_bytes
- O número total de bytes recebidos de clientes.
- $vts_out_bytes
- O número total de bytes enviados para clientes.
- $vts_1xx_counter
- O número de respostas com códigos de status 1xx.
- $vts_2xx_counter
- O número de respostas com códigos de status 2xx.
- $vts_3xx_counter
- O número de respostas com códigos de status 3xx.
- $vts_4xx_counter
- O número de respostas com códigos de status 4xx.
- $vts_5xx_counter
- O número de respostas com códigos de status 5xx.
- $vts_cache_miss_counter
- O número de falhas de cache.
- $vts_cache_bypass_counter
- O número de bypass de cache.
- $vts_cache_expired_counter
- O número de expirações de cache.
- $vts_cache_stale_counter
- O número de caches obsoletos.
- $vts_cache_updating_counter
- O número de atualizações de cache.
- $vts_cache_revalidated_counter
- O número de revalidações de cache.
- $vts_cache_hit_counter
- O número de acertos de cache.
- $vts_cache_scarce_counter
- O número de escassez de cache.
- $vts_request_time_counter
- O número de tempo acumulado de processamento de solicitações.
- $vts_request_time
- A média dos tempos de processamento de solicitações.
Limite
É possível limitar o tráfego total por cada host usando a diretiva vhost_traffic_status_limit_traffic. Também é possível limitar todo o tráfego usando a diretiva vhost_traffic_status_limit_traffic_by_set_key. Quando o limite é excedido, o servidor retornará o erro 503 (Serviço Temporariamente Indisponível) em resposta a uma solicitação. O código de retorno pode ser alterável.
Para limitar o tráfego para o 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 o tráfego total de entrada/saída no
*.example.orgpara 64G e 1024G, respectivamente. Funciona individualmente por cada domínio se a diretivavhost_traffic_status_filter_by_hostestiver habilitada.
Para limitar o tráfego para 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 o tráfego total de entrada para os EUA e CN em
example.orgpara 1024G e 2048G, respectivamente.
Para limitar o tráfego 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 o tráfego total de entrada para o backend upstream em
example.orgpara 512G e 1024G por cada par.
Caveats: O tráfego é a transferência cumulativa ou contador, não uma largura de banda.
Casos de uso
É possível calcular as estatísticas individuais definidas pelo usuário usando a diretiva vhost_traffic_status_filter_by_set_key.
Para calcular o tráfego para um país individual usando 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 o tráfego para um país individual de todos os grupos de servidores.
- Calcular o tráfego para um país individual de cada grupo de servidores.
Basicamente, a imagem da bandeira do país é embutida no HTML. A imagem da bandeira do país é habilitada se a string country estiver incluída no nome do grupo, que é o segundo argumento da diretiva vhost_traffic_status_filter_by_set_key.
Para calcular o tráfego para um volume de armazenamento 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 o tráfego para um volume de armazenamento individual correspondido pela expressão regular da diretiva location.
Para calcular o tráfego para um agente de usuário 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 o tráfego para um
http_user_agentindividual.
Para calcular o tráfego para códigos de status http detalhados
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 o tráfego para códigos de status http detalhados.
Caveats: A variável $status está disponível no NGINX-(1.3.2, 1.2.2).
Para calcular o tráfego para dns dinâmico
Se o domínio tiver vários registros DNS A, você pode calcular o tráfego para IPs individuais do domínio usando o recurso de filtro ou uma variável em 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 o tráfego para IPs individuais do domínio
elb.example.org. Seelb.example.orgtiver vários registros DNS A, serão exibidos todos os IPs emfilterZones. Nas configurações acima, quando o NGINX inicia ou recarrega sua configuração, ele consulta um servidor DNS para resolver o domínio e os registros DNS A são armazenados em cache na memória. Portanto, os registros DNS A não são alterados na memória mesmo que os registros DNS A sejam alterados pelo administrador DNS, a menos que o NGINX seja reiniciado ou recarregado.
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 o tráfego para IPs individuais do domínio
elb.example.org. Se o registro DNS A deelb.example.orgfor alterado, serão exibidos tanto o IP antigo quanto o novo em::nogroups. Ao contrário da primeira configuração do grupo upstream, a segunda configuração funciona bem mesmo que os registros DNS A sejam alterados pelo administrador DNS.
Caveats: Para mais detalhes sobre o DNS do NGINX, consulte o dns-service-discovery-nginx-plus.
Para calcular o tráfego, exceto pela página de status
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;
}
}
}
- A URI
/statusé excluída do cálculo de tráfego de status e do recurso de limite. Veja as seguintes diretivas: - vhost_traffic_status_bypass_limit
- vhost_traffic_status_bypass_stats
Para manter os dados estatísticos permanentemente
http {
vhost_traffic_status_zone;
vhost_traffic_status_dump /var/log/nginx/vts.db;
...
server {
...
}
}
- A diretiva
vhost_traffic_status_dumpmantém os dados estatísticos permanentemente, mesmo que o sistema tenha sido reiniciado ou o NGINX tenha sido reiniciado. Consulte a diretiva vhost_traffic_status_dump para uso detalhado.
Personalizando
Para personalizar após a instalação do módulo
-
Você precisa alterar a string
{{uri}}para sua URI de status em status.template.html da seguinte forma:shell> vi share/status.template.htmlvar vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000; -
E então, personalizando e copiando status.template.html para o diretório raiz do servidor da seguinte forma:
shell> cp share/status.template.html /usr/share/nginx/html/status.html -
Configure
nginx.confserver { server_name example.org; root /usr/share/nginx/html; # Redireciona solicitações de / para /status.html location = / { return 301 /status.html; } location = /status.html {} # Tudo que começa com /status (exceto /status.html) é # processado pelo manipulador de status location /status { vhost_traffic_status_display; vhost_traffic_status_display_format json; } } -
Acesse seu html.
http://example.org/status.html
Para personalizar antes da instalação do módulo
-
Modifique
share/status.template.html(não altere a string{{uri}}) -
Recrie o
ngx_http_vhost_traffic_status_module_html.hda seguinte forma:shell> cd util shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_vhost_traffic_status_module_html.h -
Adicione o módulo à configuração de construção adicionando
--add-module=/path/to/nginx-module-vts -
Compile o binário do NGINX.
-
Instale o binário do NGINX.
Diretivas

vhost_traffic_status
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status \<on|off> |
| Padrão | off |
| Contexto | http, server, location |
Descrição: Habilita ou desabilita o funcionamento do módulo. Se você definir a diretiva vhost_traffic_status_zone, ela é habilitada automaticamente.
vhost_traffic_status_zone
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_zone [shared:name:size] |
| Padrão | shared:vhost_traffic_status:1m |
| Contexto | http |
Descrição: Define parâmetros para uma zona de memória compartilhada que manterá estados para várias chaves. O cache é compartilhado entre todos os processos de trabalho. Na maioria dos casos, o tamanho da memória compartilhada usada pelo nginx-module-vts não aumenta muito. O tamanho da memória compartilhada aumenta bastante ao usar a diretiva vhost_traffic_status_filter_by_set_key, mas se as chaves do filtro forem fixas (por exemplo, o número total de códigos de país é cerca de 240), não aumenta continuamente.
Se você usar a diretiva vhost_traffic_status_filter_by_set_key, configure-a da seguinte forma:
- Defina um tamanho de memória compartilhada superior a 32M por padrão. (
vhost_traffic_status_zone shared:vhost_traffic_status:32m) - Se a mensagem (
"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone") for impressa no error_log, aumente para mais do que (usedSize * 2).
vhost_traffic_status_dump
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_dump path [period] |
| Padrão | - |
| Contexto | http |
Descrição: Habilita o despejo e a restauração de dados estatísticos. O path é um local para despejar os dados estatísticos. (por exemplo, /var/log/nginx/vts.db) O period é um tempo de ciclo de backup. (Padrão: 60s) É feito um backup imediatamente, independentemente do ciclo de backup, se o NGINX sair por sinal (SIGKILL).
vhost_traffic_status_display
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_display |
| Padrão | - |
| Contexto | http, server, location |
Descrição: Habilita ou desabilita o manipulador de exibição do módulo.
vhost_traffic_status_display_format
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_display_format \<json|html|jsonp|prometheus> |
| Padrão | json |
| Contexto | http, server, location |
Descrição: Define o formato de saída do manipulador de exibição. Se você definir json, responderá com um documento JSON. Se você definir html, responderá com o painel ao vivo embutido em HTML. Se você definir jsonp, responderá com uma função de callback JSONP (padrão: ngx_http_vhost_traffic_status_jsonp_callback). Se você definir prometheus, responderá com um documento prometheus.
vhost_traffic_status_display_jsonp
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_display_jsonp callback |
| Padrão | ngx_http_vhost_traffic_status_jsonp_callback |
| Contexto | http, server, location |
Descrição: Define o nome de callback para o JSONP.
vhost_traffic_status_display_sum_key
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_display_sum_key name |
| Padrão | * |
| Contexto | http, server, location |
Descrição: Define a string da chave de soma no campo serverZones do JSON. A string padrão da chave de soma é o "*".
vhost_traffic_status_filter
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_filter \<on|off> |
| Padrão | on |
| Contexto | http, server, location |
Descrição: Habilita ou desabilita os recursos de filtro.
vhost_traffic_status_filter_by_host
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_filter_by_host \<on|off> |
| Padrão | off |
| Contexto | http, server, location |
Descrição: Habilita ou desabilita as chaves pelo campo de cabeçalho Host. Se você definir on e a diretiva server_name do NGINX definir vários nomes ou um nome curinga começando com um asterisco, por exemplo, “.example.org” e solicitar ao servidor com um nome de host como (a|b|c).example.org ou .example.org, então o json serverZones é impresso da seguinte forma:
server {
server_name *.example.org;
vhost_traffic_status_filter_by_host on;
...
}
...
"serverZones": {
"a.example.org": {
...
},
"b.example.org": {
...
},
"c.example.org": {
...
}
...
},
...
Fornece a mesma função que definir vhost_traffic_status_filter_by_set_key $host.
vhost_traffic_status_filter_by_set_key
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_filter_by_set_key key [name] |
| Padrão | - |
| Contexto | http, server, location |
Descrição: Habilita as chaves pela variável definida pelo usuário. A key é uma string de chave para calcular o tráfego. O name é uma string de grupo para calcular o tráfego. A key e o name podem conter variáveis como $host, $server_name. O grupo do name pertence a filterZones se especificado. O grupo da key pertence a serverZones se não for especificado o segundo argumento name. O exemplo com o módulo geoip é o seguinte:
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
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_filter_check_duplicate \<on|off> |
| Padrão | on |
| Contexto | http, server, location |
Descrição: Habilita ou desabilita a deduplicação de vhost_traffic_status_filter_by_set_key. É processado apenas um dos valores duplicados (key + name) em cada diretiva (http, server, location) se esta opção estiver habilitada.
vhost_traffic_status_filter_max_node
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_filter_max_node number [string ...] |
| Padrão | 0 |
| Contexto | http |
Descrição: Habilita o limite do tamanho do filtro usando os valores especificados de number e string. Se o number for excedido, os nós existentes são excluídos pelo algoritmo LRU. O argumento number é o tamanho do nó que será limitado. O valor padrão 0 não limita filtros. Um nó é um objeto em filterZones no documento JSON. Os argumentos string são os valores de string correspondentes para o valor de string do grupo definido pela diretiva vhost_traffic_status_filter_by_set_key. Mesmo que apenas a primeira parte corresponda, a correspondência é bem-sucedida como a expressão regular /^string.*/. Por padrão, se você não definir argumentos string, eles se aplicarão a todos os filtros.
Por exemplo:
$ vi nginx.conf
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
# Todos os filtros são limitados a um total de 16 nós.
# vhost_traffic_status_filter_max_node 16
# Os padrões de string de grupo `/^uris.*/` e `/^client::ports.*/` são limitados a um total de 64 nós.
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

No exemplo acima, os padrões de string de grupo /^uris.*/ e /^client::ports.*/ são limitados a um total de 16 nós. Os outros filtros, como country::.*, não são limitados.
vhost_traffic_status_limit
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_limit \<on|off> |
| Padrão | on |
| Contexto | http, server, location |
Descrição: Habilita ou desabilita os recursos de limite.
vhost_traffic_status_limit_traffic
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_limit_traffic member:size [code] |
| Padrão | - |
| Contexto | http, server, location |
Descrição: Habilita o limite de tráfego para o member especificado. O member é uma string de membro para limitar o tráfego. O size é um tamanho (k/m/g) para limitar o tráfego. O code é um código a ser retornado em resposta a solicitações rejeitadas. (Padrão: 503)
As strings member disponíveis são as seguintes:
* request
* O número total de solicitações de clientes recebidas.
* in
* O número total de bytes recebidos de clientes.
* out
* O número total de bytes enviados para clientes.
* 1xx
* O número de respostas com códigos de status 1xx.
* 2xx
* O número de respostas com códigos de status 2xx.
* 3xx
* O número de respostas com códigos de status 3xx.
* 4xx
* O número de respostas com códigos de status 4xx.
* 5xx
* O número de respostas com códigos de status 5xx.
* cache_miss
* O número de falhas de cache.
* cache_bypass
* O número de bypass de cache.
* cache_expired
* O número de expirações de cache.
* cache_stale
* O número de caches obsoletos.
* cache_updating
* O número de atualizações de cache.
* cache_revalidated
* O número de revalidações de cache.
* cache_hit
* O número de acertos de cache.
* cache_scarce
* O número de escassez de cache.
vhost_traffic_status_limit_traffic_by_set_key
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_limit_traffic_by_set_key key member:size [code] |
| Padrão | - |
| Contexto | http, server, location |
Descrição: Habilita o limite de tráfego para o key e member especificados. A key é uma string de chave para limitar o tráfego. O member é uma string de membro para limitar o tráfego. O size é um tamanho (k/m/g) para limitar o tráfego. O code é um código a ser retornado em resposta a solicitações rejeitadas. (Padrão: 503)
A sintaxe de key é a seguinte:
* group@[subgroup@]name
As strings de group disponíveis são as seguintes:
* NO
* O grupo de servidor.
* UA
* O grupo de upstream sozinho.
* UG
* O grupo de upstream em grupo. (use subgroup)
* CC
* O grupo de cache.
* FG
* O grupo de filtro. (use subgroup)
As strings de member disponíveis são as seguintes:
* request
* O número total de solicitações de clientes recebidas.
* in
* O número total de bytes recebidos de clientes.
* out
* O número total de bytes enviados para clientes.
* 1xx
* O número de respostas com códigos de status 1xx.
* 2xx
* O número de respostas com códigos de status 2xx.
* 3xx
* O número de respostas com códigos de status 3xx.
* 4xx
* O número de respostas com códigos de status 4xx.
* 5xx
* O número de respostas com códigos de status 5xx.
* cache_miss
* O número de falhas de cache.
* cache_bypass
* O número de bypass de cache.
* cache_expired
* O número de expirações de cache.
* cache_stale
* O número de caches obsoletos.
* cache_updating
* O número de atualizações de cache.
* cache_revalidated
* O número de revalidações de cache.
* cache_hit
* O número de acertos de cache.
* cache_scarce
* O número de escassez de cache.
O member é o mesmo que a diretiva vhost_traffic_status_limit_traffic.
vhost_traffic_status_limit_check_duplicate
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_limit_check_duplicate \<on|off> |
| Padrão | on |
| Contexto | http, server, location |
Descrição: Habilita ou desabilita a deduplicação de vhost_traffic_status_limit_by_set_key. É processado apenas um dos valores duplicados (member | key + member) em cada diretiva (http, server, location) se esta opção estiver habilitada.
vhost_traffic_status_set_by_filter
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_set_by_filter $variable group/zone/name |
| Padrão | - |
| Contexto | http, server, location, if |
Descrição: Obtém o valor de status especificado armazenado na memória compartilhada. Pode adquirir quase todos os valores de status e o valor obtido é armazenado em $variable, que é o primeiro 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
- O número total de solicitações de clientes recebidas.
- requestMsecCounter
- O número de tempo acumulado de processamento de solicitações em milissegundos.
- requestMsec
- A média dos tempos de processamento de solicitações em milissegundos.
- responseMsecCounter
- O número de tempo acumulado apenas do processamento de respostas upstream em milissegundos.
- responseMsec
- A média dos tempos de processamento de respostas apenas upstream em milissegundos.
- inBytes
- O número total de bytes recebidos de clientes.
- outBytes
- O número total de bytes enviados para clientes.
- 1xx, 2xx, 3xx, 4xx, 5xx
- O número de respostas com códigos de status 1xx, 2xx, 3xx, 4xx e 5xx.
- cacheMaxSize
- O limite no tamanho máximo do cache especificado na configuração.
- cacheUsedSize
- O tamanho atual do cache.
- cacheMiss
- O número de falhas de cache.
- cacheBypass
- O número de bypass de cache.
- cacheExpired
- O número de expirações de cache.
- cacheStale
- O número de caches obsoletos.
- cacheUpdating
- O número de atualizações de cache.
- cacheRevalidated
- O número de revalidações de cache.
- cacheHit
- O número de acertos de cache.
- cacheScarce
- O número de escassez de cache.
- weight
- Configuração atual de peso do servidor.
- maxFails
- Configuração atual de max_fails do servidor.
- failTimeout
- Configuração atual de fail_timeout do servidor.
- backup
- Configuração atual de backup do servidor. (0|1)
- down
- Configuração atual de down do servidor. (0|1)
Caveats: O name é sensível a maiúsculas e minúsculas. Todos os valores retornados são do tipo inteiro.
Por exemplo:
* requestCounter em serverZones
* vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter
* requestCounter em filterZones
* vhost_traffic_status_set_by_filter $requestCounter filter/country::example.org@KR/requestCounter
* requestCounter em upstreamZones
* vhost_traffic_status_set_by_filter $requestCounter upstream@group/[email protected]:80/requestCounter
* requestCounter em upstreamZones::nogroups
* vhost_traffic_status_set_by_filter $requestCounter upstream@alone/10.10.10.11:80/requestCounter
* cacheHit em cacheZones
* vhost_traffic_status_set_by_filter $cacheHit cache/my_cache_name/cacheHit
vhost_traffic_status_average_method
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_average_method \<AMM|WMA> [period] |
| Padrão | AMM 60s |
| Contexto | http, server, location |
Descrição: Define o método que é uma fórmula que calcula a média dos tempos de processamento de respostas. O period é um tempo efetivo dos valores usados para o cálculo da média. (Padrão: 60s) Se period for definido como 0, o tempo efetivo é ignorado. Nesse caso, o último valor médio é exibido mesmo que não haja solicitações e após a passagem do tempo. Os valores correspondentes são requestMsec e responseMsec no JSON.
- AMM
- O AMM é a média aritmética.
- WMA
- A WMA é a média móvel ponderada.
vhost_traffic_status_histogram_buckets
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_histogram_buckets second ... |
| Padrão | - |
| Contexto | http, server, location |
Descrição: Define os buckets de observação a serem usados nos histogramas. Por padrão, se você não definir esta diretiva, ela não funcionará. O second pode ser expresso em casas decimais com um valor mínimo de 0.001 (1ms). O tamanho máximo dos buckets é 32. Se esse valor for insuficiente para você, altere o NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN em src/ngx_http_vhost_traffic_status_node.h.
Por exemplo:
* vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1 0.5 1 5 10
* Os buckets de observação são [5ms 10ms 50ms 100ms 500ms 1s 5s 10s].
* vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1
* Os buckets de observação são [5ms 10ms 50ms 100ms].
Caveats: Por padrão, se você não definir esta diretiva, as estatísticas do histograma não funcionarão. Os histogramas restaurados pela diretiva vhost_traffic_status_dump não são afetados por alterações nos buckets pela diretiva vhost_traffic_status_histogram_buckets. Portanto, você deve primeiro excluir a zona ou o arquivo de despejo antes de alterar os buckets pela diretiva vhost_traffic_status_histogram_buckets. Similar ao acima, exclua o arquivo de despejo ao usar o histograma pela primeira vez.
vhost_traffic_status_bypass_limit
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_bypass_limit \<on|off> |
| Padrão | off |
| Contexto | http, server, location |
Descrição: Habilita ou desabilita o bypass das diretivas vhost_traffic_status_limit. Os recursos de limite são ignorados se esta opção estiver habilitada. Isso é útil se você quiser conectar a página da web de status como /status, independentemente das diretivas vhost_traffic_status_limit, conforme segue:
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
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_bypass_stats \<on|off> |
| Padrão | off |
| Contexto | http, server, location |
Descrição: Habilita ou desabilita o bypass do vhost_traffic_status. Os recursos de estatísticas de tráfego são ignorados se esta opção estiver habilitada. Em outras palavras, é excluído das estatísticas de tráfego. Isso é útil se você quiser ignorar sua solicitação na página de status como /status, conforme segue:
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
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_stats_by_upstream \<on|off> |
| Padrão | on |
| Contexto | http |
Descrição: Habilita ou desabilita as estatísticas de upstreamZone. A upstreamZone nas estatísticas de tráfego é ignorada se esta opção estiver desabilitada. Em outras palavras, é excluída das estatísticas de tráfego. Isso é útil se você quiser desabilitar a coleta de estatísticas para servidores upstream para reduzir a carga da 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 status HTTP específicos ou todos os códigos de status no módulo de Status de Tráfego Vhost.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_measure_status_codes [all] [status_code1] [status_code2] ... |
| Padrão | off |
| Contexto | http |
Parâmetros
status_code1, status_code2, ...: Códigos de status HTTP específicos a serem rastreados (100-599)all: Rastrear todos os códigos de status HTTP
Exemplos
Rastrear códigos de status específicos:
vhost_traffic_status_measure_status_codes 200 404 500;
Rastrear todos os códigos de status:
vhost_traffic_status_measure_status_codes all;
Descrição
- Por padrão, nenhum rastreamento de código de status específico está habilitado
- Os códigos de status devem estar em ordem crescente
- Apenas códigos de status HTTP válidos entre 100 e 599 são aceitos
- Ao usar
all, todos os códigos de status serão rastreados
Lançamentos
Para criar um lançamento, crie uma entrada de changelog PR com 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-
Após o PR ser mesclado, crie a nova tag e o lançamento no GitHub Releases.
Veja Também
- Status de tráfego de stream
- nginx-module-sts
-
Prometheus
-
Proteção do sistema
- nginx-module-sysguard
GitHub
Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório GitHub do nginx-module-vts.