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

vts: Модуль статуса трафика виртуального хоста NGINX

Установка

Вы можете установить этот модуль в любой дистрибутив, основанный на RHEL, включая, но не ограничиваясь:

  • RedHat Enterprise Linux 7, 8, 9 и 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-vts
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-vts

Включите модуль, добавив следующее в верхней части файла /etc/nginx/nginx.conf:

load_module modules/ngx_http_vhost_traffic_status_module.so;

Этот документ описывает nginx-module-vts v0.2.5, выпущенный 28 декабря 2025 года.


CI License

Модуль статуса трафика виртуального хоста Nginx

Тест

Запустите sudo prove -r t после установки этого модуля. sudo требуется, потому что тест требует, чтобы Nginx слушал на порту 80.

Скриншоты

screenshot-vts-0

screenshot-vts-1

Синопсис

http {
    vhost_traffic_status_zone;

    ...

    server {

        ...

        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
}

Описание

Это модуль Nginx, который предоставляет доступ к информации о статусе виртуального хоста. Он содержит текущий статус, такой как сервера, upstream, кеши. Это похоже на мониторинг живой активности в nginx plus. Встроенный HTML также взят с демонстрационной страницы старой версии.

Прежде всего, директива vhost_traffic_status_zone обязательна, а затем, если установлена директива vhost_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": ...,
    "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":...
            }
        },
        ...
    }
}
  • main
  • Базовая версия, время работы((nowMsec - loadMsec)/1000)
  • nowMsec, loadMsec в миллисекундах.
  • connections
  • Общее количество соединений и запросов (так же, как в stub_status_module в NGINX)
  • sharedZones
  • Информация о разделяемой памяти, используемой в nginx-module-vts.
  • serverZones
  • Трафик (входящий/исходящий) и количество запросов и ответов, а также коэффициент попадания кеша для каждой серверной зоны
  • Общий трафик (входящий/исходящий) и количество запросов и ответов (имя зоны - *) и коэффициент попадания
  • filterZones
  • Трафик (входящий/исходящий) и количество запросов и ответов, а также коэффициент попадания кеша для каждой серверной зоны, отфильтрованной через директиву vhost_traffic_status_filter_by_set_key
  • Общий трафик (входящий/исходящий) и количество запросов и ответов (имя зоны - *) и коэффициент попадания, отфильтрованный через директиву vhost_traffic_status_filter_by_set_key
  • upstreamZones
  • Трафик (входящий/исходящий) и количество запросов и ответов для каждого сервера в каждой группе upstream
  • Текущие настройки (weight, maxfails, failtimeout...) в nginx.conf
  • cacheZones
  • Трафик (входящий/исходящий) и размер (вместимость/используемый) и коэффициент попадания для каждой зоны кеша при использовании директивы proxy_cache.

Объекты overCounts в JSON-документе в основном предназначены для 32-битной системы и будут увеличиваться на 1, если их значение переполнено. Директива vhost_traffic_status_display_format устанавливает формат вывода по умолчанию, который может быть json, jsonp, html, prometheus. (По умолчанию: json)

Расчет трафика осуществляется следующим образом:

  • ServerZones
  • in += requested_bytes
  • out += sent_bytes
  • FilterZones
  • in += requested_bytes через фильтр
  • out += sent_bytes через фильтр
  • UpstreamZones
  • in += requested_bytes через ServerZones
  • out += sent_bytes через ServerZones
  • cacheZones
  • in += requested_bytes через ServerZones
  • out += sent_bytes через ServerZones

Все расчеты выполняются на этапе обработки логов Nginx. Внутренние перенаправления (X-Accel-Redirect или error_page) не учитываются в UpstreamZones.

Предостережения: этот модуль зависит от системы логирования nginx (NGX_HTTP_LOG_PHASE: последний этап http nginx), поэтому трафик может в определенных обстоятельствах отличаться от реального трафика по пропускной способности. Websocket, отмененные загрузки могут быть причиной неточностей. Работа модуля не зависит от того, включена или отключена директива access_log. Снова, этот модуль работает хорошо с "access_log off". При использовании нескольких доменов он устанавливает первый домен (слева) директивы server_name. Если вы не хотите этого, смотрите директивы vhost_traffic_status_filter_by_host, vhost_traffic_status_filter_by_set_key.

Смотрите следующие модули для статистики трафика stream: * nginx-module-sts * nginx-module-stream-sts

Расчеты и интервалы

Средние значения

Все средние значения в настоящее время рассчитываются как AMM (арифметическое среднее) за последние 64 значения.

Управление

