Nginx Vhost Traffic Status

Nginx Vhost Traffic Status (nginx-module-vts) — модуль для Nginx, позволяющий в реальном времени получить подробную статистику по трафику на нужном нам ресурсе.

Установка Vhost Traffic Status.

Ставить будем на CentOS 7 и поступим как обычно — соберём отдельный модуль, без пересборки самого Nginx. Доустановим необходимое:

# yum install git make gcc autoconf wget pcre-devel zlib-devel

Заберём исходники:

# nginx -v
nginx version: nginx/1.15.0
# cd /usr/local/src/
# wget http://nginx.org/download/nginx-1.15.0.tar.gz
# git clone git://github.com/vozlt/nginx-module-vts.git
# tar xvfz nginx-1.15.0.tar.gz

Соберём модуль и поставим его:

# cd ./nginx-1.15.0
# ./configure --with-compat --add-dynamic-module=../nginx-module-vts/
# make modules
# cp objs/ngx_http_vhost_traffic_status_module.so /etc/nginx/modules/

Настройка Vhost Traffic Status.

Для запуска модуля в работу, добавляем нужное в конфиг.

Загрузку модуля в основном конфиге nginx.conf:

# cat /etc/nginx/nginx.conf | grep traffic_status_module.so
load_module modules/ngx_http_vhost_traffic_status_module.so;

Параметр в секцию http:

http {
vhost_traffic_status_zone;
...

Параметры в нужный нам server:

location /statuszone {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}

Сохраняем изменения, проверяем конфиг Nginx, и если всё в порядке перезапускаем сервис.

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# systemctl restart nginx

Пробуем получить доступ к URL http://domain.com/statuszone и получаем нужную нам статистику:

Nginx Vhost Traffic Status

С помощью модуля, мы можем не изменяя конфига веб-сервера получить данные в удобном для нас формате (html, json, jsonp, prometheus), для этого достаточно просто обратиться по соответствующему URL, например,

http://domain.com/statuszone/format/prometheus

Кроме того, для управления и получения данных, предусмотрен специальный набор фильтров и запросов, с его помощью мы можем, например, получить статистику по конкретной зоне (в json):

https://domain.com/statuszone/control?cmd=status&group=server&zone=sub.domain.com

Набор запросов даёт очень много возможностей, для активного использования модуля имеет смысл обратиться к документации по nginx-module-vts за описанием каждого.

Использование лимитов.

Помимо сбора статистики, модуль позволяет нам устанавливать лимиты на трафик. Например, для ограничения определённого server, нужно прописать соответствующий параметр в нём:

vhost_traffic_status_limit_traffic in:32G;
vhost_traffic_status_limit_traffic out:128G;

При использовании GeoIP, и доступных нам фильтров, мы можем решать какие-то гибкие задачи с помощью этого модуля. Например, лимитировать трафик для определённой страны (просто статистику по странам тоже можно получить, к слову).

nginx-module-vts

Справедливости ради, стоит отметить — в чате спецы по Nginx подсказали, что включение этого модуля может повлиять на скорость обработки запросов, так что перед использованием в проде имеет смысл опробовать модуль на тестовой площадке или каком-то тестовом сегменте инфраструктуры.

3 thoughts on “Nginx Vhost Traffic Status

  1. Подскажите как сделать чтобы работало с wordpress?

    1. А тут зависимости от CMS нет никакой на самом деле. Просто в нужный server (тот что описывает виртуальный хост с WP сайтом) добавляем location с выводом статуса, убеждаемся что добавили верно, перезапускаем веб-сервер и обращаемся к URL из браузера.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *