Deckhouse Prom++ — это система мониторинга для высоконагруженной инфраструктуры с открытым исходным кодом, разработанная для сбора метрик из различных источников и удобного анализа этих данных. Prom++ использует в своем ядре сочетание языков программирования Golang и C++, за счет чего мониторинговые данные хранятся в оперативной памяти в максимально сжатом виде, позволяя экономить память без ущерба производительности.

Функциональные характеристики

Сбор метрик (pull-модель)

Deckhouse Prom++ работает по принципу pull (вытягивания данных): он самостоятельно опрашивает (scrape) целевые источники по HTTP/HTTPS и получает от них метрики (мониторинговые данные) в формате, совместимом со спецификацией Prometheus. Метрики, которые собирает Deckhouse Prom++, представляют собой временные ряды (time series) с метками (labels). Метки позволяют группировать и фильтровать метрики для более детального анализа.

Хранение данных

Deckhouse Prom++ использует специальную высокопроизводительную базу данных на диске. Данную БД можно описать как Time Series Database (TSDB). Данные хранятся в виде временных рядов, разбитых на блоки, что позволяет эффективно обрабатывать большие объёмы метрик. У Deckhouse Prom++ отсутствует традиционная реляционная СУБД; хранение и оптимизация запросов максимально заточены под работу с временными рядами.

Язык запросов (PromQL)

В Deckhouse Prom++ реализован PromQL (Prometheus Query Language) — это язык запросов, который дает возможность выполнять гибкие операции с метриками во времени (например, суммирование, усреднение, выборка по меткам). PromQL поддерживает функции агрегации (sum, avg, max, min, count и т.д.), а также обеспечивает создание новых временных рядов на базе имеющихся. Язык позволяет не только извлекать сырые данные, но и проводить комплексные вычисления, построение графиков и вычисление различных показателей (SLO/SLI), что упрощает аналитику.

Правила алертинга (alerting rules) и производные метрики (recording rules)

Recording rules позволяют предвычислять наиболее часто запрашиваемые или тяжёлые по ресурсам метрики и сохранять результаты в виде новых временных рядов. Выполняются Prometheus с заданным интервалом (например, каждые 30 секунд или минуту). Результат записывается обратно в базу TSDB под новым именем метрики. Ускоряют построение графиков и аналитических запросов, поскольку вместо «сырых» метрик используются уже агрегированные данные.

Alerting rules определяют условия (на базе PromQL) для формирования оповещений, если метрика выходит за заданные пределы или удовлетворяет определённому выражению. Поддерживают разные уровни критичности, временные интервалы, игнорирование определенных лейблов и прочие тонкие настройки. При срабатывании пересылают данные о тревоге в Alertmanager для последующей маршрутизации.

Интеграция и сбор мониторинговых данных из различных источников

Deckhouse Prom++ легко интегрируется с многочисленными системами и сервисами благодаря стандартному формату экспорта метрик. В экосистеме Prometheus уже существует огромное количество экспортеров, позволяющих собирать метрики из различных систем, таких как: базы данных (MySQL, PostgreSQL, MongoDB), веб-серверы (Nginx, Apache), инфраструктурные компоненты (Docker, Kubernetes, etcd) и т.д.

Конфигурация Deckhouse Prom++ описывается в YAML-файлах. В них указываются эндпоинты для сбора метрик (targets), задачи (jobs), настройки частоты опроса, правила оповещений и т.д. При использовании в окружении Kubernetes Deckhouse Prom++ может автоматически обнаруживать новые сервисы и контейнеры (service discovery), что сильно упрощает мониторинг динамических микросервисных сред.

Визуализация

Веб-интерфейс Deckhouse Prom++ позволяет выполнять запросы PromQL «на лету» и смотреть результаты в виде графика или списка точек данных. Это удобно для быстрой диагностики и отладки.

Федерация

Deckhouse Prom++ обычно развертывается отдельно в каждом кластере или подсистеме, а затем используют «федерацию» или иные механизмы агрегации для сбора и анализа метрик на более высоком уровне. Модель федерации Deckhouse Prom++ позволяет одному серверу Deckhouse Prom++ периодически запрашивать агрегированные данные у других серверов Deckhouse Prom++, что особенно полезно в крупных распределенных инфраструктурах.

Высокая производительность

Применяемая модель хранения данных и эффективная структура каталогов (tsdb) позволяют Deckhouse Prom++ обрабатывать тысячи и даже миллионы метрик в секунду, сохраняя при этом высокую скорость ответа на запросы.

Поддерживаемые операционные системы:

  • МОС ОС;
  • РЕД ОС;
  • РОСА Сервер;
  • ALT Linux;
  • Astra Linux Special Edition.