Можно сбросить или удалить зоны трафика через строку запроса. Запрос отвечает JSON-документом.

  • Синтаксис URI
  • /{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.

Доступные аргументы запроса следующие: * cmd=\<status|reset|delete> * status * Возвращает статус зон трафика в формате json, как status/format/json. * reset * Сбрасывает зоны трафика без удаления узлов в общей памяти. (= инициализация до 0) * delete * Удаляет зоны трафика в общей памяти. При повторном запросе они будут воссозданы. * group=\<server|filter|upstream@alone|upstream@group|cache|*> * server * filter * upstream@alone * upstream@group * cache * * * zone=name * server * name * filter * filter_group@name * upstream@group * upstream_group@name * upstream@alone * @name * cache * name

Для получения статуса зон трафика на лету

Это похоже на status/format/json, за исключением того, что можно получить каждую зону.

Для получения всех зон

  • Это точно так же, как status/format/json.
  • /status/control?cmd=status&group=*

Для получения групповых зон

  • mainZones
  • /status/control?cmd=status&group=server&zone=::main
  • serverZones
  • /status/control?cmd=status&group=server&zone=*
  • filterZones
  • /status/control?cmd=status&group=filter&zone=*
  • upstreamZones
  • /status/control?cmd=status&group=upstream@group&zone=*
  • upstreamZones::nogroups
  • /status/control?cmd=status&group=upstream@alone&zone=*
  • cacheZones
  • /status/control?cmd=status&group=cache&zone=*

Значения mainZones являются значениями статуса по умолчанию, включая hostName, moduleVersion, nginxVersion, loadMsec, nowMsec, connections.

Для получения каждой зоны

  • одиночная зона в serverZones
  • /status/control?cmd=status&group=server&zone=name
  • одиночная зона в filterZones
  • /status/control?cmd=status&group=filter&zone=filter_group@name
  • одиночная зона в upstreamZones
  • /status/control?cmd=status&group=upstream@group&zone=upstream_group@name
  • одиночная зона в upstreamZones::nogroups
  • /status/control?cmd=status&group=upstream@alone&zone=name
  • одиночная зона в cacheZones
  • /status/control?cmd=status&group=cache&zone=name

Для сброса зон трафика на лету

Сбрасывает значения указанных зон до 0.

Для полного сброса зон

  • /status/control?cmd=reset&group=*

Для сброса групповых зон

  • serverZones
  • /status/control?cmd=reset&group=server&zone=*
  • filterZones
  • /status/control?cmd=reset&group=filter&zone=*
  • upstreamZones
  • /status/control?cmd=reset&group=upstream@group&zone=*
  • upstreamZones::nogroups
  • /status/control?cmd=reset&group=upstream@alone&zone=*
  • cacheZones
  • /status/control?cmd=reset&group=cache&zone=*

Для сброса каждой зоны

  • одиночная зона в serverZones
  • /status/control?cmd=reset&group=server&zone=name
  • одиночная зона в filterZones
  • /status/control?cmd=reset&group=filter&zone=filter_group@name
  • одиночная зона в upstreamZones
  • /status/control?cmd=reset&group=upstream@group&zone=upstream_group@name
  • одиночная зона в upstreamZones::nogroups
  • /status/control?cmd=reset&group=upstream@alone&zone=name
  • одиночная зона в cacheZones
  • /status/control?cmd=reset&group=cache&zone=name

Для удаления зон трафика на лету

Удаляет указанные зоны в общей памяти.

Для полного удаления зон

  • /status/control?cmd=delete&group=*

Для удаления групповых зон

  • serverZones
  • /status/control?cmd=delete&group=server&zone=*
  • filterZones
  • /status/control?cmd=delete&group=filter&zone=*
  • upstreamZones
  • /status/control?cmd=delete&group=upstream@group&zone=*
  • upstreamZones::nogroups
  • /status/control?cmd=delete&group=upstream@alone&zone=*
  • cacheZones
  • /status/control?cmd=delete&group=cache&zone=*

Для удаления каждой зоны

  • одиночная зона в serverZones
  • /status/control?cmd=delete&group=server&zone=name
  • одиночная зона в filterZones
  • /status/control?cmd=delete&group=filter&zone=filter_group@name
  • одиночная зона в upstreamZones
  • /status/control?cmd=delete&group=upstream@group&zone=upstream_group@name
  • одиночная зона в upstreamZones::nogroups
  • /status/control?cmd=delete&group=upstream@alone&zone=name
  • одиночная зона в cacheZones
  • /status/control?cmd=delete&group=cache&zone=name

Установка

Можно получить значения статуса в конфигурации nginx отдельно, используя директиву vhost_traffic_status_set_by_filter. Можно получить почти все значения статуса, и полученное значение сохраняется в пользовательской переменной, которая является первым аргументом.

  • Синтаксис директивы
  • vhost_traffic_status_set_by_filter $variable 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::*;

    ...
    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/backend@10.10.10.11:80/requestCounter;
            proxy_pass http://backend;
        }
    }
}

Вышеуказанные настройки следующие:

  • $requestCounter
  • serverZones -> example.org -> requestCounter
  • $requestCounterKR
  • filterZones -> country::example.org -> KR -> requestCounter
  • $requestCounterB1
  • upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter

Пожалуйста, смотрите директиву vhost_traffic_status_set_by_filter для подробного использования.

JSON

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

Json, используемый статусом

/{status_uri}/format/json

/{status_uri}/control?cmd=status&...

  • hostName
  • Имя хоста.
  • moduleVersion
  • Версия модуля в формате {version}(|.dev.{commit}).
  • nginxVersion
  • Версия предоставленного.
  • loadMsec
  • Время загрузки процесса в миллисекундах.
  • nowMsec
  • Текущее время в миллисекундах.
  • connections
  • active
    • Текущее количество активных клиентских соединений.
  • reading
    • Общее количество читающих клиентских соединений.
  • writing
    • Общее количество пишущих клиентских соединений.
  • waiting
    • Общее количество ожидающих клиентских соединений.
  • accepted
    • Общее количество принятых клиентских соединений.
  • handled
    • Общее количество обработанных клиентских соединений.
  • requests
    • Общее количество запрошенных клиентских соединений.
  • sharedZones
  • name
    • Имя разделяемой памяти, указанное в конфигурации. (по умолчанию: vhost_traffic_status)
  • maxSize
    • Ограничение на максимальный размер разделяемой памяти, указанное в конфигурации.
  • usedSize
    • Текущий размер разделяемой памяти.
  • usedNode
    • Текущее количество узлов, используемых в общей памяти. Можно получить приблизительный размер одного узла по следующей формуле: (usedSize / usedNode)
  • serverZones
  • requestCounter
    • Общее количество клиентских запросов, полученных от клиентов.
  • inBytes
    • Общее количество байтов, полученных от клиентов.
  • outBytes
    • Общее количество байтов, отправленных клиентам.
  • responses
    • 1xx, 2xx, 3xx, 4xx, 5xx
    • Количество ответов со статус-кодами 1xx, 2xx, 3xx, 4xx и 5xx.
    • miss
    • Количество пропусков кеша.
    • bypass
    • Количество обходов кеша.
    • expired
    • Количество истекших кешей.
    • stale
    • Количество устаревших кешей.
    • updating
    • Количество обновлений кеша.
    • revalidated
    • Количество переутверждений кеша.
    • hit
    • Количество попаданий кеша.
    • scarce
    • Количество дефицитов кеша.
  • requestMsecCounter
    • Количество накопленного времени обработки запросов в миллисекундах.
  • requestMsec
    • Среднее время обработки запросов в миллисекундах.
  • requestMsecs
    • times
    • Времена в миллисекундах при обработке запросов.
    • msecs
    • Времена обработки запросов в миллисекундах.
  • requestBuckets
    • msecs
    • Значения ведра гистограммы, установленные директивой vhost_traffic_status_histogram_buckets.
    • counters
    • Накопленные значения для причины, по которой каждое значение ведра больше или равно времени обработки запроса.
  • filterZones
  • Предоставляет те же поля, что и serverZones, за исключением того, что включены имена групп.
  • upstreamZones
  • server
    • Адрес сервера.
  • requestCounter
    • Общее количество клиентских соединений, перенаправленных на этот сервер.
  • inBytes
    • Общее количество байтов, полученных от этого сервера.
  • outBytes
    • Общее количество байтов, отправленных на этот сервер.
  • responses
    • 1xx, 2xx, 3xx, 4xx, 5xx
    • Количество ответов со статус-кодами 1xx, 2xx, 3xx, 4xx и 5xx.
  • requestMsecCounter
    • Количество накопленного времени обработки запросов, включая upstream, в миллисекундах.
  • requestMsec
    • Среднее время обработки запросов, включая upstream, в миллисекундах.
  • requestMsecs
    • times
    • Времена в миллисекундах при обработке запросов.
    • msecs
    • Времена обработки запросов, включая upstream, в миллисекундах.
  • requestBuckets
    • msecs
    • Значения ведра гистограммы, установленные директивой vhost_traffic_status_histogram_buckets.
    • counters
    • Накопленные значения для причины, по которой каждое значение ведра больше или равно времени обработки запроса, включая upstream.
  • responseMsecCounter
    • Количество накопленного времени обработки только ответов upstream в миллисекундах.
  • responseMsec
    • Среднее время обработки только ответов upstream в миллисекундах.
  • responseMsecs
    • times
    • Времена в миллисекундах при обработке запросов.
    • msecs
    • Времена обработки только ответов upstream в миллисекундах.
  • responseBuckets
    • msecs
    • Значения ведра гистограммы, установленные директивой vhost_traffic_status_histogram_buckets.
    • counters
    • Накопленные значения для причины, по которой каждое значение ведра больше или равно времени обработки только ответов upstream.
  • weight
    • Текущая настройка weight сервера.
  • maxFails
    • Текущая настройка max_fails сервера.
  • failTimeout
    • Текущая настройка fail_timeout сервера.
  • backup
    • Текущая настройка backup сервера.
  • down
    • Текущая настройка down сервера. В основном, это просто отметка для сервера модуля ngx_http_upstream_module (например, server backend3.example.com down), а не фактическое состояние upstream сервера. Оно изменится на фактическое состояние, если вы включите директиву зоны upstream.
  • cacheZones
  • maxSize
    • Ограничение на максимальный размер кеша, указанное в конфигурации. Если max_size в директиве proxy_cache_path не указано, то по умолчанию присваивается значение, зависящее от системы, NGX_MAX_OFF_T_VALUE. Другими словами, это значение из nginx, а не то, что я указал.
  • usedSize
    • Текущий размер кеша. Это значение берется из nginx, как и значение maxSize выше.
  • inBytes
    • Общее количество байтов, полученных из кеша.
  • outBytes
    • Общее количество байтов, отправленных из кеша.
  • responses
    • miss
    • Количество пропусков кеша.
    • bypass
    • Количество обходов кеша.
    • expired
    • Количество истекших кешей.
    • stale
    • Количество устаревших кешей.
    • updating
    • Количество обновлений кеша.
    • revalidated
    • Количество переутверждений кеша.
    • hit
    • Количество попаданий кеша.
    • scarce
    • Количество дефицитов кеша.

Json, используемый управлением

/{status_uri}/control?cmd=reset&...

/{status_uri}/control?cmd=delete&...

  • processingReturn
  • Результат true или false.
  • processingCommandString
  • Запрошенная строка команды.
  • processingGroupString
  • Запрошенная строка группы.
  • processingZoneString
  • Запрошенная строка зоны.
  • processingCounts
  • Фактическое количество обработок.

Переменные

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

  • $vts_request_counter
  • Общее количество клиентских запросов, полученных от клиентов.
  • $vts_in_bytes
  • Общее количество байтов, полученных от клиентов.
  • $vts_out_bytes
  • Общее количество байтов, отправленных клиентам.
  • $vts_1xx_counter
  • Количество ответов со статус-кодами 1xx.
  • $vts_2xx_counter
  • Количество ответов со статус-кодами 2xx.
  • $vts_3xx_counter
  • Количество ответов со статус-кодами 3xx.
  • $vts_4xx_counter
  • Количество ответов со статус-кодами 4xx.
  • $vts_5xx_counter
  • Количество ответов со статус-кодами 5xx.
  • $vts_cache_miss_counter
  • Количество пропусков кеша.
  • $vts_cache_bypass_counter
  • Количество обходов кеша.
  • $vts_cache_expired_counter
  • Количество истекших кешей.
  • $vts_cache_stale_counter
  • Количество устаревших кешей.
  • $vts_cache_updating_counter
  • Количество обновлений кеша.
  • $vts_cache_revalidated_counter
  • Количество переутверждений кеша.
  • $vts_cache_hit_counter
  • Количество попаданий кеша.
  • $vts_cache_scarce_counter
  • Количество дефицитов кеша.
  • $vts_request_time_counter
  • Количество накопленного времени обработки запросов.
  • $vts_request_time
  • Среднее время обработки запросов.

Ограничение

Можно ограничить общий трафик для каждого хоста, используя директиву 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 до 64G и 1024G соответственно. Работает индивидуально для каждого домена, если включена директива 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 соответственно.

Для ограничения трафика для upstream

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@backend@10.10.10.17:80 in:512G;
            vhost_traffic_status_limit_traffic_by_set_key UG@backend@10.10.10.18:80 in:1024G;
            proxy_pass http://backend;
        }

        ...

    }
}
  • Ограничивает общий трафик, направляемый в upstream backend на example.org, до 512G и 1024G для каждого пира.

Предостережения: Трафик - это накопленный перенос или счетчик, а не пропускная способность.

Сценарии использования

Можно рассчитать индивидуальную статистику, определяемую пользователем, используя директиву vhost_traffic_status_filter_by_set_key.

Для расчета трафика для отдельной страны с использованием GeoIP

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;
        }
    }
}
  • Рассчитывает трафик для отдельного тома хранения, соответствующего регулярному выражению директивы location.

