Класс CollectorRegistry
Реестр коллекторов Prometheus.
Коллектор может быть:
- структурой метрики с полем
Тип(counter,gauge,histogram,summary,*_vector) — сбор черезPrometheusMetrics/PrometheusVecвнутриGather(); - объектом с методом
Collect(), возвращающим массив семейств в промежуточном формате (Имя,Тип,Справка,Сэмплы).
Жизненный цикл
При создании:
- инициализирует внутренний массив
Коллекторы(список зарегистрированных коллекторов).
Обычно используется через модуль PrometheusRegistry, но может создаваться и использоваться вручную, если нужно несколько независимых реестров.
Методы
Функция Register(Коллектор) Экспорт
Регистрирует коллектор в реестре.
Параметры:
Коллектор— структура метрики (полеТип) или объект с методомCollect().
Возвращаемое значение:
Булево—Истина, если коллектор зарегистрирован;Ложь, если этот коллектор уже зарегистрирован или в реестре есть структура метрики с тем жеИмяи такими же константными лейблами либо с тем жеИмяи другим типом (counterиcounter_vectorсчитаются одним типом).
Метрики с одним именем выводятся одним семейством, поэтому допустимы только метрики одного типа с разными константными лейблами. Для объектов с Collect() проверяется только повторная регистрация того же объекта.
Функция Unregister(Коллектор) Экспорт
Снимает регистрацию коллектора.
Параметры:
Коллектор— ранее зарегистрированный объект.
Возвращаемое значение:
Булево—Истина, если коллектор найден и удалён;Ложь, если такого коллектора в реестре нет.
Функция Gather() Экспорт
Собирает метрики со всех зарегистрированных коллекторов.
Алгоритм:
- Создаёт пустой массив
ВсеСемейства. - Для каждого элемента из
Коллекторы:- если это структура с полем
Тип— собирает сэмплы черезPrometheusMetrics.СобратьКоллекторилиPrometheusVec.СобратьВектори группирует их в семейства; - иначе вызывает
Коллектор.Collect()и добавляет возвращённые семейства; - каждое семейство попадает в
ВсеСемейства.
- если это структура с полем
- Объединяет семейства с одинаковым
Имяв одно: поля берутся из первого семейства, сэмплы всех семейств собираются в новый массив. МассивыСэмплы, которые вернули коллекторы, не меняются. - Возвращает семейства в порядке первого появления имени.
Результат — массив семейств для PrometheusTextFormat.Сериализовать или модуля Prometheus при сборе.
