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 и получаем нужную нам статистику:
С помощью модуля, мы можем не изменяя конфига веб-сервера получить данные в удобном для нас формате (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 подсказали, что включение этого модуля может повлиять на скорость обработки запросов, так что перед использованием в проде имеет смысл опробовать модуль на тестовой площадке или каком-то тестовом сегменте инфраструктуры.
Подскажите как сделать чтобы работало с wordpress?
А тут зависимости от CMS нет никакой на самом деле. Просто в нужный server (тот что описывает виртуальный хост с WP сайтом) добавляем location с выводом статуса, убеждаемся что добавили верно, перезапускаем веб-сервер и обращаемся к URL из браузера.