Skip to content

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

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

Описание ​

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

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

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

bsl
Новый ОтелЭкспортерСпанов(Транспорт, ПутьСигнала, ТаймаутМс, НовыйЗакрыватьТранспорт)
ПараметрТипПо умолчаниюОписание
ТранспортОтелHttpТранспорт, ОтелGrpcТранспорт, ОтелКонсольныйТранспорт, ОтелВПамятьТранспорт—Транспорт для отправки данных
ПутьСигналаСтрока"/v1/traces"Путь OTLP-адреса для отправки спанов
ТаймаутМсЧисло10000Таймаут экспорта в миллисекундах (OTLP Timeout), 0 — без ограничения
НовыйЗакрыватьТранспортБулевоЛожьИстина — транспорт создала библиотека (автоконфигурация, файл конфигурации), экспортер закрывает его вместе с собой. Ложь — транспорт передал пользователь и закрывает его сам: один транспорт может обслуживать несколько экспортеров

Методы ​

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

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

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

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

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

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

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

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

Закрыть ​

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

Возвращает: ОтелРезультатЗакрытия — результат закрытия; ошибка, если не удалось закрыть транспорт

Пример ​

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

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

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

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

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