Skip to content

ОтелФабрикаВыровненныхРезервуаровГистограммы ​

Фабрика резервуаров exemplars, выровненных по бакетам гистограммы (AlignedHistogramBucketExemplarReservoir).

Описание ​

SDK использует эту фабрику по умолчанию для потоков с агрегацией явной гистограммы хотя бы с одной границей (больше одного бакета), с теми же границами, что у гистограммы потока. Резервуары других агрегаций перечислены в разделе Резервуар по умолчанию страницы ОтелФабрикаПростыхРезервуаров. Явно фабрику передают в параметр РезервуарЭкземпляровпредставления, например чтобы exemplars экспоненциальной гистограммы распределялись по заданным диапазонам значений.

SDK вызывает СоздатьРезервуар() для каждой серии потока (набора атрибутов точки данных): у каждой серии свой резервуар. Резервуар хранит exemplars одного интервала сбора: после сбора читателем серия получает новый резервуар.

Резервуар хранит не больше одного exemplar на бакет: слотов на один больше, чем границ, последний — для значений больше последней границы. Измерение попадает в бакет первой границы, которая не меньше значения: значение, равное границе, попадает в бакет этой границы, как в явной гистограмме. N-е измерение бакета заменяет сохранённый exemplar с вероятностью 1/N (равномерная выборка): у каждого измерения бакета за интервал равные шансы. Exemplar содержит то же, что у простого резервуара: значение, время, идентификаторы трассировки и спана и атрибуты измерения, которых нет в атрибутах серии (filteredAttributes).

Резервуару предлагаются только измерения, которые пропустил фильтр exemplars провайдера (ОтелФильтрЭкземпляров): по умолчанию — записанные в контексте сэмплированного спана. При фильтре ВсегдаВыключен() резервуары не создаются.

Границы должны идти по возрастанию: фабрика и резервуар их не сортируют. Чтобы exemplars совпадали с бакетами явной гистограммы, передайте те же границы, что у гистограммы потока.

Конструктор ​

bsl
Новый ОтелФабрикаВыровненныхРезервуаровГистограммы(Границы)
ПараметрТипПо умолчаниюОписание
ГраницыМассив из Число—Границы бакетов по возрастанию — в том же формате, что ГраницыГистограммы представления

Методы ​

СоздатьРезервуар ​

Создаёт новый резервуар с границами Границы. SDK вызывает метод для каждой серии потока на каждый интервал сбора.

Возвращает: ОтелВыровненныйРезервуарГистограммы — новый резервуар


Границы ​

Возвращает границы бакетов, с которыми создаются резервуары.

Возвращает: Массив — массив, переданный в конструктор

Пример ​

bsl
// Экспоненциальная гистограмма задержки: exemplars по одному на диапазон значений
Границы = Новый Массив();
Границы.Добавить(0.1);
Границы.Добавить(0.5);
Границы.Добавить(1);

Представление = Новый ОтелПредставление(, , , ,
    ОтелАгрегация.ГистограммаЭкспоненциальная(),                  // Агрегация
    ,                                                             // ИсключенныеКлючиАтрибутов
    Новый ОтелФабрикаВыровненныхРезервуаровГистограммы(Границы)); // РезервуарЭкземпляров

Провайдер = Новый ОтелПостроительПровайдераМетрик()
    .ЗарегистрироватьЧитатель(Читатель)
    .ЗарегистрироватьПредставление(Новый ОтелСелекторИнструментов("http.server.duration"), Представление)
    .Построить();

См. также ​