Skip to content

ОтелЭкспортерСпанов

Экспортер завершённых спанов трассировки в формате OTLP.

Описание

Реализует экспорт спанов по спецификации OpenTelemetry (OtlpSpanExporter). Отправляет завершённые спаны на адрес /v1/traces через любой транспорт: ОтелHttpТранспорт, ОтелGrpcТранспорт или ОтелВПамятьТранспорт.

Все методы (Экспортировать, СброситьБуфер, Закрыть) безопасны для конкурентного вызова: признак закрытия хранится в АтомарноеБулево. Экспорт выполняется асинхронно через Обещания, что гарантирует ограничение по времени без блокировки потока.

Конструктор

bsl
Новый ОтелЭкспортерСпанов(Транспорт, ПутьСигнала, ТаймаутМс)
ПараметрТипПо умолчаниюОписание
ТранспортОтелHttpТранспорт, ОтелGrpcТранспорт, ОтелВПамятьТранспортТранспорт для отправки данных
ПутьСигналаСтрока"/v1/traces"Путь OTLP-адреса для отправки спанов
ТаймаутМсЧисло10000Таймаут экспорта в миллисекундах

Методы

Экспортировать

Экспортирует массив завершённых спанов. По спецификации OTel Export() не должен блокироваться бесконечно — операция ограничивается таймаутом.

ПараметрТипПо умолчаниюОписание
МассивСпановМассив из ОтелСпанСпаны для экспорта
ТаймаутЧислоНеопределеноТаймаут в миллисекундах; если не задан — используется значение из конструктора

Возвращает: БулевоИстина, если экспорт успешен; Ложь при ошибке или таймауте

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

Принудительно отправляет все накопленные данные. Для синхронного экспортера операция не требуется — всегда возвращает успех.

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

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

Закрыть

Завершает работу экспортера. После вызова метод Экспортировать() возвращает Ложь. Операция идемпотентна.

Возвращает: ОтелРезультатЗакрытия — результат закрытия

Пример

bsl
#Использовать opentelemetry

// Создать экспортер с HTTP-транспортом
Транспорт = Новый ОтелHttpТранспорт("http://localhost:4318");
Экспортер = Новый ОтелЭкспортерСпанов(Транспорт);

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

// Для тестирования — в памяти
ТестТранспорт = Новый ОтелВПамятьТранспорт();
Экспортер = Новый ОтелЭкспортерСпанов(ТестТранспорт);

// Закрыть после использования
Экспортер.Закрыть();