Задать вопрос

Как мониторить ответы сервера для Bitrix через Prometheus?

Изначально я задался целью - понять, как много ошибок 50х в сутки получает пользователь при разных условиях, происходящий на сайте (речь про корпоративный портал).
Поставил Прометей
Поставил node-exporter

Понял, что это не то, так как node-exporter не выводит информацию по тому, как работает приложение, и он не знает сколько 503 словил пользователь.

Начал копать дальше, нашел модуль VTS для nginx, который вроде бы как раз выдает такую инфу по nginx, а дальше ставится nginx-vts-exporter, который уже отправляет это все в прометей.

Я потратил 2 рабочих полных дня, чтобы поставить модуль VTS. Ничего не получилось, всё крашится на каждом шаге с непонятными ошибками (даже лазил в С-код какой-то библиотеки). И тут задумался - "А может я всё же не туда пошел? Ну не может быть, чтобы либо никто не мониторил соединения, либо все проходили эти тысячи часов танцев с бубном, чтобы запустить чёртов VTS".

Подскажите, куда двигаться?

П.С. Задача именно в том, чтобы я мог получить условно:
Last 1 hour:
500: 0 шт
503: 13 шт
200: 142334 шт
404: 204 шт
  • Вопрос задан
  • 562 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 2
paran0id
@paran0id
Умный, но ленивый
я этим модулем пользовался:
https://github.com/knyar/nginx-lua-prometheus
но там тоже некоторые пляски с бубном требуются

мой конспект по сборке с тех времён, должен помочь

Экспортим пути к библиотекам из devel-пакетов
export LUAJIT_LIB=/usr/lib64/
export LUAJIT_INC=/usr/include/luajit-2.1/

На боевом сервере говорим nginx -V и сохраняем опции, с которыми он был собран

Заходим в папку с исходникми  nginx

Берем следующую строку configure, указываем пути к сорцам скачанных модулей и lua-devel
# ./configure --prefix=/opt/nginx --add-dynamic-module=/home/admin/work/nginx-lua/ngx_devel_kit-0.3.1rc1 --add-dynamic-module=/home/admin/work/nginx-lua/lua-nginx-module-0.10.13 --with-ld-opt="-Wl,-rpath,/usr/lib64/"

а также добавляем после неё опции, с которыми был собран nginx. Получится что-то типа того:

./configure --prefix=/opt/nginx --add-dynamic-module=/home/admin/work/nginx-lua/ngx_devel_kit-0.3.1rc1 --add-dynamic-module=/home/admin/work/nginx-lua/lua-nginx-module-0.10.13 --with-ld-opt="-Wl,-rpath,/usr/lib64/" --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

после этого делаем
make -j

и в папке objs появятся 
ndk_http_module.so
ngx_http_lua_module.so

закидываем их на боевой сервер куда-нибудь в /usr/local/lib

на сервер устанавливаем пакет luajit

в главном конфиге nginx в контексте main (вне http, в самом начале) прописываем 
load_module /usr/local/lib/ndk_http_module.so;
load_module /usr/local/lib/ngx_http_lua_module.so;

делаем nginx -t

Если всё ок - рестартим и готово.

Если ругается на бинарную несовместимость - перепроверить версии и параметры сборки. Они должны совпадать!

Ответ написан
karabanov
@karabanov
Системный администратор
prometheus-nginxlog-exporter - просто лог читает - не надо пересобирать Nginx для установки.

Если хочется пересобирать, то есть nginx-module-vts
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы