Skip to content

Модуль PrometheusVec ​

Модуль для работы с векторами метрик — фабриками, которые порождают отдельные метрики с разными наборами лейблов.

Поддерживает типы:

  • counter_vector;
  • gauge_vector;
  • histogram_vector;
  • summary_vector.

Используется фасадом Prometheus и модулем PrometheusRegistry.

Векторы метрик ​

Каждый вектор хранит:

  • имя метрики и справку;
  • имена переменных лейблов (ИменаПеременныхЛейблов);
  • константные лейблы;
  • внутреннее хранилище с подметриками.

Вектор сам по себе является коллектором: может собирать свои подметрики в виде массива сэмплов.

Получение метрики по лейблам ​

API ориентировано на две формы задания лейблов:

  • массив значений (в том же порядке, что ИменаПеременныхЛейблов);
  • соответствие ИмяЛейбла → Значение.

На уровне фасада Prometheus для этого используются функции:

  • СчетчикСЛейблами;
  • ИндикаторСЛейблами;
  • ГистограммаСЛейблами;
  • РезюмеСЛейблами.

Они делегируют работу модулю PrometheusVec, который:

  1. приводит значения к строкам, по одному на каждое имя из ИменаПеременныхЛейблов: недостающие значения (в том числе лейблы, которых нет в соответствии) становятся пустыми строками, лишние значения массива отбрасываются;
  2. ищет (или создаёт) подметрику с этим набором значений;
  3. возвращает структуру конкретной метрики (counter, gauge, histogram, summary), с которой дальше можно работать через PrometheusMetrics или фасад Prometheus.

Поэтому ("GET") и ("GET", "") для лейблов method и code возвращают одну и ту же подметрику.

У вектора summary без заданных Квантили подметрики получают квантили по умолчанию (0.5, 0.9, 0.99).

Сбор вектора ​

В модуле реализована процедура, используемая PrometheusRegistry:

  • СобратьВектор(Коллектор, РезультатСэмплов)

Она обходит все подметрики внутри вектора и дополняет массив РезультатСэмплов сэмплами в том же формате, что и PrometheusMetrics.СобратьКоллектор.

Эта процедура позволяет использовать векторы как полноправные коллекторы в реестре CollectorRegistry.