Módulo de status de tráfego do host virtual nginx
Veja os lançamentos do GitHub para obter a versão mais recente da tag.
Run sudo prove -rt depois de instalar este módulo. O sudo é necessário porque o teste exige que o NGINX ouça na porta 80.
Versões anteriores não são testadas.
shell> git clone git://github.com/vozlt/nginx-module-vts.git
Adicione o módulo à configuração de construção adicionando --add-module=/path/to/nginx-module-vts
Construa o binário nginx.
Instale o binário nginx.
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}Este é um módulo Nginx que fornece acesso às informações de status do host virtual. Ele contém o status atual, como servidores, upstreams, caches. Isso é semelhante ao monitoramento de atividades ao vivo do NGINX Plus. O HTML integrado também é retirado da página de demonstração da versão antiga.
Primeiro de tudo, é necessária a diretiva vhost_traffic_status_zone e, se a diretiva vhost_traffic_status_display estiver definida, poderá ser o acesso à seguinte:
/status/format/json , responderá com um documento JSON que contém os dados de atividade atuais para o uso em painéis ao vivo e ferramentas de monitoramento de terceiros./status/format/html , responderá com o painel ao vivo interno no HTML que solicita internamente para /status/format/json ./status/format/jsonp , responderá com uma função de retorno de chamada JSONP contendo os dados de atividade atuais para o uso em painéis ao vivo e ferramentas de monitoramento de terceiros./status/format/prometheus , responderá com um documento Prometheus contendo os dados atuais da atividade./status/control , responderá com um documento JSON após a redefinição ou excluir zonas através de uma sequência de consultas. 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" : ...
}
},
...
}
}* ) e a proporção de acertovhost_traffic_status_filter_by_set_key* ) e a taxa de acerto filtrada através da Diretiva vhost_traffic_status_filter_by_set_key Os objetos overCounts no documento JSON são principalmente para o sistema de 32 bits e serão incrementos em 1 se seu valor estiver transbordado. A diretiva vhost_traffic_status_display_format define o formato padrão do OPUT que é um dos JSON, JSONP, HTML, Prometheus. (Padrão: JSON)
Cálculo de tráfego da seguinte forma:
Todos os cálculos estão trabalhando na fase de processamento de log do Nginx. Os redirecionamentos internos (X-Acel-Redirect ou ERROR_PAGE) não calcula nas zonas upstream.
Caveats: este módulo depende do sistema de log nginx (NGX_HTTP_LOG_PHASE: Última fase do nginx http), para que o tráfego possa estar em certas circundas diferentes que o tráfego de largura de banda real. WebSocket, downloads cancelados podem ser causa de imprecisões. O funcionamento do módulo não importa se a Diretiva Access_log "ON" ou "OFF". Novamente, este módulo funciona bem em "access_log off". Ao usar vários domínios, ele é o primeiro domínio (à esquerda) da Diretiva Server_name. Se você não quiser, consulte o VHOST_TRAFFIC_STATUS_FILTER_BY_HOST, VHOST_TRAFFIC_STATUS_FILTER_BY_SET_KEY Diretiva.
Veja os seguintes módulos para as estatísticas de tráfego stream :
Todas as médias são atualmente calculadas como AMM (média aritmética) nos últimos 64 valores.
É capaz de redefinir ou excluir zonas de tráfego através de uma sequência de consulta. A solicitação responde com um 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;
}
}
} Se definido como acima, o URI de controle é como example.org/status/control .
Os argumentos de solicitação disponíveis são os seguintes:
status | reset | delete >status/format/json .server | filter | upstream@alone | upstream@group | cache | * > Isso é semelhante ao status/format/json exceto que ele pode obter cada zonas.
status/format/json . Os valores das principais zonas são os valores de status padrão, incluindo hostName , moduleVersion , nginxVersion , loadMsec , nowMsec , connections .
namefilter_group @ nameupstream_group @ namenamenameRedefina os valores das zonas especificadas para 0.
namefilter_group @ nameupstream_group @ namenamenameEle exclua as zonas especificadas na memória compartilhada.
namefilter_group @ nameupstream_group @ namenamename Ele pode obter os valores de status na configuração Nginx separadamente usando vhost_traffic_status_set_by_filter Diretiva. Ele pode adquirir quase todos os valores de status e o valor obtido é armazenado na variável definida pelo usuário, que é o primeiro 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;
}
}
}As configurações acima são as seguintes:
Consulte a Diretiva VHOST_TRAFFIC_STATUS_SET_BY_FILTER para uso detalhado.
As seguintes informações de status são fornecidas no formato JSON:
/ {status_uri} /format /json
/ {status_uri} / control? cmd = status & ...
{version}(|.dev.{commit}) formato.vhost_traffic_status )vhost_traffic_status_histogram_buckets .serverZones , exceto que incluiu nomes de grupo.vhost_traffic_status_histogram_buckets .vhost_traffic_status_histogram_buckets .weight atual do servidor.max_fails do servidor.fail_timeout do servidor.backup atual do servidor.down do servidor. Basicamente, isso é apenas uma marca do servidor NGX_HTTP_UPSTREAM_MODULE (por exemplo, server backend3.example.com down ), não um estado de servidor upstream real. Ele mudará para o estado real se você ativou a diretiva da zona a montante.max_size na diretiva proxy_cache_path não for especificado, o valor dependente do sistema NGX_MAX_OFF_T_VALUE será atribuído por padrão. Em outras palavras, esse valor é do nginx, não o que eu especifiquei.maxSize acima. / {status_uri} / control? cmd = redefinir & ...
/ {status_uri} / control? cmd = delete & ...
As seguintes variáveis incorporadas são fornecidas:
Ele é capaz de limitar o tráfego total por cada host usando a diretiva vhost_traffic_status_limit_traffic . Ele também é capaz de limitar todo o tráfego usando o Diretiva vhost_traffic_status_limit_traffic_by_set_key . Quando o limite for 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 mutável.
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 e 1024g, respectivamente. Funciona individualmente de acordo com cada domínio se vhost_traffic_status_filter_by_host Diretiva estiver ativado. 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 e 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 e 1024g por cada par. Caveats: o tráfego é a transferência ou contador cumulativo, não uma largura de banda.
É capaz de calcular as estatísticas individuais definidas pelo usuário usando a diretiva 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;
}
}
} Basicamente, a imagem de bandeiras do país está embutida em HTML. A imagem dos sinalizadores do país está ativada se a sequência country estiver incluída no nome do grupo, que é o segundo argumento da Diretiva vhost_traffic_status_filter_by_set_key .
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 detalhado Caveats: $ A variável de status está disponível em nginx- (1.3.2, 1.2.2).
Se o domínio tiver vários registros DNS A, você poderá calcular o tráfego para IPS individuais para o domínio usando o recurso de filtro ou uma variável no 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 . Se elb.example.org tiver vários registros DNS A, será exibido todos os IPs em filterZones . Nas configurações acima, quando o Nginx inicia ou recarrega a configuração, ele consulta um servidor DNS para resolver o domínio e os registros DNS A é armazenado 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 ridicularizados pelo administrador do DNS, a menos que o Nginx seja reiniciado ou recarregue. 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 . Se o registro do elb.example.org for alterado, será exibido o IP antigo e o novo IP em ::nogroups . Diferentemente da primeira configuração do grupo upstream, a segunda configuração funciona bem, mesmo que o DNS A registra os registros seja chaged pelo administrador do DNS. Caveats: Por favor, mais detalhes sobre o NGINX DNS Consulte o DNS-Service-Discovery-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 é excluído do recurso de cálculo de tráfego de status e limite. Veja as seguintes diretivas: http {
vhost_traffic_status_zone;
vhost_traffic_status_dump /var/log/nginx/vts.db;
...
server {
...
}
}vhost_traffic_status_dump mantém os dados de estatísticas permanentemente, mesmo que o sistema tenha sido reiniciado ou o Nginx tenha sido reiniciado. Consulte a Diretiva VHOST_TRAFFIC_STATUS_DUMP para uso detalhado. {{uri}} para o seu status URI no status.template.html da seguinte forma: 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 (não altere {{uri}} string)
Recrie o ngx_http_vhost_traffic_status_module_html.h da 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
Construa o binário nginx.
Instale o binário nginx.

| - | - |
|---|---|
| Sintaxe | vhost_traffic_status <on | off> |
| Padrão | desligado |
| Contexto | http, servidor, localização |
Description: Ativa ou desativa o módulo funcionando. Se você definir vhost_traffic_status_zone Diretiva, estiver ativado automaticamente.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_zone [compartilhado: nome: tamanho ] |
| Padrão | Compartilhado: VHOST_TRAFFIC_STATUS: 1M |
| Contexto | http |
Description: Define parâmetros para uma zona de memória compartilhada que manterá os estados para várias chaves. O cache é compartilhado entre todos os processos do trabalhador. Na maioria dos casos, o tamanho da memória compartilhada usado pelo Nginx-Module-VTS não aumenta muito. O tamanho da memória compartilhado é aumentado bastante ao usar vhost_traffic_status_filter_by_set_key Diretiva, mas se as teclas do filtro forem corrigidas ( por exemplo, o número total do código do país é de cerca de 240 ), não aumenta continuamente.
Se você usar vhost_traffic_status_filter_by_set_key Diretiva, defina a seguinte:
vhost_traffic_status_zone shared:vhost_traffic_status:32m )"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone" ) impressa em error_log, aumente para mais do que (usado * 2).| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_dump Path [ período ] |
| Padrão | - |
| Contexto | http |
Description: Ativa o dump e restauração dos dados de estatísticas. O caminho é um local para despejar os dados de estatísticas. (Por exemplo, /var/log/nginx/vts.db ) O período é um tempo de ciclo de backup. (Padrão: 60s) é backup imediatamente, independentemente do ciclo de backup se o nginx for excitado pelo sinal ( SIGKILL ).
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_display |
| Padrão | - |
| Contexto | http, servidor, localização |
Description: Ativa ou desativa o manipulador de exibição do módulo.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_display_format <json | html | jsonp | prometheus> |
| Padrão | JSON |
| Contexto | http, servidor, localização |
Description: 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 no HTML. Se você definir jsonp , responderá com uma função de retorno de chamada JSONP (padrão: ngx_http_vhost_traffic_status_jsonp_callback ). Se você definir prometheus , responderá com um documento Prometheus.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_display_jsonp retorno de chamada |
| Padrão | ngx_http_vhost_traffic_status_jsonp_callback |
| Contexto | http, servidor, localização |
Description: Define o nome do retorno de chamada para o JSONP.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_display_sum_key Nome |
| Padrão | * |
| Contexto | http, servidor, localização |
Description: Define a string da tecla SUM no JSON do ServerZones Field. A cadeia de tecla de soma padrão é a "*".
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_filter <on | off> |
| Padrão | sobre |
| Contexto | http, servidor, localização |
Description: Ativa ou desativa os recursos do filtro.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_filter_by_host <on | off> |
| Padrão | desligado |
| Contexto | http, servidor, localização |
Description: Ativa ou desativa as chaves pelo campo de cabeçalho do host. Se você on e a Diretiva Server_name do Nginx definir vários ou nome de curinga começando com um asterisco, por exemplo, “ *.example.org” e solicitado ao servidor com nome de host, como (a | B | C) .example.org ou *.example.org, o JSON ServerZones será impresso a seguir:
server {
server_name *.example.org;
vhost_traffic_status_filter_by_host on;
...
} ...
"serverZones" : {
"a.example.org" : {
...
},
"b.example.org" : {
...
},
"c.example.org" : {
...
}
...
},
... Ele fornece a mesma função que define vhost_traffic_status_filter_by_set_key $host .
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_filter_by_set_key key [ nome ] |
| Padrão | - |
| Contexto | http, servidor, localização |
Description: Ativa as chaves pela variável definida pelo usuário. A chave é uma sequência de teclas para calcular o tráfego. O nome é uma string de grupo para calcular o tráfego. A chave e o nome podem conter variáveis como $ host, $ server_name. O grupo do nome pertence às filterZones , se especificado. O grupo da chave pertence às serverZones , se não for especificado, o segundo nome do argumento. O exemplo do 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" : {
...
},
...
},
...
},
...
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_filter_check_duplicate <on | off> |
| Padrão | sobre |
| Contexto | http, servidor, localização |
Description: Ativa ou desativa a desduplicação de vhost_traffic_status_filter_by_set_key. Ele é processado apenas um dos valores duplicados ( key + name ) em cada diretiva (http, servidor, localização) se essa opção estiver ativada.
| - | - |
|---|---|
| Sintaxe | VHOST_TRAFFIC_STATUS_FILTER_MAX_NODE Número [ String ...] |
| Padrão | 0 |
| Contexto | http |
Description: Ativa o limite do tamanho do filtro usando o número especificado e os valores da string . Se o número for excedido, os nós existentes serão excluídos pelo algoritmo LRU. O argumento numérico é o tamanho do nó que será limitado. O valor padrão 0 não limita os filtros. O único nó é um objeto em filterZones no documento JSON. Os argumentos da string são os valores de string correspondentes para o valor da string do grupo definido pela vhost_traffic_status_filter_by_set_key Diretiva. 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 de string , ele solicitou todos os filtros.
Para exemplos:
$ 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

