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.
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_loadest 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_rtest 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.
- AMM
- L'AMM est la moyenne arithmétique.
- WMA
- La WMA est la moyenne mobile pondérée.
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.