Módulo sysguard Nginx
Este documento descreve o nginx-module-sysguard v0.1.0
lançado em 23 de fevereiro de 2017.
Versões anteriores não são testadas.
shell> git clone git://github.com/vozlt/nginx-module-sysguard.git
--add-module=/path/to/nginx-module-sysguard
Construa o binário nginx.
Instale o binário nginx.
http {
...
server {
...
sysguard on;
sysguard_mode or;
sysguard_load load=10.5 action=/loadlimit;
sysguard_mem swapratio=20% action=/swaplimit;
sysguard_mem free=100M action=/freelimit;
sysguard_rt rt=0.01 period=5s method=AMM:10 action=/rtlimit;
location /loadlimit {
return 503 ;
}
location /swaplimit {
return 503 ;
}
location /freelimit {
return 503 ;
}
location /rtlimit {
return 503 ;
}
}
...
server {
...
location /api {
sysguard on;
sysguard_mode or;
sysguard_load load=20 action=/limit;
sysguard_mem swapratio=10% action=/limit;
sysguard_rt rt=2.01 period=5s method=WMA:10 action=/limit;
...
}
location /images {
sysguard on;
sysguard_mode and;
sysguard_load load=20 action=/limit;
sysguard_mem swapratio=10% action=/limit;
sysguard_rt rt=2.01 period=5s method=WMA:10 action=/limit;
...
}
location /limit {
return 503 ;
}
}
}
Este módulo pode ser usado para proteger seu servidor caso a carga do sistema, o uso de memória seja muito alto ou as solicitações sejam respondidas muito lentamente. Esta é uma versão portante do sysguard no tengine para o NGINX puro, de modo a suportar os mesmos recursos.
Caveats:
Observe que este módulo requer a chamada de sistema sysinfo(2) ou a função getloadavg(3) na glibc. Também requer o sistema de arquivos /proc para obter informações de memória.
As seguintes variáveis incorporadas são fornecidas:
$sysguard_load
for 100, então load será 0,1(100/1000). (/mseg)$sysguard_rt
for 100, o tempo de resposta será 0,1seg(100/1000). (/mseg)- | - |
---|---|
Sintaxe | sysguard |
Padrão | desligado |
Contexto | http, servidor, localização |
Description:
Habilita ou desabilita o funcionamento do módulo.
- | - |
---|---|
Sintaxe | sysguard_load carga= número [ação= /url ] |
Padrão | - |
Contexto | http, servidor, localização |
Description:
Especifique o limite de carregamento. Quando a carga do sistema exceder esse limite, todas as solicitações subsequentes serão redirecionadas para a URL especificada pelo parâmetro 'action'. Ele retornará 503 se não houver URL de 'ação' definida. Esta diretiva também suporta o uso de ncpuratio em vez do limite fixo, 'ncpu' significa o número de núcleos da CPU, você pode usar esta diretiva assim: load=ncpu1.5
- | - |
---|---|
Sintaxe | sysguard_mem swapratio= proporção % free= tamanho [action= /url ] |
Padrão | - |
Contexto | http, servidor, localização |
Description:
Especifique a memória swap usada ou o limite de memória livre. Quando a taxa de uso de memória swap exceder esse limite ou a memória livre for menor que o tamanho, todas as solicitações subsequentes serão redirecionadas para a URL especificada pelo parâmetro 'action'. Ele retornará 503 se não houver URL de ‘ação’. Sysguard usa esta estratégia para calcular a memória livre: "memfree = free + buffered + cached"
- | - |
---|---|
Sintaxe | sysguard_rt rt= segundo período= tempo [método= |
Padrão | - |
Contexto | http, servidor, localização |
Description:
Especifique o limite de tempo de resposta. O parâmetro rt é usado para definir um limite do tempo médio de resposta, em segundos. O parâmetro período é usado para especificar o período do ciclo estatístico. Se o tempo médio de resposta do sistema exceder o limite especificado pelo usuário, a solicitação recebida será redirecionada para um URL especificado que é definido pelo parâmetro 'ação'. Se nenhuma 'ação' for apresentada, a solicitação será respondida diretamente com o erro 503. O method
é uma fórmula que calcula a média dos tempos de processamento de respostas. O number
no método é o número de amostras para calcular a média. O método padrão é definido como method=AMM:period
.
- | - |
---|---|
Sintaxe | sysguard_mode |
Padrão | ou |
Contexto | http, servidor, localização |
Description:
Caso exista mais de um tipo de monitor, esta diretiva é utilizada para especificar as relações entre todos os monitores que são: 'e' para todas as correspondências e 'ou' para qualquer correspondência.
- | - |
---|---|
Sintaxe | tempo sysguard_interval |
Padrão | 1s |
Contexto | http, servidor, localização |
Description:
Especifique o intervalo de tempo para atualizar as informações do sistema. O valor padrão é um segundo, o que significa que o sysguard atualiza o status do servidor uma vez por segundo.
- | - |
---|---|
Sintaxe | sysguard_log_level |
Padrão | erro |
Contexto | http, servidor, localização |
Description:
Especifique o nível de log do sysguard.