Skip to content

Класс CollectorRegistry ​

Реестр коллекторов Prometheus.

Коллектор может быть:

  • структурой метрики с полем Тип (counter, gauge, histogram, summary, *_vector) — сбор через PrometheusMetrics / PrometheusVec внутри Gather();
  • объектом с методом Collect(), возвращающим массив семейств в промежуточном формате (Имя, Тип, Справка, Сэмплы).

Жизненный цикл ​

При создании:

  • инициализирует внутренний массив Коллекторы (список зарегистрированных коллекторов).

Обычно используется через модуль PrometheusRegistry, но может создаваться и использоваться вручную, если нужно несколько независимых реестров.

Методы ​

Функция Register(Коллектор) Экспорт ​

Регистрирует коллектор в реестре.

Параметры:

  • Коллектор — структура метрики (поле Тип) или объект с методом Collect().

Возвращаемое значение:

  • Булево — Истина, если коллектор зарегистрирован;
  • Ложь, если этот коллектор уже зарегистрирован или в реестре есть структура метрики с тем же Имя и такими же константными лейблами либо с тем же Имя и другим типом (counter и counter_vector считаются одним типом).

Метрики с одним именем выводятся одним семейством, поэтому допустимы только метрики одного типа с разными константными лейблами. Для объектов с Collect() проверяется только повторная регистрация того же объекта.

Функция Unregister(Коллектор) Экспорт ​

Снимает регистрацию коллектора.

Параметры:

  • Коллектор — ранее зарегистрированный объект.

Возвращаемое значение:

  • Булево — Истина, если коллектор найден и удалён;
  • Ложь, если такого коллектора в реестре нет.

Функция Gather() Экспорт ​

Собирает метрики со всех зарегистрированных коллекторов.

Алгоритм:

  1. Создаёт пустой массив ВсеСемейства.
  2. Для каждого элемента из Коллекторы:
    • если это структура с полем Тип — собирает сэмплы через PrometheusMetrics.СобратьКоллектор или PrometheusVec.СобратьВектор и группирует их в семейства;
    • иначе вызывает Коллектор.Collect() и добавляет возвращённые семейства;
    • каждое семейство попадает в ВсеСемейства.
  3. Объединяет семейства с одинаковым Имя в одно: поля берутся из первого семейства, сэмплы всех семейств собираются в новый массив. Массивы Сэмплы, которые вернули коллекторы, не меняются.
  4. Возвращает семейства в порядке первого появления имени.

Результат — массив семейств для PrometheusTextFormat.Сериализовать или модуля Prometheus при сборе.