Для расчета трафика для отдельного user agent

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

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.

Предостережения: $status переменная доступна в nginx-(1.3.2, 1.2.2).

Для расчета трафика для динамического dns

Если домен имеет несколько DNS A записей, вы можете рассчитать трафик для отдельных IP-адресов для домена, используя функцию фильтра или переменную в 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;
        }
    }
}
  • Рассчитывает трафик для отдельных IP-адресов для домена elb.example.org. Если elb.example.org имеет несколько DNS A записей, будут отображаться все 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;
        }
    }
}
  • Рассчитывает трафик для отдельных IP-адресов для домена elb.example.org. Если DNS A запись elb.example.org изменяется, будут отображаться как старый IP, так и новый IP в ::nogroups. В отличие от первой настройки группы upstream, вторая настройка работает хорошо, даже если DNS A записи изменяются администратором DNS.

Предостережения: Пожалуйста, смотрите больше деталей о DNS NGINX в 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;
        }
    }
}

Для постоянного хранения статистических данных

http {
    vhost_traffic_status_zone;
    vhost_traffic_status_dump /var/log/nginx/vts.db;

    ...

    server {

        ...

    }
}
  • Директива vhost_traffic_status_dump сохраняет статистические данные постоянно, даже если система была перезагружена или nginx был перезапущен. Пожалуйста, смотрите директиву vhost_traffic_status_dump для подробного использования.

Настройка

Для настройки после установки модуля

  1. Вам нужно изменить строку {{uri}} на ваш статусный URI в status.template.html следующим образом:

    shell> vi share/status.template.html
    
    var vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000;
    

  2. Затем настройте и скопируйте status.template.html в корневой каталог сервера следующим образом:

    shell> cp share/status.template.html /usr/share/nginx/html/status.html
    

  3. Настройте nginx.conf

       server {
           server_name example.org;
           root /usr/share/nginx/html;
    
           # Перенаправить запросы для / на /status.html
           location = / {
               return 301 /status.html;
           }
    
           location = /status.html {}
    
           # Все, что начинается с /status (за исключением /status.html), обрабатывается обработчиком статуса
           location /status {
               vhost_traffic_status_display;
               vhost_traffic_status_display_format json;
           }
       }
    

  4. Получите доступ к вашему html.

    http://example.org/status.html
    

Для настройки до установки модуля

  1. Измените share/status.template.html (не изменяйте строку {{uri}})

  2. Воссоздайте 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
    

  3. Добавьте модуль в конфигурацию сборки, добавив --add-module=/path/to/nginx-module-vts

  4. Соберите бинарный файл nginx.

  5. Установите бинарный файл nginx.

Директивы

draw_io_vts_diagram

vhost_traffic_status

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

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

vhost_traffic_status_zone

- -
Синтаксис vhost_traffic_status_zone [shared:name:size]
По умолчанию shared:vhost_traffic_status:1m
Контекст http

Описание: Устанавливает параметры для зоны разделяемой памяти, которая будет хранить состояния для различных ключей. Кеш разделяется между всеми рабочими процессами. В большинстве случаев размер разделяемой памяти, используемой nginx-module-vts, не увеличивается значительно. Размер разделяемой памяти увеличивается довольно сильно при использовании директивы vhost_traffic_status_filter_by_set_key, но если ключи фильтра фиксированы (например, общее количество кодов стран составляет около 240), он не будет постоянно увеличиваться.

Если вы используете директиву vhost_traffic_status_filter_by_set_key, установите ее следующим образом:

  • Установите размер разделяемой памяти по умолчанию более 32M. (vhost_traffic_status_zone shared:vhost_traffic_status:32m)
  • Если сообщение ("ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone") напечатано в error_log, увеличьте его до более чем (usedSize * 2).

vhost_traffic_status_dump

- -
Синтаксис vhost_traffic_status_dump path [period]
По умолчанию -
Контекст http

Описание: Включает дамп и восстановление статистических данных. path - это место для дампа статистических данных. (например, /var/log/nginx/vts.db) period - это время цикла резервного копирования. (По умолчанию: 60s) Он будет резервироваться немедленно независимо от цикла резервного копирования, если nginx завершится по сигналу (SIGKILL).

vhost_traffic_status_display

- -
Синтаксис vhost_traffic_status_display
По умолчанию -
Контекст http, server, location

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

vhost_traffic_status_display_format

- -
Синтаксис vhost_traffic_status_display_format \<json|html|jsonp|prometheus>
По умолчанию json
Контекст http, server, location

