ОтелРезультатСэмплирования
Результат сэмплирования (SamplingResult): решение сэмплера, атрибуты и TraceState для нового спана.
Описание
Результат возвращает метод ДолженСэмплировать сэмплера (см. ИнтерфейсСэмплер). Трассировщик получает его при создании каждого спана: по решению спан записывается и экспортируется, только записывается или отбрасывается; атрибуты результата добавляются в записывающий спан, TraceState результата становится TraceState спана.
Результат неизменяем. Встроенные сэмплеры возвращают общие результаты без атрибутов, не меняющие TraceState, — их возвращает ОтелСэмплер.Результат. Свой сэмплер может создать результат с атрибутами или TraceState конструктором.
Конструктор
Новый ОтелРезультатСэмплирования(Решение, Атрибуты, СостояниеТрассировки)| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Решение | Число | — | ОтелСэмплер.РешениеОтбросить(), РешениеЗаписать() или РешениеЗаписатьИЭкспортировать() |
Атрибуты | ОтелАтрибуты, Соответствие, ФиксированноеСоответствие | Неопределено | Атрибуты, которые сэмплер добавляет в спан. Результат хранит их неизменяемую копию: изменение переданного набора после создания результата его не меняет |
СостояниеТрассировки | ОтелСостояниеТрассировки | Неопределено | TraceState спана; пустой очищает состояние трассировки. Не задан — спан получает TraceState родителя |
Методы
Решение
Возвращает решение сэмплера.
Возвращает: Число — ОтелСэмплер.РешениеОтбросить() (0), ОтелСэмплер.РешениеЗаписать() (1) или ОтелСэмплер.РешениеЗаписатьИЭкспортировать() (2)
Атрибуты
Возвращает атрибуты, которые сэмплер добавляет в спан. Трассировщик устанавливает их после начальных атрибутов спана (одноименные заменяют начальные), до вызова процессоров: атрибуты видны уже в ПриНачале. Отброшенный спан атрибутов не получает.
Возвращает: ФиксированноеСоответствие — неизменяемый набор; пустой, если сэмплер атрибутов не задал
СостояниеТрассировки
Возвращает TraceState, который спан получит через свой SpanContext.
Возвращает: ОтелСостояниеТрассировки, Неопределено — TraceState спана; Неопределено, если сэмплер TraceState не меняет: спан получает TraceState родителя, корневой спан — пустой
Пример
// Проверить решение сэмплера "10% трассировок" для конкретного trace ID
Сэмплер = ОтелСэмплер.ПоДолеТрассировок(0.1);
Контекст = ОтелКонтекст.Текущий();
Результат = Сэмплер.ДолженСэмплировать(Контекст, "4bf92f3577b34da6a3ce929d0e0e4736", "операция",
ОтелВидСпана.Внутренний(), Новый Соответствие(), Новый Массив());
Если Результат.Решение() = ОтелСэмплер.РешениеЗаписатьИЭкспортировать() Тогда
Сообщить("Трассировка попадёт в выборку");
КонецЕсли;
// Результат своего сэмплера: спан записывается, получает атрибут и TraceState вендора
Атрибуты = Новый Соответствие();
Атрибуты.Вставить("sampling.rule", "checkout");
Состояние = Новый ОтелСостояниеТрассировки().Установить("myvendor", "sampled");
Результат = Новый ОтелРезультатСэмплирования(ОтелСэмплер.РешениеЗаписатьИЭкспортировать(), Атрибуты,
Состояние);