Nginx виртуальный модуль состояния трафика хоста модуль
Смотрите релизы GitHub для последнего выпуска Tagged.
Запустите sudo prove -rt после того, как вы установили этот модуль. sudo требуется, потому что тест требует, чтобы Nginx прослушивал порт 80.
Более ранние версии не тестируются.
shell> git clone git://github.com/vozlt/nginx-module-vts.git
Добавить модуль в конфигурацию сборки, добавив --add-module=/path/to/nginx-module-vts
Создайте бинар NGINX.
Установите двоичный файл Nginx.
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}Это модуль NGINX, который обеспечивает доступ к информации о состоянии виртуального хоста. Он содержит текущее состояние, такое как серверы, вверх по течению, кэши. Это похоже на мониторинг живой активности Nginx Plus. Встроенный HTML также взят из демонстрационной страницы старой версии.
Прежде всего, требуется директива vhost_traffic_status_zone , а затем, если установлена директива vhost_traffic_status_display , может быть доступна следующим образом:
/status/format/json , ответит документом JSON, содержащим текущие данные о активности для использования в референции в прямом эфире и сторонних инструментов мониторинга./status/format/html , ответит со встроенной репутацией в прямом эфире в HTML, которая запрашивает внутреннюю часть /status/format/json ./status/format/jsonp , ответит функцией обратного вызова JSONP, содержащей текущие данные об деятельности для использования в референции в прямом эфире и сторонние инструменты мониторинга./status/format/prometheus , ответит документом Prometheus, содержащим текущие данные об деятельности./status/control , ответит документом JSON после его сброса или удаления зон через строку запроса. Смотрите управление.Документ JSON содержит следующее:
{
"hostName" : ...,
"moduleVersion" : ...,
"nginxVersion" : ...,
"loadMsec" : ...,
"nowMsec" : ...,
"connections" : {
"active" : ...,
"reading" : ...,
"writing" : ...,
"waiting" : ...,
"accepted" : ...,
"handled" : ...,
"requests" : ...
},
"sharedZones" : {
"name" : ...,
"maxSize" : ...,
"usedSize" : ...,
"usedNode" : ...
},
"serverZones" : {
"..." :{
"requestCounter" : ...,
"inBytes" : ...,
"outBytes" : ...,
"responses" :{
"1xx" : ...,
"2xx" : ...,
"3xx" : ...,
"4xx" : ...,
"5xx" : ...,
"miss" : ...,
"bypass" : ...,
"expired" : ...,
"stale" : ...,
"updating" : ...,
"revalidated" : ...,
"hit" : ...,
"scarce" : ...
},
"requestMsecCounter" : ...,
"requestMsec" : ...,
"requestMsecs" :{
"times" :[ ... ],
"msecs" :[ ... ]
},
"requestBuckets" :{
"msecs" :[ ... ],
"counters" :[ ... ]
},
}
...
},
"filterZones" : {
"..." :{
"..." :{
"requestCounter" : ...,
"inBytes" : ...,
"outBytes" : ...,
"responses" :{
"1xx" : ...,
"2xx" : ...,
"3xx" : ...,
"4xx" : ...,
"5xx" : ...,
"miss" : ...,
"bypass" : ...,
"expired" : ...,
"stale" : ...,
"updating" : ...,
"revalidated" : ...,
"hit" : ...,
"scarce" : ...
},
"requestMsecCounter" : ...,
"requestMsec" : ...,
"requestMsecs" :{
"times" :[ ... ],
"msecs" :[ ... ]
},
"requestBuckets" :{
"msecs" :[ ... ],
"counters" :[ ... ]
},
},
...
},
...
},
"upstreamZones" : {
"..." :[
{
"server" : ...,
"requestCounter" : ...,
"inBytes" : ...,
"outBytes" : ...,
"responses" :{
"1xx" : ...,
"2xx" : ...,
"3xx" : ...,
"4xx" : ...,
"5xx" : ...
},
"requestMsecCounter" : ...,
"requestMsec" : ...,
"requestMsecs" :{
"times" :[ ... ],
"msecs" :[ ... ]
},
"requestBuckets" :{
"msecs" :[ ... ],
"counters" :[ ... ]
},
"responseMsecCounter" : ...,
"responseMsec" : ...,
"responseMsecs" :{
"times" :[ ... ],
"msecs" :[ ... ]
},
"responseBuckets" :{
"msecs" :[ ... ],
"counters" :[ ... ]
},
"weight" : ...,
"maxFails" : ...,
"failTimeout" : ...,
"backup" : ...,
"down" : ...
}
...
],
...
}
"cacheZones" : {
"..." :{
"maxSize" : ...,
"usedSize" : ...,
"inBytes" : ...,
"outBytes" : ...,
"responses" :{
"miss" : ...,
"bypass" : ...,
"expired" : ...,
"stale" : ...,
"updating" : ...,
"revalidated" : ...,
"hit" : ...,
"scarce" : ...
}
},
...
}
}* ) и коэффициент попаданияvhost_traffic_status_filter_by_set_key* ) и коэффициент удара, отфильтрованные через директиву vhost_traffic_status_filter_by_set_key Объекты overCounts в документе JSON в основном предназначены для 32 -битной системы и будут увеличиваться на 1, если его значение будет переполнено. Директива vhost_traffic_status_display_format устанавливает формат по умолчанию, который является одним из JSON, JSONP, HTML, Prometheus. (По умолчанию: JSON)
Расчет трафика следующим образом:
Все расчеты работают на фазе обработки журнала Nginx. Внутренние перенаправления (x-accel-redirect или error_page) не рассчитывают в восходящих постремезонах.
Caveats: этот модуль опирается на систему ведения журнала Nginx (ngx_http_log_phase: последняя фаза Nginx HTTP), поэтому трафик может быть в определенных CirumStances, которые различаются, что реальный трафик полосы пропускания. WebSocket, отмененные загрузки могут быть причиной неточностей. Работа модуля вообще не имеет значения, является ли директива Access_log «ON» или «OFF». Опять же, этот модуль хорошо работает на "Access_log Off". При использовании нескольких доменов он устанавливает для первого домена (слева) директивы Server_name. Если вы не хотите этого, см. Vhost_traffic_status_filter_by_host, Vhost_traffic_status_filter_by_set_key.
См. Следующие модули для статистики трафика stream :
Все средние значения в настоящее время рассчитываются как AMM (среднее арифметическое) за последние 64 значения.
Он может сбросить или удалять зоны трафика через строку запроса. Запрос отвечает документом JSON.
{status_uri} / control? cmd = {command} & Group = {group} & Zone = {name} http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
} Если он устанавливается, как указано выше, то управляющий URI похож на example.org/status/control .
Доступные аргументы запроса следующие:
status | reset | delete >status/format/json .server | filter | upstream@alone | upstream@group | cache | * > Это похоже на status/format/json за исключением того, что он может получить каждые зоны.
status/format/json . Значения Mainzones являются значениями статуса по умолчанию, включая hostName , moduleVersion , nginxVersion , loadMsec , nowMsec , connections .
namefilter_group @ nameupstream_group @ namenamenameЭто сбрасывает значения указанных зон до 0.
namefilter_group @ nameupstream_group @ namenamenameУдаляет указанные зоны в общей памяти.
namefilter_group @ nameupstream_group @ namenamename Он может получить значения состояния в конфигурации Nginx отдельно, используя директиву vhost_traffic_status_set_by_filter . Он может приобрести почти все значения статуса, и полученное значение хранится в пользовательских переменных, что является первым аргументом.
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
upstream backend {
10.10.10.11:80;
10.10.10.12:80;
}
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter;
vhost_traffic_status_set_by_filter $requestCounterKR filter/country::example.org@KR/requestCounter;
location /backend {
vhost_traffic_status_set_by_filter $requestCounterB1 upstream@group/[email protected]:80/requestCounter;
proxy_pass http://backend;
}
}
}Приведенные выше настройки следующие:
Пожалуйста, смотрите директиву VHOST_TRAFFIC_STATUS_SET_BY_FILTER для подробного использования.
В формате JSON представлена следующая информация о статусе:
/ {status_uri} /format /json
/ {status_uri} / control? cmd = status & ...
{version}(|.dev.{commit}) формат.vhost_traffic_status )vhost_traffic_status_histogram_buckets .serverZones , за исключением того, что включало имена групп.vhost_traffic_status_histogram_buckets .vhost_traffic_status_histogram_buckets .weight сервера.max_fails сервера.fail_timeout сервера.backup настройка сервера.down настройка сервера. По сути, это всего лишь марка сервера NGX_HTTP_UPSTREAM_MODULE DOWN (например, server backend3.example.com down ), а не фактическое состояние сервера. Он изменится на фактическое состояние, если вы включите директиву вверх по течению зоны.max_size в директивах proxy_cache_path не указана, системное зависимое значение NGX_MAX_OFF_T_VALUE назначено по умолчанию. Другими словами, это значение от Nginx, а не то, что я указал.maxSize . / {status_uri} / control? cmd = сбросить и ...
/ {status_uri} / control? cmd = delete & ...
Предоставляются следующие встроенные переменные:
Он может ограничивать общий трафик на каждый хост, используя директиву vhost_traffic_status_limit_traffic . Он также может ограничить весь трафик с помощью директивы vhost_traffic_status_limit_traffic_by_set_key . Когда лимит будет превышен, сервер вернет ошибку 503 (служба временно недоступна) в ответ на запрос. Код возврата может быть изменен.
http {
vhost_traffic_status_zone;
...
server {
server_name *.example.org;
vhost_traffic_status_limit_traffic in:64G;
vhost_traffic_status_limit_traffic out:1024G;
...
}
}*.example.org . Он работает индивидуально в каждом домене, если включена директива vhost_traffic_status_filter_by_host . http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
...
server {
server_name example.org;
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
vhost_traffic_status_limit_traffic_by_set_key FG@country:: $server_name @US out:1024G;
vhost_traffic_status_limit_traffic_by_set_key FG@country:: $server_name @CN out:2048G;
...
}
}
example.org до 1024G и 2048G соответственно. http {
vhost_traffic_status_zone;
...
upstream backend {
server 10.10.10.17:80;
server 10.10.10.18:80;
}
server {
server_name example.org;
location /backend {
vhost_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:512G;
vhost_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:1024G;
proxy_pass http://backend;
}
...
}
}
example.org . Caveats: трафик - это кумулятивный перевод или счетчик, а не полоса пропускания.
Он способен рассчитать пользовательную определенную отдельную статистику с помощью директивы vhost_traffic_status_filter_by_set_key .
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
} По сути, изображение флагов загородных флагов встроено в HTML. Изображение флагов страны включено, если строка country включена в имя группы, которое является вторым аргументом директивы vhost_traffic_status_filter_by_set_key .
http {
vhost_traffic_status_zone;
...
server {
...
location ~ ^/storage/(.+)/.*$ {
set $volume $1 ;
vhost_traffic_status_filter_by_set_key $volume storage:: $server_name ;
}
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
} http {
vhost_traffic_status_zone;
map $http_user_agent $filter_user_agent {
default 'unknown' ;
~ iPhone ios;
~ Android android;
~ (MSIE|Mozilla) windows;
}
vhost_traffic_status_filter_by_set_key $filter_user_agent agent::*;
...
server {
...
vhost_traffic_status_filter_by_set_key $filter_user_agent agent:: $server_name ;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}http_user_agent http {
vhost_traffic_status_zone;
server {
...
vhost_traffic_status_filter_by_set_key $status $server_name ;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}http status code Caveats: $ переменная статуса доступна в Nginx- (1.3.2, 1.2.2).
Если домен имеет несколько DNS -записей A, вы можете рассчитать трафик для отдельных IPS для домена, используя функцию фильтра или переменную в proxy_pass.
http {
vhost_traffic_status_zone;
upstream backend {
elb.example.org:80;
}
...
server {
...
location /backend {
vhost_traffic_status_filter_by_set_key $upstream_addr upstream::backend;
proxy_pass backend;
}
}
}elb.example.org . Если elb.example.org имеет несколько DNS -записей, будет отображаться все IP в filterZones . В приведенных выше параметрах, когда Nginx запускается или перезагружает конфигурацию ИТ, он запрашивает DNS -сервер для разрешения домена, а DNS A Записки кэшируются в памяти. Следовательно, DNS A Записи не изменяются в памяти, даже если DNS A Администратор DNS-записи, если NGINX не запускает запуск или перезагрузку. http {
vhost_traffic_status_zone;
resolver 10.10.10.53 valid=10s
...
server {
...
location /backend {
set $backend_server elb.example.org;
proxy_pass http:// $backend_server ;
}
}
}elb.example.org . Если elb.example.org 's dns изменится, будет отображаться как старый IP, так и новый IP в ::nogroups . В отличие от первой настройки группы UPSTREAM, вторая настройка работает хорошо, даже если DNS A Администратор DNS снят записи. Caveats: Пожалуйста, более подробно о Nginx DNS см. DNS-Service-Discovery-Nginx-Plus.
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}/status исключается из функции расчета трафика состояния и предела. Смотрите следующие директивы: http {
vhost_traffic_status_zone;
vhost_traffic_status_dump /var/log/nginx/vts.db;
...
server {
...
}
}vhost_traffic_status_dump постоянно поддерживает данные статистики, даже если система была перезагружена или nginx была перезапущена. Пожалуйста, смотрите директиву vhost_traffic_status_dump для подробного использования. {{uri}} на свой статус URI в status.template.html следующим образом: shell> vi share/status.template.html
var vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000;
shell> cp share/status.template.html /usr/share/nginx/html/status.html
nginx.conf server {
server_name example.org;
root /usr/share/nginx/html;
# Redirect requests for / to /status.html
location = / {
return 301 /status.html;
}
location = /status.html {}
# Everything beginning /status (except for /status.html) is
# processed by the status handler
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format json;
}
}
http://example.org/status.html
Modify share/status.template.html (не изменять {{uri}} string)
Воссоздайте ngx_http_vhost_traffic_status_module_html.h следующим образом:
shell> cd util
shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_vhost_traffic_status_module_html.h
Добавить модуль в конфигурацию сборки, добавив --add-module=/path/to/nginx-module-vts
Создайте бинар NGINX.
Установите двоичный файл Nginx.

| - | - |
|---|---|
| Синтаксис | vhost_traffic_status <on | off> |
| По умолчанию | выключенный |
| Контекст | http, сервер, местоположение |
Description: включает или отключает работающий модуль. Если вы установите директиву vhost_traffic_status_zone , автоматически включена.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_zone [Shared: имя: размер ] |
| По умолчанию | Общий: vhost_traffic_status: 1m |
| Контекст | http |
Description: Устанавливает параметры для зоны общей памяти, которая будет держать состояния для различных ключей. Кэш разделен между всеми рабочими процессами. В большинстве случаев общий размер памяти, используемый NGINX-Module-VTS, не сильно увеличивается. Размер общей памяти увеличивается красиво при использовании директивы vhost_traffic_status_filter_by_set_key , но если ключи фильтра исправлены ( например, общее количество кода страны составляет около 240 ), она не постоянно увеличивается.
Если вы используете директиву vhost_traffic_status_filter_by_set_key , установите ее следующим образом:
vhost_traffic_status_zone shared:vhost_traffic_status:32m )"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone" ) напечатано в error_log, увеличьте больше, чем (используется * 2).| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_dump path [ period ] |
| По умолчанию | - |
| Контекст | http |
Description: Включает дамп данных статистики и восстановить. Путь - это место для сброса данных о статистике. (EG /var/log/nginx/vts.db ) Период - это время резервного копирования. (По умолчанию: 60S). Он сразу же резервен независимо от резервного цикла, если Nginx выходит по сигналу ( SIGKILL ).
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_display |
| По умолчанию | - |
| Контекст | http, сервер, местоположение |
Description: включает или отключает обработчик отображения модуля.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_display_format <json | html | jsonp | prometheus> |
| По умолчанию | json |
| Контекст | http, сервер, местоположение |
Description: Устанавливает выходной формат обработчика дисплея. Если вы установите json , ответит документом JSON. Если вы установите html , ответите со встроенной живой панелью в HTML. Если вы установите jsonp , ответите функцией обратного вызова JSONP (по умолчанию: ngx_http_vhost_traffic_status_jsonp_callback ). Если вы установите prometheus , ответит документом Prometheus.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_display_jsonp обратный вызов |
| По умолчанию | ngx_http_vhost_traffic_status_jsonp_callback |
| Контекст | http, сервер, местоположение |
Description: Устанавливает имя обратного вызова для JSONP.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_display_sum_key name |
| По умолчанию | * |
| Контекст | http, сервер, местоположение |
Description: Устанавливает строку ключа SUM в JSON Serverzones Field. Строка ключа Sum по умолчанию - «*».
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_filter <on | off> |
| По умолчанию | на |
| Контекст | http, сервер, местоположение |
Description: включает или отключает функции фильтра.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_filter_by_host <On | Off> |
| По умолчанию | выключенный |
| Контекст | http, сервер, местоположение |
Description: включает или отключает поле клавиши по поле заголовка хоста. Если вы on и директива NGINX Server_name установит несколько или имени подстановочного знака, начиная со звездочки, например, « *.Example.org» и запрошен на сервер с именем хоста, такого как (a | b | c) .example.org или *.Example.org. Затем JSON Serverzones печатается следующим образом:
server {
server_name *.example.org;
vhost_traffic_status_filter_by_host on;
...
} ...
"serverZones" : {
"a.example.org" : {
...
},
"b.example.org" : {
...
},
"c.example.org" : {
...
}
...
},
... Он предоставляет ту же функцию, которая устанавливает vhost_traffic_status_filter_by_set_key $host .
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_filter_by_set_key key [ name ] |
| По умолчанию | - |
| Контекст | http, сервер, местоположение |
Description: Включает ключи от переменной, определенной пользователем. Ключ является ключом для расчета трафика. Имя является групповой строкой для расчета трафика. Ключ и имя могут содержать такие переменные, как $ host, $ server_name. Группа имени принадлежит filterZones если указано. Группа ключа принадлежит serverZones , если не указано второе имя аргумента. Пример с модулем GEOIP заключается в следующем:
server {
server_name example.org;
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
...
} ...
"serverZones" : {
...
},
"filterZones" : {
"country::example.org" : {
"KR" : {
"requestCounter" : ...,
"inBytes" : ...,
"outBytes" : ...,
"responses" :{
"1xx" : ...,
"2xx" : ...,
"3xx" : ...,
"4xx" : ...,
"5xx" : ...,
"miss" : ...,
"bypass" : ...,
"expired" : ...,
"stale" : ...,
"updating" : ...,
"revalidated" : ...,
"hit" : ...,
"scarce" : ...
},
"requestMsecCounter" : ...,
"requestMsec" : ...,
"requestMsecs" :{
"times" :[ ... ],
"msecs" :[ ... ]
},
},
"US" : {
...
},
...
},
...
},
...
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_filter_check_duplicate <On | Off> |
| По умолчанию | на |
| Контекст | http, сервер, местоположение |
Description: включает или отключает дедупликацию vhost_traffic_status_filter_by_set_key. Он обрабатывается только одним из дублирующих значений ( key + name ) в каждой директивах (HTTP, сервер, местоположение), если эта опция включена.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_filter_max_node номер [ string ...] |
| По умолчанию | 0 |
| Контекст | http |
Description: включает предел размера фильтра, используя указанное число и значения строки . Если число превышено, существующие узлы удаляются алгоритмом LRU. Номер аргумента - это размер узла, который будет ограничен. Значение по умолчанию 0 не ограничивает фильтры. Один узел является объектом в filterZones в документе JSON. Аргументы строки являются значениями соответствующих строк для значения группы группы, установленного директивой vhost_traffic_status_filter_by_set_key . Даже если только первая часть совпадает, сопоставление успешно, как и регулярное выражение /^string.*/ . По умолчанию, если вы не устанавливаете аргументы строк , то он применил для всех фильтров.
Для примеров:
$ vi nginx.conf
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
# The all filters are limited to a total of 16 nodes.
# vhost_traffic_status_filter_max_node 16
# The `/^uris.*/` and `/^client::ports.*/` group string patterns are limited to a total of 64 nodes.
vhost_traffic_status_filter_max_node 16 uris client::ports;
...
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $uri uris:: $server_name ;
vhost_traffic_status_filter_by_set_key $remote_port client::ports:: $server_name ;
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
}
} $ for i in {0..1000}; do curl -H 'Host: example.org' -i "http://localhost:80/test$i"; done

