Pular para conteúdo

sysguard: Módulo sysguard 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-sysguard
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-sysguard

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_http_sysguard_module.so;

Este documento descreve o nginx-module-sysguard v0.0.1 lançado em 29 de fevereiro de 2020.


License

Módulo sysguard do NGINX

Sinopse

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;
        }
    }

}

Descrição

Este módulo pode ser usado para proteger seu servidor caso a carga do sistema, o uso de memória fique muito alto ou as requisições sejam respondidas muito lentamente. Esta é uma versão portável do sysguard no tengine para o NGINX puro, de modo a suportar as mesmas funcionalidades.

Atenção: Note que este módulo requer a chamada de sistema sysinfo(2) ou a função getloadavg(3) na glibc. Ele também requer o sistema de arquivos /proc para obter informações sobre a memória.

Variáveis Embutidas

As seguintes variáveis embutidas são fornecidas:

  • $sysguard_load
  • A carga do sistema. Se o valor de $sysguard_load for 100, então a carga é 0.1(100/1000). (/msec)
  • $sysguard_swapstat
  • A razão do uso de swap. (/per)
  • $sysguard_free
  • O espaço livre real da memória. (/byte)
  • $sysguard_rt
  • A média dos tempos de processamento de requisições. Se o valor de $sysguard_rt for 100, então o tempo de resposta é 0.1sec(100/1000). (/msec)
  • $sysguard_meminfo_totalram
  • A memória total do meminfo. (/byte)
  • $sysguard_meminfo_freeram
  • A memória livre do meminfo. (/byte)
  • $sysguard_meminfo_bufferram
  • A memória buffer do meminfo. (/byte)
  • $sysguard_meminfo_cachedram
  • A memória cache do meminfo. (/byte)
  • $sysguard_meminfo_totalswap
  • O total de swap do meminfo. (/byte)
  • $sysguard_meminfo_freeswap
  • O swap livre do meminfo. (/byte)

Diretivas

sysguard

- -
Sintaxe sysguard \<on|off>
Padrão off
Contexto http, server, location

Descrição: Habilita ou desabilita o funcionamento do módulo.

sysguard_load

- -
Sintaxe sysguard_load load=number [action=/url]
Padrão -
Contexto http, server, location

Descrição: Especifica o limite de carga. Quando a carga do sistema excede esse limite, todas as requisições subsequentes serão redirecionadas para a URL especificada pelo parâmetro 'action'. Retornará 503 se não houver uma URL 'action' definida. Esta diretiva também suporta o uso de ncpuratio em vez do limite fixo, 'ncpu' significa o número de núcleos de CPU, você pode usar esta diretiva assim: load=ncpu1.5

sysguard_mem

- -
Sintaxe sysguard_mem swapratio=ratio% free=size [action=/url]
Padrão -
Contexto http, server, location

Descrição: Especifica o limite de uso de memória swap ou de memória livre. Quando a razão de uso de memória swap excede esse limite ou a memória livre é menor que o tamanho, todas as requisições subsequentes serão redirecionadas para a URL especificada pelo parâmetro 'action'. Retornará 503 se não houver uma URL 'action'. O Sysguard usa esta estratégia para calcular a memória livre: "memfree = free + buffered + cached"

sysguard_rt

- -
Sintaxe sysguard_rt rt=second period=time [method=\<AMM|WMA>:number] [action=/url]
Padrão -
Contexto http, server, location

Descrição: Especifica 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 period é usado para especificar o período do ciclo de estatísticas. Se o tempo médio de resposta do sistema exceder o limite especificado pelo usuário, a requisição recebida será redirecionada para uma URL especificada definida pelo parâmetro 'action'. Se não houver 'action' apresentada, a requisição será respondida diretamente com erro 503. O method é uma fórmula que calcula a média dos tempos de processamento de resposta. 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.

sysguard_mode

- -
Sintaxe sysguard_mode \<and|or>
Padrão or
Contexto http, server, location

Descrição: Se houver mais de um tipo de monitor, esta diretiva é usada para especificar as relações entre todos os monitores, que são: 'and' para todos os correspondentes e 'or' para qualquer correspondente.

sysguard_interval

- -
Sintaxe sysguard_interval time
Padrão 1s
Contexto http, server, location

Descrição: Especifica o intervalo de tempo para atualizar as informações do seu sistema. O valor padrão é um segundo, o que significa que o sysguard atualiza o status do servidor uma vez por segundo.

sysguard_log_level

- -
Sintaxe sysguard_log_level \<info|notice|warn|error>
Padrão error
Contexto http, server, location

Descrição: Especifica o nível de log do sysguard.

Veja Também

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-sysguard.