Skip to content

ОтелРезультатСэмплирования ​

Результат сэмплирования (SamplingResult): решение сэмплера, атрибуты и TraceState для нового спана.

Описание ​

Результат возвращает метод ДолженСэмплировать сэмплера (см. ИнтерфейсСэмплер). Трассировщик получает его при создании каждого спана: по решению спан записывается и экспортируется, только записывается или отбрасывается; атрибуты результата добавляются в записывающий спан, TraceState результата становится TraceState спана.

Результат неизменяем. Встроенные сэмплеры возвращают общие результаты без атрибутов, не меняющие TraceState, — их возвращает ОтелСэмплер.Результат. Свой сэмплер может создать результат с атрибутами или TraceState конструктором.

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

bsl
Новый ОтелРезультатСэмплирования(Решение, Атрибуты, СостояниеТрассировки)
ПараметрТипПо умолчаниюОписание
РешениеЧисло—ОтелСэмплер.РешениеОтбросить(), РешениеЗаписать() или РешениеЗаписатьИЭкспортировать()
АтрибутыОтелАтрибуты, Соответствие, ФиксированноеСоответствиеНеопределеноАтрибуты, которые сэмплер добавляет в спан. Результат хранит их неизменяемую копию: изменение переданного набора после создания результата его не меняет
СостояниеТрассировкиОтелСостояниеТрассировкиНеопределеноTraceState спана; пустой очищает состояние трассировки. Не задан — спан получает TraceState родителя

Методы ​

Решение ​

Возвращает решение сэмплера.

Возвращает: Число — ОтелСэмплер.РешениеОтбросить() (0), ОтелСэмплер.РешениеЗаписать() (1) или ОтелСэмплер.РешениеЗаписатьИЭкспортировать() (2)


Атрибуты ​

Возвращает атрибуты, которые сэмплер добавляет в спан. Трассировщик устанавливает их после начальных атрибутов спана (одноименные заменяют начальные), до вызова процессоров: атрибуты видны уже в ПриНачале. Отброшенный спан атрибутов не получает.

Возвращает: ФиксированноеСоответствие — неизменяемый набор; пустой, если сэмплер атрибутов не задал


СостояниеТрассировки ​

Возвращает TraceState, который спан получит через свой SpanContext.

Возвращает: ОтелСостояниеТрассировки, Неопределено — TraceState спана; Неопределено, если сэмплер TraceState не меняет: спан получает TraceState родителя, корневой спан — пустой

Пример ​

bsl
// Проверить решение сэмплера "10% трассировок" для конкретного trace ID
Сэмплер = ОтелСэмплер.ПоДолеТрассировок(0.1);
Контекст = ОтелКонтекст.Текущий();
Результат = Сэмплер.ДолженСэмплировать(Контекст, "4bf92f3577b34da6a3ce929d0e0e4736", "операция",
    ОтелВидСпана.Внутренний(), Новый Соответствие(), Новый Массив());

Если Результат.Решение() = ОтелСэмплер.РешениеЗаписатьИЭкспортировать() Тогда
    Сообщить("Трассировка попадёт в выборку");
КонецЕсли;

// Результат своего сэмплера: спан записывается, получает атрибут и TraceState вендора
Атрибуты = Новый Соответствие();
Атрибуты.Вставить("sampling.rule", "checkout");
Состояние = Новый ОтелСостояниеТрассировки().Установить("myvendor", "sampled");
Результат = Новый ОтелРезультатСэмплирования(ОтелСэмплер.РешениеЗаписатьИЭкспортировать(), Атрибуты,
    Состояние);

См. также ​