пятница, 8 февраля 2019 г.

Расширенная статистика nginx

Есть такой пакет, nginx-module-vts, даёт много полезной информации. Есть ссылка на офсайте в разделе NGINX 3rd Party Modules.
Но последний коммит был 30 июня 2018 и с тех пор автор не отвечает.

Есть другой модуль, nginx-lua-prometheus. Под debian есть инструкция через установку libnginx-mod-http-lua, но centos тут в пролёте, так что собираем первый.

Для успешной сборки нужно доставить несколько пакетов
yum -y install gperftools-devel GeoIP-devel gd-devel perl-devel libxslt-devel perl-ExtUtils-Embed.noarch

Сборка в виде статического модуля
  1. Clone the git repository.
    shell> git clone git://github.com/vozlt/nginx-module-vts.git
  2. Add the module to the build configuration by adding --add-module=/path/to/nginx-module-vts
  3. Build the nginx binary.
  4. Install the nginx binary.
Есть возможность собрать динамический модуль. Краткое описание по сборке например тут

Собираем модуль под centos. Но если просто скачать некие исходники - модуль скорее всего не подцепится и скажет binary incompatible. Попробуем собраться под epel.
Готовим наш модуль
cd
git clone git://github.com/vozlt/nginx-module-vts.git

Качаем http://download-ib01.fedoraproject.org/pub/epel/7/SRPMS/Packages/n/nginx-1.12.2-2.el7.src.rpm и ставим (rpm -Uvh), получаем исходники в rpmbuild. Теперь внесём измененния в спек файл
vim ~/rpmbuild/SPECS/nginx.spec

после --with-stream_ssl_module \ добавляем
--add-dynamic-module=$HOME/nginx-module-vts \
(Обращаем внимание, что он уже идёт как add-dynamic-module, а не add-module)

После блока %description mod-stream вставляем
%package mod-http-vts
Group:             System Environment/Daemons
Summary:           Nginx extended status modules
Requires:          nginx

%description mod-http-vts
%{summary}.

Теперь после
echo 'load_module "%{_libdir}/nginx/modules/ngx_stream_module.so";' \
    > %{buildroot}%{_datadir}/nginx/modules/mod-stream.conf
добавляем
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_vhost_traffic_status_module.so";' \
    > %{buildroot}%{_datadir}/nginx/modules/mod-http-vts.conf

После %files mod-stream добавляем
%files mod-http-vts
%{_datadir}/nginx/modules/mod-http-vts.conf
%{_libdir}/nginx/modules/ngx_http_vhost_traffic_status_module.so

Дальше делаем rpmbuild -ba nginx.spec
и можем ставить наш модуль из пакета nginx-mod-http-vts-*

При возникновении ошибки
line 80: --with-google_perftools_module: command not found
Смотрим те строки что мы добавили, вероятнее всего забыт backslach после add-dynamic-module.

По использовании читаем гит доку, там нет ничего сложного.

2 комментария:

  1. Поправьте строку
    > %{buildroot}%{_datadir}/nginx/modules/mod-http_vts.conf
    на
    > %{buildroot}%{_datadir}/nginx/modules/mod-http-vts.conf

    ОтветитьУдалить