Module de garde système Nginx
Ce document décrit nginx-module-sysguard v0.1.0
publié le 23 février 2017.
Les versions antérieures ne sont pas testées.
shell> git clone git://github.com/vozlt/nginx-module-sysguard.git
--add-module=/path/to/nginx-module-sysguard
Construisez le binaire nginx.
Installez le binaire 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 ;
}
}
}
Ce module peut être utilisé pour protéger votre serveur en cas de charge du système, d'utilisation de la mémoire trop élevée ou de réponse trop lente aux requêtes. Il s'agit d'une version de portage de sysguard dans tengine vers NGINX pur afin de prendre en charge les mêmes fonctionnalités.
Caveats:
Notez que ce module nécessite l'appel système sysinfo(2) ou la fonction getloadavg(3) dans la glibc. Il nécessite également le système de fichiers /proc pour obtenir des informations sur la mémoire.
Les variables intégrées suivantes sont fournies :
$sysguard_load
est 100, alors la charge est de 0,1 (100/1000). (/msec)$sysguard_rt
est 100, alors le temps de réponse est de 0,1 seconde (100/1000). (/msec)- | - |
---|---|
Syntaxe | sysguard |
Défaut | désactivé |
Contexte | http, serveur, emplacement |
Description:
Active ou désactive le fonctionnement du module.
- | - |
---|---|
Syntaxe | sysguard_load load= nombre [action= /url ] |
Défaut | - |
Contexte | http, serveur, emplacement |
Description:
Spécifiez le seuil de charge. Lorsque la charge du système dépasse ce seuil, toutes les requêtes ultérieures seront redirigées vers l'URL spécifiée par le paramètre 'action'. Il renverra 503 si aucune URL « d'action » n'est définie. Cette directive prend également en charge l'utilisation de ncpuratio au lieu du seuil fixe, « ncpu » signifie le nombre de cœurs du processeur, vous pouvez utiliser cette directive comme ceci : load=ncpu1.5
- | - |
---|---|
Syntaxe | sysguard_mem swapratio= ratio % free= taille [action= /url ] |
Défaut | - |
Contexte | http, serveur, emplacement |
Description:
Spécifiez la mémoire d'échange utilisée ou le seuil de mémoire libre. Lorsque le taux d'utilisation de la mémoire d'échange dépasse ce seuil ou que la mémoire libre est inférieure à la taille, toutes les requêtes ultérieures 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 « d'action ». Sysguard utilise cette stratégie pour calculer la mémoire libre : "memfree = free + buffered + cached"
- | - |
---|---|
Syntaxe | sysguard_rt rt= seconde période= heure [method= |
Défaut | - |
Contexte | http, serveur, emplacement |
Description:
Spécifiez le seuil du temps de réponse. Le paramètre rt permet de fixer un seuil du temps de réponse moyen, en seconde. Le paramètre période est utilisé pour spécifier la période du cycle statistique. Si le temps de réponse moyen du système dépasse le seuil spécifié par l'utilisateur, la demande entrante sera redirigée vers une URL spécifiée qui est définie par le paramètre « action ». Si aucune « action » n’est présentée, la demande recevra une réponse directe avec une erreur 503. La 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
.
- | - |
---|---|
Syntaxe | sysguard_mode |
Défaut | ou |
Contexte | http, serveur, emplacement |
Description:
S'il existe plusieurs types de moniteurs, cette directive est utilisée pour spécifier les relations entre tous les moniteurs qui sont : "et" pour toute correspondance et "ou" pour toute correspondance.
- | - |
---|---|
Syntaxe | temps sysguard_interval |
Défaut | 1s |
Contexte | http, serveur, emplacement |
Description:
Spécifiez l'intervalle de temps pour mettre à jour les informations de votre système. La valeur par défaut est d'une seconde, ce qui signifie que sysguard met à jour l'état du serveur une fois par seconde.
- | - |
---|---|
Syntaxe | sysguard_log_level |
Défaut | erreur |
Contexte | http, serveur, emplacement |
Description:
Spécifiez le niveau de journalisation de Sysguard.