Aller au contenu

sysguard: module sysguard NGINX

Installation

Vous pouvez installer ce module dans toute distribution basée sur RHEL, y compris, mais sans s'y limiter :

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

Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :

load_module modules/ngx_http_sysguard_module.so;

Ce document décrit nginx-module-sysguard v0.0.1 publié le 29 février 2020.


License

Module sysguard NGINX

Synopsis

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

}

Description

Ce module peut être utilisé pour protéger votre serveur en cas de charge système, d'utilisation de mémoire trop élevée ou de réponses aux requêtes trop lentes. C'est une version portage de sysguard dans tengine vers le NGINX pur afin de supporter les mêmes fonctionnalités.

Avertissements : Notez que ce module nécessite l'appel système sysinfo(2), ou la fonction getloadavg(3) dans glibc. Il nécessite également le système de fichiers /proc pour obtenir des informations sur la mémoire.

Variables intégrées

Les variables intégrées suivantes sont fournies :

  • $sysguard_load
  • La charge du système. Si la valeur de $sysguard_load est 100, alors la charge est 0.1(100/1000). (/msec)
  • $sysguard_swapstat
  • Le ratio d'utilisation du swap. (/per)
  • $sysguard_free
  • L'espace libre réel de la mémoire. (/byte)
  • $sysguard_rt
  • La moyenne des temps de traitement des requêtes. Si la valeur de $sysguard_rt est 100, alors le temps de réponse est de 0.1sec(100/1000). (/msec)
  • $sysguard_meminfo_totalram
  • La mémoire totale de meminfo. (/byte)
  • $sysguard_meminfo_freeram
  • La mémoire libre de meminfo. (/byte)
  • $sysguard_meminfo_bufferram
  • La mémoire tampon de meminfo. (/byte)
  • $sysguard_meminfo_cachedram
  • La mémoire mise en cache de meminfo. (/byte)
  • $sysguard_meminfo_totalswap
  • Le swap total de meminfo. (/byte)
  • $sysguard_meminfo_freeswap
  • Le swap libre de meminfo. (/byte)

Directives

sysguard

- -
Syntaxe sysguard \<on|off>
Par défaut off
Contexte http, server, location

Description : Active ou désactive le fonctionnement du module.

sysguard_load

- -
Syntaxe sysguard_load load=number [action=/url]
Par défaut -
Contexte http, server, location

Description : Spécifie le seuil de charge. Lorsque la charge système dépasse ce seuil, toutes les requêtes suivantes seront redirigées vers l'URL spécifiée par le paramètre 'action'. Il renverra 503 s'il n'y a pas d'URL 'action' définie. Cette directive prend également en charge l'utilisation de ncpuratio à la place du seuil fixe, 'ncpu' signifie le nombre de cœurs de CPU, vous pouvez utiliser cette directive comme ceci : load=ncpu1.5

sysguard_mem

- -
Syntaxe sysguard_mem swapratio=ratio% free=size [action=/url]
Par défaut -
Contexte http, server, location

Description : Spécifie le seuil d'utilisation de la mémoire swap ou de la mémoire libre. Lorsque le ratio d'utilisation de la mémoire swap dépasse ce seuil ou que la mémoire libre est inférieure à la taille, toutes les requêtes suivantes seront redirigées vers l'URL spécifiée par le paramètre 'action'. Il renverra 503 s'il n'y a pas d'URL 'action'. Sysguard utilise cette stratégie pour calculer la mémoire libre : "memfree = free + buffered + cached"

sysguard_rt

- -
Syntaxe sysguard_rt rt=second period=time [method=\<AMM|WMA>:number] [action=/url]
Par défaut -
Contexte http, server, location

Description : Spécifie le seuil de temps de réponse. Le paramètre rt est utilisé pour définir un seuil de temps de réponse moyen, en secondes. Le paramètre period est utilisé pour spécifier la période du cycle de statistiques. Si le temps de réponse moyen du système dépasse le seuil spécifié par l'utilisateur, la requête entrante sera redirigée vers une URL spécifiée définie par le paramètre 'action'. Si aucun 'action' n'est présenté, la requête sera directement répondue avec une erreur 503. Le method est une formule qui calcule la moyenne des temps de traitement des réponses. Le number dans la méthode est le nombre d'échantillons pour calculer la moyenne. La méthode par défaut est définie sur method=AMM:period.

sysguard_mode

- -
Syntaxe sysguard_mode \<and|or>
Par défaut or
Contexte http, server, location

Description : S'il y a plus d'un type de moniteur, cette directive est utilisée pour spécifier les relations entre tous les moniteurs qui sont : 'and' pour tous les correspondances et 'or' pour toute correspondance.

sysguard_interval

- -
Syntaxe sysguard_interval time
Par défaut 1s
Contexte http, server, location

Description : Spécifie l'intervalle de temps pour mettre à jour vos informations système. La valeur par défaut est une seconde, ce qui signifie que sysguard met à jour l'état du serveur une fois par seconde.

sysguard_log_level

- -
Syntaxe sysguard_log_level \<info|notice|warn|error>
Par défaut error
Contexte http, server, location

Description : Spécifie le niveau de journalisation de sysguard.

Voir aussi

GitHub

Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-sysguard.