Zum Inhalt

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.


License

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_load 100 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_rt 100 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.

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.