sts: Модуль статуса трафика сервера потока Nginx
Установка для Debian/Ubuntu
Эти документы применимы к APT пакету nginx-module-sts, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте APT репозиторий, как описано в настройке APT репозитория.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-sts
Показать дистрибутивы и архитектуры
| Distro | Suite | Component | Architectures |
|----------|-------------------|-------------|-----------------|
| 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 |
Модуль статуса трафика сервера потока Nginx
Скриншоты

Синопсис
http {
stream_server_traffic_status_zone;
...
server {
...
location /status {
stream_server_traffic_status_display;
stream_server_traffic_status_display_format html;
}
}
}
stream {
server_traffic_status_zone;
...
server {
...
}
}
Описание
Это модуль Nginx, который предоставляет доступ к информации о статусе трафика сервера потока. Это портированная версия nginx-module-vts для подсистемы "потока" NGINX, чтобы поддерживать те же функции, что и в nginx-module-vts. Он содержит текущий статус, такой как сервера, серверы верхнего уровня, фильтры, определенные пользователем.
Прежде всего, требуется указать как директиву server_traffic_status_zone в блоке потока, так и stream_server_traffic_status_zone в блоке HTTP, и затем, если директива stream_server_traffic_status_display установлена, к ней можно получить доступ следующим образом:
- /status/format/json
- Если вы запросите
/status/format/json, будет возвращен JSON-документ, содержащий текущие данные о деятельности для использования в живых панелях и сторонних инструментах мониторинга. - /status/format/html
- Если вы запросите
/status/format/html, будет возвращена встроенная живая панель в HTML, которая делает внутренний запрос к/status/format/json. - /status/format/jsonp
- Если вы запросите
/status/format/jsonp, будет возвращена функция обратного вызова JSONP, содержащая текущие данные о деятельности для использования в живых панелях и сторонних инструментах мониторинга. - /status/format/prometheus
- Если вы запросите
/status/format/prometheus, будет возвращен документ prometheus, содержащий текущие данные о деятельности. - /status/control
- Если вы запросите
/status/control, будет возвращен JSON-документ после сброса или удаления зон через строку запроса. См. Управление.
JSON-документ содержит следующее:
{
"hostName": ...,
"nginxVersion": ...,
"loadMsec": ...,
"nowMsec": ...,
"connections": {
"active":...,
"reading":...,
"writing":...,
"waiting":...,
"accepted":...,
"handled":...,
"requests":...
},
"sharedZones": {
"name":...,
"maxSize":...,
"usedSize":...,
"usedNode":...
},
"streamServerZones": {
"...":{
"port":...,
"protocol":...,
"connectCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
},
"sessionMsecCounter":...,
"sessionMsec":...,
"sessionMsecs":{
"times":[...],
"msecs":[...]
},
"sessionBuckets":{
"msecs":[...],
"counters":[...]
}
}
...
},
"streamFilterZones": {
"...":{
"...":{
"port":...,
"protocol":...,
"connectCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
},
"sessionMsecCounter":...,
"sessionMsec":...,
"sessionMsecs":{
"times":[...],
"msecs":[...]
},
"sessionBuckets":{
"msecs":[...],
"counters":[...]
}
},
...
},
...
},
"streamUpstreamZones": {
"...":[
{
"server":...,
"connectCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...
},
"sessionMsecCounter":...,
"sessionMsec":...,
"sessionMsecs":{
"times":[...],
"msecs":[...]
},
"sessionBuckets":{
"msecs":[...]
"counters":[...]
},
"uSessionMsecCounter":...,
"uSessionMsec":...,
"uSessionMsecs":{
"times":[...],
"msecs":[...]
},
"uSessionBuckets":{
"msecs":[...]
"counters":[...]
},
"uConnectMsecCounter":...,
"uConnectMsec":...,
"uConnectMsecs":{
"times":[...],
"msecs":[...]
},
"uConnectBuckets":{
"msecs":[...]
"counters":[...]
},
"uFirstByteMsecCounter":...,
"uFirstByteMsec":...,
"uFirstByteMsecs":{
"times":[...],
"msecs":[...]
},
"uFirstByteBuckets":{
"msecs":[...]
"counters":[...]
},
"weight":...,
"maxFails":...,
"failTimeout":...,
"backup":...,
"down":...
}
...
],
...
}
}
- main
- Базовая версия, время безотказной работы ((nowMsec - loadMsec)/1000)
- nowMsec, loadMsec в миллисекундах.
- connections
- Общее количество подключений и запросов (так же, как в модуле stub_status в NGINX)
- streamServerZones
- Трафик (входящий/исходящий) и количество запросов и ответов и статус (1xx, 2xx...) отношение попаданий для каждой зоны сервера
- Общий трафик (входящий/исходящий) и количество запросов и ответов (Имя зоны
*) и отношение попаданий - streamFilterZones
- Трафик (входящий/исходящий) и количество запросов и ответов и статус (1xx, 2xx...) отношение попаданий для каждой зоны сервера, отфильтрованной по директиве
server_traffic_status_filter_by_set_key - Общий трафик (входящий/исходящий) и количество запросов и ответов (Имя зоны
*) и отношение попаданий, отфильтрованный по директивеserver_traffic_status_filter_by_set_key - streamUpstreamZones
- Трафик (входящий/исходящий) и количество запросов и ответов для каждого сервера в каждой группе верхних уровней
- Текущие настройки (вес, maxfails, failtimeout...) в nginx.conf
Директива stream_server_traffic_status_display_format устанавливает формат вывода по умолчанию, который является одним из json, jsonp, html, prometheus. (По умолчанию: json)
Расчет трафика производится следующим образом:
- streamServerZones
- in += requested_bytes
- out += sent_bytes
- streamFilterZones
- in += requested_bytes через фильтр
- out += sent_bytes через фильтр
- streamUpstreamZones
- in += requested_bytes через серверные зоны
- out += sent_bytes через серверные зоны
Все расчеты происходят в фазе обработки логов Nginx.
Предостережения: данный модуль зависит от системы логирования nginx (NGX_STREAM_LOG_PHASE: последняя фаза потока nginx), поэтому трафик может быть в определенных обстоятельствах отличен от реального трафика по полосе пропускания. Вебсокеты, отмененные загрузки могут быть причиной неточностей. Работа модуля не зависит от того, включена или отключена директива access_log. Снова, этот модуль работает хорошо с "access_log off".
Управление
Можно сбросить или удалить зоны трафика через строку запроса. Ответ запроса будет в виде JSON-документа.
- Синтаксис URI
- /
{status_uri}/control?cmd={command}&group={group}&zone={name}
http {
stream_server_traffic_status_zone;
...
server {
server_name example.org;
...
location /status {
stream_server_traffic_status_display;
stream_server_traffic_status_display_format html;
}
} }
}
stream {
geoip_country /usr/share/GeoIP/GeoIP.dat;
server_traffic_status_zone;
server_traffic_status_filter_by_set_key $geoip_country_code country::*;
server {
...
}
...
}
Если задать так, тогда uri управления будет как example.org/status/control.
Доступные аргументы запроса следующие:
* cmd=\<status|reset|delete>
* status
* Возвращает статус зон трафика в json формате как status/format/json.
* reset
* Сбрасывает зоны трафика без удаления узлов в общей памяти. (= инициализирует до 0)
* delete
* Удаляет зоны трафика в общей памяти. При повторном запросе они будут воспроизведены.
* group=\<server|filter|upstream@alone|upstream@group|*>
* server
* filter
* upstream@alone
* upstream@group
* *
* zone=name
* server
* name
* filter
* filter_group@name
* upstream@group
* upstream_group@name
* upstream@alone
* @name
Чтобы получить статус зон трафика в реальном времени
Это похоже на status/format/json, за исключением того, что можно получать каждую зону.
Чтобы получить полные зоны
- Это точно так же, как
status/format/json. - /status/control?cmd=status&group=*
Чтобы получить групповые зоны
- streamServerZones
- /status/control?cmd=status&group=server&zone=*
- streamFilterZones
- /status/control?cmd=status&group=filter&zone=*
- streamUpstreamZones
- /status/control?cmd=status&group=upstream@group&zone=*
- streamUpstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=*
Чтобы получить каждую зону
- отдельная зона в streamServerZones
- /status/control?cmd=status&group=server&zone=
name - отдельная зона в streamFilterZones
- /status/control?cmd=status&group=filter&zone=
filter_group@name - отдельная зона в streamUpstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - отдельная зона в streamUpstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
name
Чтобы сбросить зоны трафика в реальном времени
Это сбрасывает значения указанных зон до 0.
Чтобы сбросить полные зоны
- /status/control?cmd=reset&group=*
Чтобы сбросить групповые зоны
- streamServerZones
- /status/control?cmd=reset&group=server&zone=*
- streamFilterZones
- /status/control?cmd=reset&group=filter&zone=*
- streamUpstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=*
- streamUpstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=*
Чтобы сбросить каждую зону
- отдельная зона в streamServerZones
- /status/control?cmd=reset&group=server&zone=
name - отдельная зона в streamFilterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - отдельная зона в streamUpstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - отдельная зона в streamUpstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name
Чтобы удалить зоны трафика в реальном времени
Это удаляет указанные зоны в общей памяти.
Чтобы удалить полные зоны
- /status/control?cmd=delete&group=*
Чтобы удалить групповые зоны
- streamServerZones
- /status/control?cmd=delete&group=server&zone=*
- streamFilterZones
- /status/control?cmd=delete&group=filter&zone=*
- streamUpstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=*
- streamUpstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=*
Чтобы удалить каждую зону
- отдельная зона в streamServerZones
- /status/control?cmd=delete&group=server&zone=
name - отдельная зона в streamFilterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - отдельная зона в streamUpstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - отдельная зона в streamUpstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name
JSON
Следующая информация о статусе предоставляется в формате JSON:
Json, используемый статусом
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- Имя хоста.
- nginxVersion
- Версия предоставленного.
- loadMsec
- Время загрузки процесса в миллисекундах.
- nowMsec
- Текущее время в миллисекундах.
- connections
- active
- Текущее количество активных клиентских подключений.
- reading
- Общее количество читающих клиентских подключений.
- writing
- Общее количество записывающих клиентских подключений.
- waiting
- Общее количество ожидающих клиентских подключений.
- accepted
- Общее количество принятых клиентских подключений.
- handled
- Общее количество обработанных клиентских подключений.
- requests
- Общее количество запрошенных клиентских подключений.
- sharedZones
- name
- Имя общей памяти, указанной в конфигурации (по умолчанию:
stream_server_traffic_status).
- Имя общей памяти, указанной в конфигурации (по умолчанию:
- maxSize
- Ограничение на максимальный размер общей памяти, указанной в конфигурации.
- usedSize
- Текущий размер общей памяти.
- usedNode
- Текущее количество узлов, использующихся в общей памяти. Можно получить приблизительный размер одного узла по следующей формуле: (usedSize / usedNode).
- streamServerZones
- connectCounter
- Общее количество клиентских запросов, полученных от клиентов.
- inBytes
- Общее количество байтов, полученных от клиентов.
- outBytes
- Общее количество байтов, отправленных клиентам.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- Количество ответов со статус-кодами 1xx, 2xx, 3xx, 4xx и 5xx.
- sessionMsecCounter
- Количество накопленного времени обработки запросов в миллисекундах.
- sessionMsec
- Среднее время обработки запросов в миллисекундах.
- sessionMsecs
- times
- Время в миллисекундах на времени обработки запросов.
- msecs
- Время обработки запросов в миллисекундах.
- sessionBuckets
- msecs
- Значения ведер гистограммы, установленные директивой
server_traffic_status_histogram_buckets. - counters
- Кумулятивные значения по причине того, что каждое значение ведра больше или равно времени обработки запроса.
- streamFilterZones
- Предоставляет те же поля, что и
streamServerZones, за исключением того, что они включают имена групп. - streamUpstreamZones
- server
- Адрес сервера.
- connectCounter
- Общее количество клиентских подключений, перенаправленных на этот сервер.
- inBytes
- Общее количество байтов, полученных с этого сервера.
- outBytes
- Общее количество байтов, отправленных на этот сервер.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- Количество ответов со статус-кодами 1xx, 2xx, 3xx, 4xx и 5xx.
- sessionMsecCounter
- Количество накопленного времени обработки запросов в миллисекундах, включая верхний уровень.
- sessionMsec
- Среднее время обработки запросов в миллисекундах, включая верхний уровень.
- sessionMsecs
- times
- Время в миллисекундах на времени обработки запросов.
- msecs
- Время обработки запросов в миллисекундах, включая верхний уровень.
- sessionBuckets
- msecs
- Значения ведер гистограммы, установленные директивой
server_traffic_status_histogram_buckets. - counters
- Кумулятивные значения по причине того, что каждое значение ведра больше или равно времени обработки запроса.
- uSessionMsecCounter
- Количество накопленного времени сессии в миллисекундах к серверу верхнего уровня.
- uSessionMsec
- Среднее время продолжительности сессии в миллисекундах к серверу верхнего уровня.
- uSessionMsecs
- times
- Время в миллисекундах на времени обработки запросов.
- msecs
- Время продолжительности сессии в миллисекундах к серверу верхнего уровня.
- uSessionBuckets
- msecs
- Значения ведер гистограммы, установленные директивой
server_traffic_status_histogram_buckets. - counters
- Кумулятивные значения по причине того, что каждое значение ведра больше или равно времени продолжительности сессии к серверу верхнего уровня.
- uConnectMsecCounter
- Количество накопленного времени на соединение с сервером верхнего уровня.
- uConnectMsec
- Среднее время в миллисекундах на соединение с сервером верхнего уровня (1.11.4).
- uConnectMsecs
- times
- Время в миллисекундах на времени обработки запросов.
- msecs
- Время в миллисекундах на соединение с сервером верхнего уровня.
- uConnectBuckets
- msecs
- Значения ведер гистограммы, установленные директивой
server_traffic_status_histogram_buckets. - counters
- Кумулятивные значения по причине того, что каждое значение ведра больше или равно времени на соединение с сервером верхнего уровня.
- uFirstByteMsecCounter
- Количество накопленного времени в миллисекундах для получения первого байта данных.
- uFirstByteMsec
- Среднее время в миллисекундах для получения первого байта данных (1.11.4).
- uFirstByteMsecs
- times
- Время в миллисекундах на времени обработки запросов.
- msecs
- Время в миллисекундах для получения первого байта данных (1.11.4).
- uFirstByteBuckets
- msecs
- Значения ведер гистограммы, установленные директивой
server_traffic_status_histogram_buckets. - counters
- Кумулятивные значения по причине того, что каждое значение ведра больше или равно времени для получения первого байта данных.
- weight
- Текущая настройка
weightсервера.
- Текущая настройка
- maxFails
- Текущая настройка
max_failsсервера.
- Текущая настройка
- failTimeout
- Текущая настройка
fail_timeoutсервера.
- Текущая настройка
- backup
- Текущая настройка
backupсервера.
- Текущая настройка
- down
- Текущая настройка
downсервера.
- Текущая настройка
Json, используемый для управления
/{status_uri}/control?cmd=reset&...
/{status_uri}/control?cmd=delete&...
- processingReturn
- Результат true или false.
- processingCommandString
- Запрошенная строка команды.
- processingGroupString
- Запрошенная строка группы.
- processingZoneString
- Запрошенная строка зоны.
- processingCounts
- Фактическое количество обработок.
Переменные
Следующие встроенные переменные предоставляются в блоке stream:
- $sts_connect_counter
- Общее количество клиентских запросов, полученных от клиентов.
- $sts_in_bytes
- Общее количество байтов, полученных от клиентов.
- $sts_out_bytes
- Общее количество байтов, отправленных клиентам.
- $sts_1xx_counter
- Количество ответов со статус-кодами 1xx.
- $sts_2xx_counter
- Количество ответов со статус-кодами 2xx.
- $sts_3xx_counter
- Количество ответов со статус-кодами 3xx.
- $sts_4xx_counter
- Количество ответов со статус-кодами 4xx.
- $sts_5xx_counter
- Количество ответов со статус-кодами 5xx.
- $sts_session_time
- Среднее время обработки запросов.
Ограничение
Можно ограничить общий трафик для каждого сервера с помощью директивы
server_traffic_status_limit_traffic.
Также можно ограничить весь трафик с помощью директивы
server_traffic_status_limit_traffic_by_set_key.
Когда лимит превышен, сервер вернет ошибку 503
(Служба временно недоступна) в ответ на запрос.
Код возврата может быть изменен.
Чтобы ограничить трафик для сервера
stream {
server_traffic_status_zone;
...
server {
listen 1981;
server_traffic_status_limit_traffic in:64G;
server_traffic_status_limit_traffic out:1024G;
...
}
}
- Ограничивает входящий/исходящий общий трафик на
1981/tcpдо 64G и 1024G соответственно.
Чтобы ограничить трафик для фильтра
stream {
geoip_country /usr/share/GeoIP/GeoIP.dat;
server_traffic_status_zone;
...
server {
listen 1981;
server_traffic_status_filter_by_set_key $geoip_country_code country::$server_addr;
server_traffic_status_limit_traffic_by_set_key FG@country::$server_addr@US out:1024G;
server_traffic_status_limit_traffic_by_set_key FG@country::$server_addr@CN out:2048G;
...
}
}
- Ограничивает общий трафик в США и Китае на
example.orgдо 1024G и 2048G соответственно.
Чтобы ограничить трафик для верхнего уровня
stream {
server_traffic_status_zone;
...
upstream backend {
server 10.10.10.17:80;
server 10.10.10.18:80;
}
server {
listen 1981;
server_traffic_status_limit_traffic_by_set_key UG@backend@10.10.10.17:80 in:512G;
server_traffic_status_limit_traffic_by_set_key UG@backend@10.10.10.18:80 in:1024G;
proxy_pass backend;
...
}
}
- Ограничивает общий трафик, проходящий через верхний уровень, на
1981/tcpдо 512G и 1024G для каждого пира.
Предостережения: Трафик — это сумма переданного трафика или счетчика, а не полоса пропускания.
Случаи использования
Можно рассчитать индивидуальную статистику, заданную пользователем, с помощью директивы server_traffic_status_filter_by_set_key.
Чтобы рассчитать трафик для каждой отдельной страны с использованием GeoIP
stream {
geoip_country /usr/share/GeoIP/GeoIP.dat;
server_traffic_status_zone;
server_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
...
server_traffic_status_filter_by_set_key $geoip_country_code country::$server_addr:$server_port;
}
}
- Рассчитывает трафик для каждой отдельной страны для общих серверных групп.
- Рассчитывает трафик для каждой отдельной страны для каждой серверной группы.
В основном изображения флагов стран встроены в HTML. Изображения флагов стран активируются, если строка country включена в название группы, являющейся вторым аргументом директивы server_traffic_status_filter_by_set_key.
Настройка
Чтобы настроить после установки модуля
-
Вам нужно изменить строку
{{uri}}на ваш статус uri в status.template.html следующим образом:shell> vi share/status.template.htmlvar vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000; -
Затем настройте и скопируйте status.template.html в корневой каталог сервера следующим образом:
shell> cp share/status.template.html /usr/share/nginx/html/status.html -
Настройте
nginx.confserver { server_name example.org; root /usr/share/nginx/html; # Перенаправить запросы для / на /status.html location = / { return 301 /status.html; } location = /status.html {} # Все, что начинается с /status (за исключением /status.html) обрабатывается обработчиком статуса location /status { stream_server_traffic_status_display; stream_server_traffic_status_display_format json; } } -
Доступ к вашему html.
http://example.org/status.html
Чтобы настроить перед установкой модуля
-
Измените
share/status.template.html(Не меняйте строку{{uri}}) -
Воссоздайте
ngx_http_stream_server_traffic_status_module_html.hследующим образом:shell> cd util shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_stream_server_traffic_status_module_html.h -
Добавьте модуль в конфигурацию сборки, добавив
--add-module=/path/to/nginx-module-sts --add-module=/path/to/nginx-module-stream-sts -
Соберите бинарник nginx.
-
Установите бинарник nginx.
Директивы
stream_server_traffic_status
| - | - |
|---|---|
| Синтаксис | stream_server_traffic_status \<on|off> |
| По умолчанию | off |
| Контекст | http, server, location |
Описание: Включает или отключает работу модуля. Если вы установите директиву stream_server_traffic_status_zone, она автоматически включается.
stream_server_traffic_status_zone
| - | - |
|---|---|
| Синтаксис | stream_server_traffic_status_zone [shared:name] |
| По умолчанию | shared:stream_server_traffic_status |
| Контекст | http |
Описание: Устанавливает параметры для области общей памяти, указанной директивой server_traffic_status_zone в блоке потока.
Предостережения: Имя должно совпадать с указанным в server_traffic_status_zone.
stream_server_traffic_status_display
| - | - |
|---|---|
| Синтаксис | stream_server_traffic_status_display |
| По умолчанию | - |
| Контекст | http, server, location |
Описание: Включает или отключает обработчик отображения модуля.
stream_server_traffic_status_display_format
| - | - |
|---|---|
| Синтаксис | stream_server_traffic_status_display_format \<json|html|jsonp|prometheus> |
| По умолчанию | json |
| Контекст | http, server, location |
Описание: Устанавливает формат выходных данных обработчика отображения. Если вы установите json, будет возвращен JSON-документ. Если вы установите html, будет возвращена встроенная живая панель в HTML. Если вы установите jsonp, будет возвращена функция обратного вызова JSONP (по умолчанию: ngx_http_stream_server_traffic_status_jsonp_callback). Если вы установите prometheus, будет возвращен документ prometheus.
stream_server_traffic_status_display_jsonp
| - | - |
|---|---|
| Синтаксис | stream_server_traffic_status_display_jsonp callback |
| По умолчанию | ngx_http_stream_server_traffic_status_jsonp_callback |
| Контекст | http, server, location |
Описание: Устанавливает имя обратного вызова для JSONP.
stream_server_traffic_status_average_method
| - | - |
|---|---|
| Синтаксис | stream_server_traffic_status_average_method \<AMM|WMA> [period] |
| По умолчанию | AMM 60s |
| Контекст | http, server, location |
Описание: Устанавливает метод, который является формулой для расчета среднего времени обработки ответов. Период – это эффективное время значений, используемых для расчета среднего. (По умолчанию: 60s) Если установить period на 0, эффективное время игнорируется. В этом случае будет отображено последнее среднее значение, даже если запросов нет и после истечения времени. Соответствующие значения — это sessionMsec, uSessionMsec, uConnectMsec, uFirstByteMsec в JSON.
- AMM
- AMM — это арифметическое среднее.
- WMA
- WMA — это взвешенное скользящее среднее.
server_traffic_status
| - | - |
|---|---|
| Синтаксис | server_traffic_status \<on|off> |
| По умолчанию | off |
| Контекст | stream, server |
Описание: Включает или отключает работу модуля. Если вы установите директиву server_traffic_status_zone, она автоматически включается.
server_traffic_status_zone
| - | - |
|---|---|
| Синтаксис | server_traffic_status_zone [shared:name:size] |
| По умолчанию | shared:stream_server_traffic_status:1m |
| Контекст | stream |
Описание: Устанавливает параметры для области общей памяти, которая будет хранить состояния для различных ключей. Кэш общий для всех рабочих процессов.
server_traffic_status_filter
| - | - |
|---|---|
| Синтаксис | server_traffic_status_filter \<on|off> |
| По умолчанию | on |
| Контекст | stream, server |
Описание: Включает или отключает функции фильтра.
server_traffic_status_filter_by_set_key
| - | - |
|---|---|
| Синтаксис | server_traffic_status_filter_by_set_key key [name] |
| По умолчанию | - |
| Контекст | stream, server |
Описание: Включает ключи по переменной, заданной пользователем. key - это строка ключа для расчета трафика. name - это строка группы для расчета трафика. key и name могут содержать переменные, такие как $host, $server_addr, $server_port. Группа name принадлежит streamFilterZones, если указано. Группа key принадлежит streamServerZones, если аргумент name не указан. Пример с модулем geoip выглядит следующим образом:
stream {
...
server {
listen 1981;
server_traffic_status_filter_by_set_key $geoip_country_code country::$server_addr:$server_port;
...
}
}
...
"streamServerZones": {
...
},
"streamFilterZones": {
"country::example.org": {
"KR": {
"port":...,
"protocol":...,
"connectCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
},
"sessionMsec":...
"sessionMsecs":{
"times":[...],
"msecs":[...]
},
},
},
"US": {
...
},
...
},
...
},
...
server_traffic_status_filter_check_duplicate
| - | - |
|---|---|
| Синтаксис | server_traffic_status_filter_check_duplicate \<on|off> |
| По умолчанию | on |
| Контекст | stream, server |
Описание: Включает или отключает дедупликацию server_traffic_status_filter_by_set_key. Обрабатывается только одно из дублирующих значений (key + name) в каждой директиве (stream, server), если эта опция включена.
server_traffic_status_limit
| - | - |
|---|---|
| Синтаксис | server_traffic_status_limit \<on|off> |
| По умолчанию | on |
| Контекст | stream, server |
Описание: Включает или отключает функции лимита.
server_traffic_status_limit_traffic
| - | - |
|---|---|
| Синтаксис | server_traffic_status_limit_traffic member:size [code] |
| По умолчанию | - |
| Контекст | stream, server |
Описание: Включает ограничение трафика для указанного member. member — это строка участника для ограничения трафика. size — это размер (k/m/g) для ограничения трафика. code — это код, который возвращается в ответ на отклоненные запросы (по умолчанию: 503).
Доступные строки member следующие:
* connect
* Общее количество клиентских подключений, полученных от клиентов.
* in
* Общее количество байтов, полученных от клиентов.
* out
* Общее количество байтов, отправленных клиентам.
* 1xx
* Количество ответов со статус-кодами 1xx.
* 2xx
* Количество ответов со статус-кодами 2xx.
* 3xx
* Количество ответов со статус-кодами 3xx.
* 4xx
* Количество ответов со статус-кодами 4xx.
* 5xx
* Количество ответов со статус-кодами 5xx.
server_traffic_status_limit_traffic_by_set_key
| - | - |
|---|---|
| Синтаксис | server_traffic_status_limit_traffic_by_set_key key member:size [code] |
| По умолчанию | - |
| Контекст | stream, server |
Описание: Включает ограничение трафика для указанного key и member. key - это строка ключа для ограничения трафика. member - это строка участника для ограничения трафика. size - это размер (k/m/g) для ограничения трафика. code - это код, который возвращается в ответ на отклоненные запросы (по умолчанию: 503).
Синтаксис key следующий:
* group@[subgroup@]name
Доступные строки group следующие:
* NO
* Группа сервера.
* UA
* Группа верхнего уровня в одиночку.
* UG
* Группа верхнего уровня (используйте subgroup).
* FG
* Группа фильтров (используйте subgroup).
Доступные строки member следующие:
* connect
* Общее количество клиентских запросов, полученных от клиентов.
* in
* Общее количество байтов, полученных от клиентов.
* out
* Общее количество байтов, отправленных клиентам.
* 1xx
* Количество ответов со статус-кодами 1xx.
* 2xx
* Количество ответов со статус-кодами 2xx.
* 3xx
* Количество ответов со статус-кодами 3xx.
* 4xx
* Количество ответов со статус-кодами 4xx.
* 5xx
* Количество ответов со статус-кодами 5xx.
member такой же, как и в директиве server_traffic_status_limit_traffic.
server_traffic_status_limit_check_duplicate
| - | - |
|---|---|
| Синтаксис | server_traffic_status_limit_check_duplicate \<on|off> |
| По умолчанию | on |
| Контекст | stream, server |
Описание: Включает или отключает дедупликацию server_traffic_status_limit_by_set_key. Обрабатывается только одно из дублирующих значений (member | key + member) в каждой директиве (stream, server), если эта опция включена.
server_traffic_status_average_method
| - | - |
|---|---|
| Синтаксис | server_traffic_status_average_method \<AMM|WMA> [period] |
| По умолчанию | AMM 60s |
| Контекст | stream, server |
Описание: Устанавливает метод, который является формулой, которая рассчитывает среднее время обработки ответов. period — это эффективное время значений, используемых для расчета среднего. (По умолчанию: 60s) Если period установить на 0, эффективное время игнорируется. В этом случае будет отображено последнее среднее значение, даже если запросов нет и после выполнения времени. Соответствующее значение — это только переменная $sts_session_time.
- AMM
- AMM — это арифметическое среднее.
- WMA
- WMA — это взвешенное скользящее среднее.
Предостережения: Переменная $sts_session_time является значением, рассчитанным в момент последнего запроса. Она не рассчитывается при использовании переменных.
server_traffic_status_histogram_buckets
| - | - |
|---|---|
| Синтаксис | server_traffic_status_histogram_buckets second ... |
| По умолчанию | - |
| Контекст | stream |
Описание: Устанавливает наблюдаемые ведра, используемые в гистограммах. По умолчанию, если вы не установите эту директиву, она не будет работать. second можно выразить в десятичных знаках с минимальным значением 0.001 (1мс). Максимальный размер ведер — 32. Если этого значения недостаточно для вас, измените NGX_STREAM_SERVER_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN в
nginx-module-stream-sts/src/ngx_stream_server_traffic_status_node.h
и NGX_HTTP_STREAM_SERVER_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN в
nginx-module-sts/src/ngx_http_stream_server_traffic_status_node.h.
Например:
* server_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1 0.5 1 5 10
* Наблюдаемые ведра – [5мс 10мс 50мс 1с 5с 10с].
* server_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1
* Наблюдаемые ведра – [5мс 10мс 50мс 1с].
Предостережения: По умолчанию, если вы не установите эту директиву, статистика гистограммы не будет работать.