Skip to content

ОтелПакетныйПроцессорСпанов ​

Пакетный (асинхронный) процессор спанов.

Описание ​

Накапливает завершённые спаны в буфере и экспортирует их пакетами в фоновом потоке. Рекомендуется для производственного использования. Является тонкой обёрткой над ОтелБазовыйПакетныйПроцессор.

Аналог Java SDK: BatchSpanProcessor.

Создание ​

Конструктор без параметров. Процессор собирается через ПостроительНаследника из ОтелБазовыйПакетныйПроцессор, которому передаются настройки:

ПараметрТипПо умолчаниюОписание
ЭкспортерПроизвольный—Экспортер спанов
ИмяСигналаСтрока—Имя сигнала для лога: "traces"
МаксРазмерБуфераЧисло2048Максимальный размер очереди
МаксРазмерПакетаЧисло512Максимальный размер пакета; размер больше размера очереди ограничивается размером очереди
ИнтервалЭкспортаМсЧисло5000Интервал фонового экспорта в миллисекундах
ТаймаутЭкспортаМсЧисло30000Таймаут экспорта в миллисекундах

Спаны экспортирует фоновое задание: оно запускается с первым спаном и отправляет пакет, как только накопился полный пакет или истёк интервал экспорта. ПриЗавершении не ждёт отправку даже при заполнении пакета. ЗапуститьФоновыйЭкспорт() запускает задание заранее; вызывать его не обязательно.

Спан, пришедший в полную очередь, отбрасывается. При извлечении следующего пакета в лог oscript.lib.opentelemetry.traces пишется предупреждение с числом спанов, отброшенных с прошлого пакета.

Методы ​

ПриНачале ​

Вызывается при начале спана. В пакетном процессоре не выполняет действий.

ПараметрТипПо умолчаниюОписание
СпанОтелСпан—Начавшийся спан
РодительскийКонтекстПроизвольный—Родительский контекст

ПриЗавершении ​

Вызывается при завершении спана. Помещает сэмплированный спан в буфер и возвращается, не дожидаясь экспорта.

ПараметрТипПо умолчаниюОписание
СпанОтелСпан—Завершённый спан

СброситьБуфер ​

Принудительно экспортирует все спаны из буфера.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло0Таймаут в миллисекундах

Возвращает: ОтелРезультатЭкспорта


Закрыть ​

Завершает работу процессора: останавливает фоновый экспорт, экспортирует оставшиеся в буфере спаны и закрывает экспортер. Все три шага укладываются в один общий срок; экспортер закрывается и после сбоя или таймаута финального экспорта. Повторный вызов возвращает ошибку «Процессор закрыт».

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут в миллисекундах (0 — без ограничения)

Возвращает: ОтелРезультатЗакрытия — ошибка финального экспорта или закрытия экспортера; иначе таймаут, если истёк срок; иначе успех

Пример ​

bsl
Экспортер = Новый ОтелЭкспортерСпанов(Новый ОтелGrpcТранспорт("http://localhost:4317"));

Базовый = Новый ОтелБазовыйПакетныйПроцессор(Экспортер, "traces");
Процессор = Новый ПостроительНаследника(Новый ОтелПакетныйПроцессорСпанов(), Базовый).Построить();
Процессор.ЗапуститьФоновыйЭкспорт();

Провайдер = Новый ОтелПостроительПровайдераТрассировки()
    .ДобавитьПроцессор(Процессор)
    .Построить();

// При завершении работы приложения
РезЗакрытия = Провайдер.Закрыть(30000);
Если НЕ РезЗакрытия.Успешно() Тогда
    Сообщить("Ошибка закрытия: " + РезЗакрытия.Описание());
КонецЕсли;

См. также ​