sysguard: NGINX sysguard-Modul
Installation
Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:
- RedHat Enterprise Linux 7, 8, 9 und 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 und 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
Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:
load_module modules/ngx_http_sysguard_module.so;
Dieses Dokument beschreibt nginx-module-sysguard v0.0.1 veröffentlicht am 29. Februar 2020.
Nginx sysguard-Modul
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;
}
}
}
Beschreibung
Dieses Modul kann verwendet werden, um Ihren Server zu schützen, falls die Systemlast, der Speicherverbrauch zu hoch wird oder Anfragen zu langsam beantwortet werden. Dies ist eine Portierung des sysguard in tengine zu dem reinen NGINX, um die gleichen Funktionen zu unterstützen.
Hinweise: Beachten Sie, dass dieses Modul den sysinfo(2) Systemaufruf oder die Funktion getloadavg(3) in glibc benötigt. Es erfordert auch das /proc-Dateisystem, um Speicherinformationen zu erhalten.
Eingebettete Variablen
Die folgenden eingebetteten Variablen werden bereitgestellt:
- $sysguard_load
- Die Last des Systems. Wenn der Wert von
$sysguard_load100 beträgt, dann ist die Last 0.1 (100/1000). (/msec) - $sysguard_swapstat
- Das Verhältnis der Nutzung von Swap. (/per)
- $sysguard_free
- Der tatsächlich freie Speicherplatz im Speicher. (/byte)
- $sysguard_rt
- Der Durchschnitt der Bearbeitungszeiten von Anfragen. Wenn der Wert von
$sysguard_rt100 beträgt, dann beträgt die Antwortzeit 0.1 Sekunde (100/1000). (/msec) - $sysguard_meminfo_totalram
- Der gesamte Speicher von meminfo. (/byte)
- $sysguard_meminfo_freeram
- Der freie Speicher von meminfo. (/byte)
- $sysguard_meminfo_bufferram
- Der Puffer-Speicher von meminfo. (/byte)
- $sysguard_meminfo_cachedram
- Der zwischengespeicherte Speicher von meminfo. (/byte)
- $sysguard_meminfo_totalswap
- Der gesamte Swap von meminfo. (/byte)
- $sysguard_meminfo_freeswap
- Der freie Swap von meminfo. (/byte)
Direktiven
sysguard
| - | - |
|---|---|
| Syntax | sysguard \<on|off> |
| Standard | off |
| Kontext | http, server, location |
Beschreibung: Aktiviert oder deaktiviert die Funktion des Moduls.
sysguard_load
| - | - |
|---|---|
| Syntax | sysguard_load load=number [action=/url] |
| Standard | - |
| Kontext | http, server, location |
Beschreibung: Legt die Lastgrenze fest. Wenn die Systemlast diesen Schwellenwert überschreitet, werden alle nachfolgenden Anfragen an die durch den Parameter 'action' angegebene URL umgeleitet. Es wird 503 zurückgegeben, wenn keine 'action'-URL definiert ist. Diese Direktive unterstützt auch die Verwendung von ncpuratio anstelle des festen Schwellenwerts, 'ncpu' bedeutet die Anzahl der CPU-Kerne, Sie können diese Direktive wie folgt verwenden: load=ncpu1.5
sysguard_mem
| - | - |
|---|---|
| Syntax | sysguard_mem swapratio=ratio% free=size [action=/url] |
| Standard | - |
| Kontext | http, server, location |
Beschreibung: Legt die verwendete Swap-Speicher- oder freie Speichergrenze fest. Wenn das Verhältnis der Nutzung von Swap-Speicher diesen Schwellenwert überschreitet oder der freie Speicher kleiner als die Größe ist, werden alle nachfolgenden Anfragen an die durch den Parameter 'action' angegebene URL umgeleitet. Es wird 503 zurückgegeben, wenn keine 'action'-URL vorhanden ist. Sysguard verwendet diese Strategie zur Berechnung des freien Speichers: "memfree = free + buffered + cached"
sysguard_rt
| - | - |
|---|---|
| Syntax | sysguard_rt rt=second period=time [method=\<AMM|WMA>:number] [action=/url] |
| Standard | - |
| Kontext | http, server, location |
Beschreibung: Legt die Antwortzeitgrenze fest.
Der Parameter rt wird verwendet, um einen Schwellenwert für die durchschnittliche Antwortzeit in Sekunden festzulegen.
Der Parameter period wird verwendet, um den Zeitraum des Statistikzyklus anzugeben.
Wenn die durchschnittliche Antwortzeit des Systems den vom Benutzer angegebenen Schwellenwert überschreitet,
wird die eingehende Anfrage an eine durch den Parameter 'action' definierte URL umgeleitet.
Wenn keine 'action' vorhanden ist, wird die Anfrage direkt mit einem 503-Fehler beantwortet.
Die method ist eine Formel, die den Durchschnitt der Bearbeitungszeiten von Antworten berechnet.
Die number in der Methode ist die Anzahl der Proben zur Berechnung des Durchschnitts.
Die Standardmethode ist auf method=AMM:period eingestellt.
- AMM
- Der AMM ist der arithmetische Mittelwert.
- WMA
- Der WMA ist der gewichtete gleitende Durchschnitt.
sysguard_mode
| - | - |
|---|---|
| Syntax | sysguard_mode \<and|or> |
| Standard | or |
| Kontext | http, server, location |
Beschreibung: Wenn es mehr als einen Typ von Monitor gibt, wird diese Direktive verwendet, um die Beziehungen zwischen allen Monitoren anzugeben, die 'and' für alle Übereinstimmungen und 'or' für beliebige Übereinstimmungen sind.
sysguard_interval
| - | - |
|---|---|
| Syntax | sysguard_interval time |
| Standard | 1s |
| Kontext | http, server, location |
Beschreibung: Legt das Zeitintervall fest, um Ihre Systeminformationen zu aktualisieren.
Der Standardwert beträgt eine Sekunde, was bedeutet, dass sysguard den Serverstatus einmal pro Sekunde aktualisiert.
sysguard_log_level
| - | - |
|---|---|
| Syntax | sysguard_log_level \<info|notice|warn|error> |
| Standard | error |
| Kontext | http, server, location |
Beschreibung: Legt die Protokollebene von sysguard fest.
Siehe auch
GitHub
Sie finden zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub Repository für nginx-module-sysguard.