No exemplo acima, o /^uris.*/ e /^client::ports.*/ Padrões de string de grupo são limitados a um total de 16 nós. Os outros filtros como country::.* Não são limitados.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_limit <on | off> |
| Padrão | sobre |
| Contexto | http, servidor, localização |
Description: Ativa ou desativa os recursos limitados.
| - | - |
|---|---|
| Sintaxe | VHOST_TRAFFIC_STATUS_LIMIT_TRAFFIC MEMBRO : TAMANHO [ Código ] |
| Padrão | - |
| Contexto | http, servidor, localização |
Description: Ativa o limite de tráfego para o membro especificado. O membro é uma sequência de membros para limitar o tráfego. O tamanho é de tamanho (k/m/g) para limitar o tráfego. O código é um código para retornar em resposta a solicitações rejeitadas. (Padrão: 503)
As strings member disponíveis são as seguintes:
| - | - |
|---|---|
| Sintaxe | VHOST_TRAFFIC_STATUS_LIMIT_TRAFFIC_BY_SET_KEY MEMBROM : Tamanho [ Código ] |
| Padrão | - |
| Contexto | http, servidor, localização |
Description: Ativa o limite de tráfego para a chave e membro especificados. A chave é uma string de chave para limitar o tráfego. O membro é uma sequência de membros para limitar o tráfego. O tamanho é de tamanho (k/m/g) para limitar o tráfego. O código é um código para retornar em resposta a solicitações rejeitadas. (Padrão: 503)
A sintaxe key é a seguinte:
group @[ subgroup @] name As strings group disponíveis são as seguintes:
subgroup )subgroup ) As strings member disponíveis são as seguintes:
O membro é o mesmo que vhost_traffic_status_limit_traffic DIRETIVA.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_limit_check_duplicate <on | off> |
| Padrão | sobre |
| Contexto | http, servidor, localização |
Description: Ativa ou desativa a desduplicação de vhost_traffic_status_limit_by_set_key. Ele é processado apenas um dos valores duplicados ( member | key + member ) em cada diretiva (http, servidor, localização) se essa opção estiver ativada.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_set_by_filter $ Grupo / zona / nome |
| Padrão | - |
| Contexto | http, servidor, localização, se |
Description: Obtenha o valor do status especificado armazenado na memória compartilhada. Ele pode adquirir quase todos os valores de status e o valor obtido é armazenado em $ variável , que é o primeiro argumento.
Caveats: o nome é sensível ao maiúsculas. Todos os valores de retorno pegam o tipo inteiro.
Para exemplos:
$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| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_average_method <AMM|WMA> [ period ] |
| Padrão | 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.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_histogram_buckets second ... |
| Padrão | - |
| 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.
| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_bypass_limit <on|off> |
| Padrão | desligado |
| 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;
}
}
}| - | - |
|---|---|
| Sintaxe | vhost_traffic_status_bypass_stats <on|off> |
| Padrão | desligado |
| 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
Prometeu
System protection
YoungJoo.Kim(김영주) [[email protected]]