Модуль PrometheusVec
Модуль для работы с векторами метрик — фабриками, которые порождают отдельные метрики с разными наборами лейблов.
Поддерживает типы:
counter_vector;gauge_vector;histogram_vector;summary_vector.
Используется фасадом Prometheus и модулем PrometheusRegistry.
Векторы метрик
Каждый вектор хранит:
- имя метрики и справку;
- имена переменных лейблов (
ИменаПеременныхЛейблов); - константные лейблы;
- внутреннее хранилище с подметриками.
Вектор сам по себе является коллектором: может собирать свои подметрики в виде массива сэмплов.
Получение метрики по лейблам
API ориентировано на две формы задания лейблов:
- массив значений (в том же порядке, что
ИменаПеременныхЛейблов); - соответствие
ИмяЛейбла → Значение.
На уровне фасада Prometheus для этого используются функции:
СчетчикСЛейблами;ИндикаторСЛейблами;ГистограммаСЛейблами;РезюмеСЛейблами.
Они делегируют работу модулю PrometheusVec, который:
- приводит значения к строкам, по одному на каждое имя из
ИменаПеременныхЛейблов: недостающие значения (в том числе лейблы, которых нет в соответствии) становятся пустыми строками, лишние значения массива отбрасываются; - ищет (или создаёт) подметрику с этим набором значений;
- возвращает структуру конкретной метрики (
counter,gauge,histogram,summary), с которой дальше можно работать черезPrometheusMetricsили фасадPrometheus.
Поэтому ("GET") и ("GET", "") для лейблов method и code возвращают одну и ту же подметрику.
У вектора summary без заданных Квантили подметрики получают квантили по умолчанию (0.5, 0.9, 0.99).
Сбор вектора
В модуле реализована процедура, используемая PrometheusRegistry:
СобратьВектор(Коллектор, РезультатСэмплов)
Она обходит все подметрики внутри вектора и дополняет массив РезультатСэмплов сэмплами в том же формате, что и PrometheusMetrics.СобратьКоллектор.
Эта процедура позволяет использовать векторы как полноправные коллекторы в реестре CollectorRegistry.
