Перейти к содержанию

sysguard: Модуль sysguard для NGINX

Установка на Debian/Ubuntu

Эти документы применимы к APT пакету nginx-module-sysguard, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте APT репозиторий, как описано в настройке APT репозитория.
  2. Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-sysguard
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия           | Компонент   | Архитектуры   |
|-------------|------------------|-------------|----------------|
| debian      | bookworm         | main        | amd64, arm64   |
| debian      | bookworm-mainline| main        | amd64, arm64   |
| debian      | trixie           | main        | amd64, arm64   |
| debian      | trixie-mainline  | main        | amd64, arm64   |
| ubuntu      | focal            | main        | amd64, arm64   |
| ubuntu      | focal-mainline   | main        | amd64, arm64   |
| ubuntu      | jammy            | main        | amd64, arm64   |
| ubuntu      | jammy-mainline   | main        | amd64, arm64   |
| ubuntu      | noble            | main        | amd64, arm64   |
| ubuntu      | noble-mainline   | main        | amd64, arm64   |

License

Модуль sysguard для 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;
        }
    }

}

Описание

Этот модуль можно использовать для защиты вашего сервера в случае, если загрузка системы, использование памяти становится слишком высоким или запросы обрабатываются слишком медленно. Это портированная версия sysguard из tengine на чистый NGINX с целью поддерживать те же функции.

Предупреждения: Обратите внимание, что этот модуль требует системного вызова sysinfo(2) или функции getloadavg(3) в glibc. Он также требует файловую систему /proc для получения информации о памяти.

Встроенные переменные

Следующие встроенные переменные предоставляются:

  • $sysguard_load
  • Нагрузка системы. Если значение $sysguard_load равно 100, то нагрузка составляет 0.1 (100/1000). (/msec)
  • $sysguard_swapstat
  • Соотношение использования swap. (/per)
  • $sysguard_free
  • Реальное свободное пространство в памяти. (/byte)
  • $sysguard_rt
  • Среднее время обработки запросов. Если значение $sysguard_rt равно 100, то время ответа составляет 0.1 сек. (100/1000). (/msec)
  • $sysguard_meminfo_totalram
  • Общая память meminfo. (/byte)
  • $sysguard_meminfo_freeram
  • Свободная память meminfo. (/byte)
  • $sysguard_meminfo_bufferram
  • Буферная память meminfo. (/byte)
  • $sysguard_meminfo_cachedram
  • Кэшированная память meminfo. (/byte)
  • $sysguard_meminfo_totalswap
  • Общий swap meminfo. (/byte)
  • $sysguard_meminfo_freeswap
  • Свободный swap meminfo. (/byte)

Директивы

sysguard

- -
Синтаксис sysguard \<on|off>
По умолчанию off
Контекст http, server, location

Описание: Включает или отключает работу модуля.

sysguard_load

- -
Синтаксис sysguard_load load=число [action=/url]
По умолчанию -
Контекст http, server, location

Описание: Указывает порог нагрузки. Когда системная нагрузка превышает этот порог, все последующие запросы будут перенаправлены на URL, указанный параметром 'action'. Он вернет 503, если URL 'action' не определен. Эта директива также поддерживает использование ncpuratio вместо фиксированного порога, 'ncpu' означает количество ядер процессора, вы можете использовать эту директиву так: load=ncpu1.5

sysguard_mem

- -
Синтаксис sysguard_mem swapratio=ratio% free=size [action=/url]
По умолчанию -
Контекст http, server, location

Описание: Указывает порог используемой swap-памяти или свободной памяти. Когда соотношение использования swap-памяти превышает этот порог или свободная память меньше указанного размера, все последующие запросы будут перенаправлены на URL, указанный параметром 'action'. Он вернет 503, если URL 'action' не определен. Sysguard использует эту стратегию для расчета свободной памяти: "memfree = free + buffered + cached"

sysguard_rt

- -
Синтаксис sysguard_rt rt=секунда period=время [method=\<AMM|WMA>:число] [action=/url]
По умолчанию -
Контекст http, server, location

Описание: Указывает порог времени ответа. Параметр rt используется для установки порога среднего времени ответа в секундах. Параметр period используется для указания периода статистического цикла. Если среднее время ответа системы превышает порог, указанный пользователем, входящий запрос будет перенаправлен на указанный URL, который определяется параметром 'action'. Если 'action' не указан, запрос будет отвечен с ошибкой 503 напрямую. method - это формула для расчета среднего времени обработки запросов. number в методе - это количество образцов для расчета среднего. По умолчанию метод установлен как method=AMM:period.

sysguard_mode

- -
Синтаксис sysguard_mode \<and|or>
По умолчанию or
Контекст http, server, location

Описание: Если имеется более одного типа мониторинга, эта директива используется для указания соотношений между всеми мониторами, которые могут быть: 'and' для всех совпадений и 'or' для любого совпадения.

sysguard_interval

- -
Синтаксис sysguard_interval время
По умолчанию 1s
Контекст http, server, location

Описание: Указывает временной интервал для обновления информации о системе. Значение по умолчанию - одна секунда, что означает, что sysguard обновляет статус сервера раз в секунду.

sysguard_log_level

- -
Синтаксис sysguard_log_level \<info|notice|warn|error>
По умолчанию error
Контекст http, server, location

Описание: Указывает уровень логирования sysguard.

Смотрите также