В приведенном выше примере /^uris.*/ и /^client::ports.*/ Групповые шаблоны строк ограничены в общей сложности 16 узлов. Другие фильтры, такие как country::.* НЕ ограничены.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_limit <on | off> |
| По умолчанию | на |
| Контекст | http, сервер, местоположение |
Description: включает или отключает предельные функции.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_limit_traffic Memport : size [ code ] |
| По умолчанию | - |
| Контекст | http, сервер, местоположение |
Description: включает предел трафика для указанного члена . Участник является элементом строки для ограничения трафика. Размер составляет размер (к/м/г) для ограничения трафика. Код является кодом для возврата в ответ на отклоненные запросы. (По умолчанию: 503)
Доступные строки member следующие:
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_limit_traffic_by_set_key Key Memport : size [ code ] |
| По умолчанию | - |
| Контекст | http, сервер, местоположение |
Description: включает предел трафика для указанного ключа и члена . Ключ - это строка ключа для ограничения трафика. Участник является элементом строки для ограничения трафика. Размер составляет размер (к/м/г) для ограничения трафика. Код является кодом для возврата в ответ на отклоненные запросы. (По умолчанию: 503)
Синтаксис key заключается в следующем:
group @[ subgroup @] name Доступные group строки следующие:
subgroup )subgroup ) Доступные строки member следующие:
Участник такой же, как vhost_traffic_status_limit_traffic Directive.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_limit_check_duplicate <On | Off> |
| По умолчанию | на |
| Контекст | http, сервер, местоположение |
Description: включает или отключает дедупликацию vhost_traffic_status_limit_by_set_key. Он обрабатывается только одним из дублирующих значений ( member | key + member ) в каждой директивах (HTTP, сервер, местоположение), если эта опция включена.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_set_by_filter $ |
| По умолчанию | - |
| Контекст | http, сервер, местоположение, если |
Description: Получите указанное значение состояния, хранящее в общей памяти. Он может приобрести почти все значения статуса, и полученное значение хранится в переменной $ , которая является первым аргументом.
Caveats: имя чувствителен к корпусу. Все возвращаемые значения принимают целое число.
Для примеров:
$requestCounter server/example.org/requestCounter$requestCounter filter/country::example.org@KR/requestCounter$requestCounter upstream@group/[email protected]:80/requestCounter$requestCounter upstream@alone/10.10.10.11:80/requestCounter$cacheHit cache/my_cache_name/cacheHit| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_average_method <AMM|WMA> [ period ] |
| По умолчанию | AMM 60s |
| Контекст | http, server, location |
Description: Sets the method which is a formula that calculate the average of response processing times. The period is an effective time of the values used for the average calculation.(Default: 60s) If period set to 0, effective time is ignored. In this case, the last average value is displayed even if there is no requests and after the elapse of time. The corresponding values are requestMsec and responseMsec in JSON.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_histogram_buckets second ... |
| По умолчанию | - |
| Контекст | http, server, location |
Description: Sets the observe buckets to be used in the histograms. By default, if you do not set this directive, it will not work. The second can be expressed in decimal places with a minimum value of 0.001(1ms). The maximum size of the buckets is 32. If this value is insufficient for you, change the NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN in the src/ngx_http_vhost_traffic_status_node.h
For examples:
0.005 0.01 0.05 0.1 0.5 1 5 100.005 0.01 0.05 0.1 Caveats: By default, if you do not set this directive, the histogram statistics does not work. The restored histograms by vhost_traffic_status_dump directive have no affected by changes to the buckets by vhost_traffic_status_histogram_buckets directive. So you must first delete the zone or the dump file before changing the buckets by vhost_traffic_status_histogram_buckets directive. Similar to the above, delete the dump file when using the histogram for the first time.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_bypass_limit <on|off> |
| По умолчанию | выключенный |
| Контекст | http, server, location |
Description: Enables or disables to bypass vhost_traffic_status_limit directives. The limit features is bypassed if this option is enabled. This is mostly useful if you want to connect the status web page like /status regardless of vhost_traffic_status_limit directives as follows:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_bypass_stats <on|off> |
| По умолчанию | выключенный |
| Контекст | http, server, location |
Description: Enables or disables to bypass vhost_traffic_status . The traffic status stats features is bypassed if this option is enabled. In other words, it is excluded from the traffic status stats. This is mostly useful if you want to ignore your request in status web page like /status as follows:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}To cut a release, create a changelog entry PR with git-chglog
version="v0.2.0"
git checkout -b "cut-${version}"
git-chglog -o CHANGELOG.md --next-tag "${version}"
git add CHANGELOG.md
sed -i "s/NGX_HTTP_VTS_MODULE_VERSION ".*/NGX_HTTP_VTS_MODULE_VERSION "${version}"/" src/ngx_http_vhost_traffic_status_module.h
git add src/ngx_http_vhost_traffic_status_module.h
git-chglog -t .chglog/RELNOTES.tmpl --next-tag "${version}" "${version}" | git commit -F-
After the PR is merged, create the new tag and release on the GitHub Releases.
Stream traffic status
Прометей
System protection
YoungJoo.Kim(김영주) [[email protected]]