sysguard: Модуль sysguard для NGINX
Установка на Debian/Ubuntu
Эти документы применимы к APT пакету nginx-module-sysguard, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте APT репозиторий, как описано в настройке APT репозитория.
- Установите модуль:
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 |
Модуль 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.
- AMM
- AMM - это арифметическое среднее.
- WMA
- WMA - это взвешенное скользящее среднее.
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.