Saltar a contenido

sysguard: Módulo sysguard de NGINX

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y 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

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_http_sysguard_module.so;

Este documento describe nginx-module-sysguard v0.0.1 lanzado el 29 de febrero de 2020.


License

Módulo sysguard de NGINX

Sinopsis

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

}

Descripción

Este módulo se puede utilizar para proteger tu servidor en caso de que la carga del sistema, el uso de memoria sea demasiado alto o las solicitudes se respondan demasiado lento. Esta es una versión porting de sysguard en tengine a NGINX puro para soportar las mismas características.

Advertencias: Ten en cuenta que este módulo requiere la llamada al sistema sysinfo(2) o la función getloadavg(3) en glibc. También requiere el sistema de archivos /proc para obtener información sobre la memoria.

Variables Embebidas

Se proporcionan las siguientes variables embebidas:

  • $sysguard_load
  • La carga del sistema. Si el valor de $sysguard_load es 100, entonces la carga es 0.1 (100/1000). (/msec)
  • $sysguard_swapstat
  • La proporción de uso de swap. (/per)
  • $sysguard_free
  • El espacio libre real de la memoria. (/byte)
  • $sysguard_rt
  • El promedio de los tiempos de procesamiento de solicitudes. Si el valor de $sysguard_rt es 100, entonces el tiempo de respuesta es 0.1sec (100/1000). (/msec)
  • $sysguard_meminfo_totalram
  • La memoria total de meminfo. (/byte)
  • $sysguard_meminfo_freeram
  • La memoria libre de meminfo. (/byte)
  • $sysguard_meminfo_bufferram
  • La memoria de búfer de meminfo. (/byte)
  • $sysguard_meminfo_cachedram
  • La memoria caché de meminfo. (/byte)
  • $sysguard_meminfo_totalswap
  • El swap total de meminfo. (/byte)
  • $sysguard_meminfo_freeswap
  • El swap libre de meminfo. (/byte)

Directivas

sysguard

- -
Sintaxis sysguard \<on|off>
Predeterminado off
Contexto http, server, location

Descripción: Habilita o deshabilita el funcionamiento del módulo.

sysguard_load

- -
Sintaxis sysguard_load load=number [action=/url]
Predeterminado -
Contexto http, server, location

Descripción: Especifica el umbral de carga. Cuando la carga del sistema excede este umbral, todas las solicitudes subsiguientes serán redirigidas a la URL especificada por el parámetro 'action'. Retornará 503 si no hay una URL 'action' definida. Esta directiva también admite el uso de ncpuratio en lugar del umbral fijo, 'ncpu' significa el número de núcleos de CPU, puedes usar esta directiva así: load=ncpu1.5

sysguard_mem

- -
Sintaxis sysguard_mem swapratio=ratio% free=size [action=/url]
Predeterminado -
Contexto http, server, location

Descripción: Especifica el umbral de memoria swap utilizada o memoria libre. Cuando la proporción de uso de memoria swap excede este umbral o la memoria libre es menor que el tamaño, todas las solicitudes subsiguientes serán redirigidas a la URL especificada por el parámetro 'action'. Retornará 503 si no hay una URL 'action'. Sysguard utiliza esta estrategia para calcular la memoria libre: "memfree = free + buffered + cached"

sysguard_rt

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

Descripción: Especifica el umbral de tiempo de respuesta. El parámetro rt se utiliza para establecer un umbral del tiempo promedio de respuesta, en segundos. El parámetro period se utiliza para especificar el período del ciclo de estadísticas. Si el tiempo promedio de respuesta del sistema excede el umbral especificado por el usuario, la solicitud entrante será redirigida a una URL especificada que se define por el parámetro 'action'. Si no se presenta 'action', la solicitud será respondida directamente con un error 503. El method es una fórmula que calcula el promedio de los tiempos de procesamiento de respuesta. El number en el método es el número de muestras para calcular el promedio. El método predeterminado se establece en method=AMM:period.

sysguard_mode

- -
Sintaxis sysguard_mode \<and|or>
Predeterminado or
Contexto http, server, location

Descripción: Si hay más de un tipo de monitor, esta directiva se utiliza para especificar las relaciones entre todos los monitores que son: 'and' para que todos coincidan y 'or' para que cualquiera coincida.

sysguard_interval

- -
Sintaxis sysguard_interval time
Predeterminado 1s
Contexto http, server, location

Descripción: Especifica el intervalo de tiempo para actualizar la información de tu sistema. El valor predeterminado es un segundo, lo que significa que sysguard actualiza el estado del servidor una vez por segundo.

sysguard_log_level

- -
Sintaxis sysguard_log_level \<info|notice|warn|error>
Predeterminado error
Contexto http, server, location

Descripción: Especifica el nivel de registro de sysguard.

Ver También

GitHub

Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-sysguard.