Сбор метрик 3X-UI, интеграция с Prometheus и визуализация данных в Grafana
Лирическое отступление: обусловимся на том, что я совсем не DevOps инженер, а скорее недо-программист и мои познания в мире развертывания на большом количестве продакшн серверов заканчиваются на рассылке команд, или запуске Docker-контейнеров. Не бейте палками, если решите что мой способ развертывая инфраструктуры сбора метрик не самый лучший.
Инструмент для сбора и экспорта метрик 3X-UI
Представляю вашему вниманию 3X-UI Metrics Exporter — удобный и гибкий инструмент для сбора и экспорта метрик в Prometheus.
Экспортер был написан мною как небольшая пародия на уже имеющийся https://github.com/kutovoys/marzban-exporter, тем не менее, аналогов для своих нужд на просторах Github я не обнаружил.
Инструмент обязательно нужен для тех, кому важно анализировать тенденцию использования продуктов, иметь представление о текущей нагрузке в виде пользователей, а так-же своевременно и оперативно реагировать на аномалии в работе сервиса.
3X-UI Metrics Exporter предотставлят функционал для отслеживания количества пользователей, активность пользователей, потребление трафика, общую нагрузку на сервер + немного системной информации для общего понимания.
Установка и настройка
Установка 3X-UI Metrics Exporter предельно проста. Для удобства, я подготовил несколько вариантов по установке:
В целом не вижу смысла рассказывать про каждый вид установки отдельно, о конфигурации и параметрах запуска можно прочитать в репо проекта https://github.com/hteppl/3x-ui-exporter. Далее я рассмотрю автоматическую установку и базовые настройки конфига.
Для автоматической установки будем пользоваться командой из репо проекта:
bash <(curl -fsSL raw.githubusercontent.com/hteppl/3x-ui-exporter/main/install.sh)
Инсталлер сам в состоянии определить ваш Linux дистрибутив и загрузить нужную версию исполняемого файла вместе с конфигом, далее последуют наводящие вопросы про URL панели, порт и пароль для входа:
После завершения настройки, экспортер само собой стоит проверить на работоспособность. Сначала проверяем процесс:
systemctl status x-ui-exporter.service
Далее идем по адресу: http://<айпи-вашей-машины>:9090/metrics
И убеждаемся что страница открывается, а в самом низу есть данные, подписанные префиксом x_ui.
На данном этапе можно сказать, что базовая настройка метрик завершена, но я бы все-таки советовал или закрыть порт метрик (9090 по умолчанию) через доступ по айпи, или настроить базовую авторизацию на странице. Подробнее можно прочитать в репо проекта.
Интеграция и выгрузка в Prometheus
Опять-же, не буду рассказывать как ставить Prometheus и делать его настройку, статья немного не об этом. Для получения данных метрик достаточно отредактировать конфиг prometheus.yml и найти блок scrape_configs
scrape_configs:
- job_name: "x-ui_exporter"
static_configs:
- targets: [ "<exporter-ip-1>:9090" ]
labels:
name: "my_server_1"
- targets: [ "<exporter-ip-2>:9090" ]
labels:
name: "my_server_2"По аналогии можем добавить все сервера, как нам потребуется. После изменения конфига не забудьте перезапустить Prometheus.
Проверить получение данных в Prometheus можно на страницеhttp://<prometheus-ip>:9090/targets
Кстати, этот порт тоже совтую закрыть или использовать реверс-прокси, по аналогии с серверами метрик.
Построение графиков Grafana
Если все настроено и работает правильно, то можно приступать к самомому интересному - визуализации получаемых данных в интерактивных дашбордах графаны.
Для своих заказчиков я реализовал несколько дашбордов с графиками, которые визуализируют основные данные, получаемые из метрик:
В данном примере была использована метрика x_ui_total_online_users с различными базовыми агрегирующими функциями, по типу sum или avg_over_time. Так-же ниже собрал распределние пользователей и максимальные значения по параметрам:
Не только онлайн. В данных визуализациях постарался собрать основные данные по серверам одного из крупных проектов (количество серверов немного не сопадает с первым скрином, упала одна выгрузка).
Тут уже используется не только 3X-UI Exporter, а еще и Node Exporter, а кто говорил что данные нельзя собирать сразу с нескольких экспортеров?
Нижняя часть на фото - те самые метрики 3X-UI Exporter.
Это опять-же небольшое смешение экспортеров, данные по нескольким метрикам можно использовать в 1 визуализации.
Итоги
3X-UI Metrics Exporter — по моему мнению, достаточно удобный инструмент для сбора метрик, позволяющий мониторить активность пользователей и нагрузку на сервер. Установка достаточно простая даже для обычных пользователей, а так-же доступка в нескольких вариантах, включая автоматическую настройку. Интеграция с Prometheus выполняется через стандартную конфигурацию, а визуализацию данных можно построить где угодно, даже не обязательно в Grafana.
🥕 Связаться со мной: @morkowka_22
Могу помочь построить такие-же или подобные графики под ваши нужды.
Кстати, лично от себя рекомендую использовать сервера TimeWeb Cloud, достаточно приличная контора, которая показала себя с лучшей стороны за несколько лет использования.