Описание: Устанавливает формат вывода обработчика отображения. Если вы установите json, ответит JSON-документом. Если вы установите html, ответит встроенной живой панелью мониторинга в HTML. Если вы установите jsonp, ответит функцией обратного вызова JSONP (по умолчанию: ngx_http_vhost_traffic_status_jsonp_callback). Если вы установите prometheus, ответит документом prometheus.

vhost_traffic_status_display_jsonp

- -
Синтаксис vhost_traffic_status_display_jsonp callback
По умолчанию ngx_http_vhost_traffic_status_jsonp_callback
Контекст http, server, location

Описание: Устанавливает имя обратного вызова для JSONP.

vhost_traffic_status_display_sum_key

- -
Синтаксис vhost_traffic_status_display_sum_key name
По умолчанию *
Контекст http, server, location

Описание: Устанавливает строку суммы ключа в поле serverZones JSON. Строка суммы ключа по умолчанию - "*".

vhost_traffic_status_filter

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

Описание: Включает или отключает функции фильтра.

vhost_traffic_status_filter_by_host

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

Описание: Включает или отключает ключи по полю заголовка Host. Если вы установите on и директива server_name nginx установлена на несколько или подстановочное имя, начинающееся с астериска, например, “.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

- -
Синтаксис vhost_traffic_status_filter_by_set_key key [name]
По умолчанию -
Контекст http, server, location

Описание: Включает ключи по пользовательской переменной. key - это строка ключа для расчета трафика. name - это строка группы для расчета трафика. key и name могут содержать переменные, такие как $host, $server_name. Группа name принадлежит filterZones, если указана. Группа key принадлежит serverZones, если не указана вторая аргумент name. Пример с модулем 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

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

Описание: Включает или отключает дедупликацию vhost_traffic_status_filter_by_set_key. Обрабатывается только одно из дублирующих значений (key + name) в каждой директиве (http, server, location), если эта опция включена.

vhost_traffic_status_filter_max_node

- -
Синтаксис vhost_traffic_status_filter_max_node number [string ...]
По умолчанию 0
Контекст http

Описание: Включает ограничение размера фильтра с использованием указанных number и string значений. Если number превышен, существующие узлы удаляются по алгоритму LRU. Аргумент number - это размер узла, который будет ограничен. Значение по умолчанию 0 не ограничивает фильтры. Один узел - это объект в filterZones в JSON-документе. Аргументы string - это соответствующие строковые значения для значения группы, установленного директивой vhost_traffic_status_filter_by_set_key. Даже если совпадает только первая часть, совпадение успешно, как регулярное выражение /^string.*/. По умолчанию, если вы не устанавливаете аргументы string, они применяются ко всем фильтрам.

Например:

$ vi nginx.conf

http {

    geoip_country /usr/share/GeoIP/GeoIP.dat;

    vhost_traffic_status_zone;

    # Все фильтры ограничены до общего количества 16 узлов.
    # vhost_traffic_status_filter_max_node 16

    # Шаблоны строк групп `/^uris.*/` и `/^client::ports.*/` ограничены до общего количества 64 узлов.
    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

screenshot-vts-filter-max-node

В приведенном выше примере шаблоны строк групп /^uris.*/ и /^client::ports.*/ ограничены до общего количества 16 узлов. Остальные фильтры, такие как country::.*, не ограничены.

vhost_traffic_status_limit

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

Описание: Включает или отключает функции ограничения.

vhost_traffic_status_limit_traffic

- -
Синтаксис vhost_traffic_status_limit_traffic member:size [code]
По умолчанию -
Контекст http, server, location

Описание: Включает ограничение трафика для указанного member. member - это строка члена для ограничения трафика. size - это размер (k/m/g) для ограничения трафика. code - это код, который возвращается в ответ на отклоненные запросы. (По умолчанию: 503)

Доступные строки member следующие: * request * Общее количество клиентских запросов, полученных от клиентов. * in * Общее количество байтов, полученных от клиентов. * out * Общее количество байтов, отправленных клиентам. * 1xx * Количество ответов со статус-кодами 1xx. * 2xx * Количество ответов со статус-кодами 2xx. * 3xx * Количество ответов со статус-кодами 3xx. * 4xx * Количество ответов со статус-кодами 4xx. * 5xx * Количество ответов со статус-кодами 5xx. * cache_miss * Количество пропусков кеша. * cache_bypass * Количество обходов кеша. * cache_expired * Количество истекших кешей. * cache_stale * Количество устаревших кешей. * cache_updating * Количество обновлений кеша. * cache_revalidated * Количество переутверждений кеша. * cache_hit * Количество попаданий кеша. * cache_scarce * Количество дефицитов кеша.

vhost_traffic_status_limit_traffic_by_set_key

- -
Синтаксис vhost_traffic_status_limit_traffic_by_set_key key member:size [code]
По умолчанию -
Контекст http, server, location

Описание: Включает ограничение трафика для указанного key и member. key - это строка ключа для ограничения трафика. member - это строка члена для ограничения трафика. size - это размер (k/m/g) для ограничения трафика. code - это код, который возвращается в ответ на отклоненные запросы. (По умолчанию: 503)

Синтаксис key следующий: * group@[subgroup@]name

Доступные строки group следующие: * NO * Группа сервера. * UA * Группа upstream alone. * UG * Группа upstream group. (используйте subgroup) * CC * Группа кеша. * FG * Группа фильтра. (используйте subgroup)

Доступные строки member следующие: * request * Общее количество клиентских запросов, полученных от клиентов. * in * Общее количество байтов, полученных от клиентов. * out * Общее количество байтов, отправленных клиентам. * 1xx * Количество ответов со статус-кодами 1xx. * 2xx * Количество ответов со статус-кодами 2xx. * 3xx * Количество ответов со статус-кодами 3xx. * 4xx * Количество ответов со статус-кодами 4xx. * 5xx * Количество ответов со статус-кодами 5xx. * cache_miss * Количество пропусков кеша. * cache_bypass * Количество обходов кеша. * cache_expired * Количество истекших кешей. * cache_stale * Количество устаревших кешей. * cache_updating * Количество обновлений кеша. * cache_revalidated * Количество переутверждений кеша. * cache_hit * Количество попаданий кеша. * cache_scarce * Количество дефицитов кеша.

member такой же, как и директива vhost_traffic_status_limit_traffic.

vhost_traffic_status_limit_check_duplicate

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

Описание: Включает или отключает дедупликацию vhost_traffic_status_limit_by_set_key. Обрабатывается только одно из дублирующих значений (member | key + member) в каждой директиве (http, server, location), если эта опция включена.

vhost_traffic_status_set_by_filter

- -
Синтаксис vhost_traffic_status_set_by_filter $variable group/zone/name
По умолчанию -
Контекст http, server, location, if

Описание: Получает указанное значение статуса, хранящееся в общей памяти. Можно получить почти все значения статуса, и полученное значение сохраняется в $variable, который является первым аргументом.

  • group
  • server
  • filter
  • upstream@alone
  • upstream@group
  • cache
  • zone
  • server
    • name
  • filter
    • filter_group@name
  • upstream@group
    • upstream_group@name
  • upstream@alone
    • @name
  • cache
    • name
  • name
  • requestCounter
    • Общее количество клиентских запросов, полученных от клиентов.
  • requestMsecCounter
    • Количество накопленного времени обработки запросов в миллисекундах.
  • requestMsec
    • Среднее время обработки запросов в миллисекундах.
  • responseMsecCounter
    • Количество накопленного времени обработки только ответов upstream в миллисекундах.
  • responseMsec
    • Среднее время обработки только ответов upstream в миллисекундах.
  • inBytes
    • Общее количество байтов, полученных от клиентов.
  • outBytes
    • Общее количество байтов, отправленных клиентам.
  • 1xx, 2xx, 3xx, 4xx, 5xx
    • Количество ответов со статус-кодами 1xx, 2xx, 3xx, 4xx и 5xx.
  • cacheMaxSize
    • Ограничение на максимальный размер кеша, указанное в конфигурации.
  • cacheUsedSize
    • Текущий размер кеша.
  • cacheMiss
    • Количество пропусков кеша.
  • cacheBypass
    • Количество обходов кеша.
  • cacheExpired
    • Количество истекших кешей.
  • cacheStale
    • Количество устаревших кешей.
  • cacheUpdating
    • Количество обновлений кеша.
  • cacheRevalidated
    • Количество переутверждений кеша.
  • cacheHit
    • Количество попаданий кеша.
  • cacheScarce
    • Количество дефицитов кеша.
  • weight
    • Текущая настройка веса сервера.
  • maxFails
    • Текущая настройка max_fails сервера.
  • failTimeout
    • Текущая настройка fail_timeout сервера.
  • backup
    • Текущая настройка backup сервера. (0|1)
  • down
    • Текущая настройка down сервера. (0|1)

Предостережения: name чувствителен к регистру. Все возвращаемые значения принимают целочисленный тип.

Например: * requestCounter в serverZones * vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter * requestCounter в filterZones * vhost_traffic_status_set_by_filter $requestCounter filter/country::example.org@KR/requestCounter * requestCounter в upstreamZones * vhost_traffic_status_set_by_filter $requestCounter upstream@group/backend@10.10.10.11:80/requestCounter * requestCounter в upstreamZones::nogroups * vhost_traffic_status_set_by_filter $requestCounter upstream@alone/10.10.10.11:80/requestCounter * cacheHit в cacheZones * vhost_traffic_status_set_by_filter $cacheHit cache/my_cache_name/cacheHit

vhost_traffic_status_average_method

- -
Синтаксис vhost_traffic_status_average_method \<AMM|WMA> [period]
По умолчанию AMM 60s
Контекст http, server, location

Описание: Устанавливает метод, который является формулой для расчета среднего времени обработки ответов. period - это эффективное время значений, используемых для расчета среднего. (По умолчанию: 60s) Если period установлено на 0, эффективное время игнорируется. В этом случае последнее среднее значение отображается, даже если запросов нет, и по истечении времени. Соответствующие значения - это requestMsec и responseMsec в JSON.

vhost_traffic_status_histogram_buckets

- -
Синтаксис vhost_traffic_status_histogram_buckets second ...
По умолчанию -
Контекст http, server, location

Описание: Устанавливает наблюдаемые ведра, которые будут использоваться в гистограммах. По умолчанию, если вы не установите эту директиву, она не будет работать. second может быть выражен в десятичных дробях с минимальным значением 0.001 (1 мс). Максимальный размер ведер составляет 32. Если этого значения недостаточно для вас, измените NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN в src/ngx_http_vhost_traffic_status_node.h.

Например: * vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1 0.5 1 5 10 * Наблюдаемые ведра - [5ms 10ms 50ms 100ms 500ms 1s 5s 10s]. * vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1 * Наблюдаемые ведра - [5ms 10ms 50ms 100ms].

Предостережения: По умолчанию, если вы не установите эту директиву, статистика гистограммы не работает. Восстановленные гистограммы с помощью директивы vhost_traffic_status_dump не затрагиваются изменениями ведер с помощью директивы vhost_traffic_status_histogram_buckets. Поэтому вам сначала нужно удалить зону или файл дампа перед изменением ведер с помощью директивы vhost_traffic_status_histogram_buckets. Аналогично вышеуказанному, удалите файл дампа, когда используете гистограмму в первый раз.

vhost_traffic_status_bypass_limit

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

Описание: Включает или отключает обход директив vhost_traffic_status_limit. Функции ограничения обходятся, если эта опция включена. Это в основном полезно, если вы хотите подключиться к веб-странице статуса, такой как /status, независимо от директив vhost_traffic_status_limit, как показано ниже:

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

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

Описание: Включает или отключает обход vhost_traffic_status. Функции статистики трафика обходятся, если эта опция включена. Другими словами, она исключается из статистики трафика. Это в основном полезно, если вы хотите игнорировать ваш запрос на веб-странице статуса, такой как /status, как показано ниже:

http {
    vhost_traffic_status_zone;

    ...

    server {

        ...

        location /status {
            vhost_traffic_status_bypass_stats on;
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
}

vhost_traffic_status_stats_by_upstream

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

Описание: Включает или отключает статистику upstreamZone. upstreamZone в функциях статистики трафика обходится, если эта опция отключена. Другими словами, она исключается из статистики трафика. Это в основном полезно, если вы хотите отключить сбор статистики для upstream серверов, чтобы снизить нагрузку на ЦП.

http {
    vhost_traffic_status_zone;
    vhost_traffic_status_stats_by_upstream off;

    proxy_cache_path /var/cache/nginx keys_zone=zone1:1m max_size=1g inactive=24h;
    upstream backend {
       ...
    }
    ...

    server {

        ...

        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
        location /backend {
            proxy_cache zone1;
            proxy_pass http://backend;
        }
    }
}

vhost_traffic_status_measure_status_codes

Позволяет отслеживать конкретные коды статуса HTTP или все коды статуса в модуле статуса трафика Vhost.

- -
Синтаксис vhost_traffic_status_measure_status_codes [all] [status_code1] [status_code2] ...
По умолчанию off
Контекст http

Параметры

  • status_code1, status_code2, ...: Конкретные коды статуса HTTP для отслеживания (100-599)
  • all: Отслеживать все коды статуса HTTP

Примеры

Отслеживание конкретных кодов статуса:

vhost_traffic_status_measure_status_codes 200 404 500;

Отслеживание всех кодов статуса:

vhost_traffic_status_measure_status_codes all;

Описание

  • По умолчанию отслеживание конкретных кодов статуса не включено
  • Коды статуса должны быть в порядке возрастания
  • Принимаются только действительные коды статуса HTTP между 100 и 599
  • При использовании all будут отслеживаться все коды статуса

Выпуски

Чтобы выпустить релиз, создайте PR с записью в журнал изменений с помощью 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-

После слияния PR создайте новый тег и релиз на GitHub Releases.

См. также