Статистика для Upstream NginX

less than 1 minute read

При использовании NginX в качестве балансировщика нагрузки появляется вопрос о корректном ведении статистики доставки трафика к серверам из секции Upstream.

К сожалению у Nginx нету встроенного функционала на манер HaProxy. Также этот функционал нельзя добавить путем установки дополнительного модуля с помощью yum или apt-get.

Для того что бы в NginX появилось компилировать из исходников и в ходе компиляции включать сторонний модуль upstream-stats.

Этот модуль совместим с nginx-1.2.2. Последнюю версию NginX мне собрать не удалось.
Скачиваем NginX и распаковываем его:

wget http://nginx.org/download/**nginx-1.2.2**.tar.gz  
tar xf nginx-1.2.2.tar.gz

Скачиваем upstream-stats и распаковываем его:

wget /wp-content/uploads/2014/11/ustats.tgz  
tar xf ustats.tgz

Копируем файлы в папки NginX

cp -r ustats-read-only/ustats nginx-1.2.2/src/http/modules/  
cp ustats-read-only/nginx.patch nginx-1.2.2/

Осталось применить патч и можно переходить к сборке NginX

cd nginx-1.2.2/  
patch -p1 -i nginx.patch

Базовая строка конфигурирования выглядит следующим образом:

./configure -prefix=/etc/nginx -user=nginx -group=nginx -with-http_ssl_module **-add-module=src/http/modules/ustats** -http-log-path=/var/log/nginx/

Если Вам нужны дополнительные опции - прочитайте эту статью. В ней же приводится пример init.d скрипта и список нужных для компиляции пакетов.

Для того что бы статистика заработала - добавьте следующие строки в секцию server любого сайта:

location /ustats {
  ustats memsize=1m;
  ustats_refresh_interval 6000;
  ustats_html_table_width 95;
  ustats_html_table_height 95;
}

shot1