ОтелПровайдерТрассировки
Провайдер трассировки SDK (SdkTracerProvider).
Описание
Потокобезопасный объект. Создаёт и кэширует трассировщики (ОтелТрассировщик) по идентичности области: имени и версии библиотеки, адресу схемы и атрибутам. Управляет цепочкой процессоров спанов, ресурсом и сэмплером.
Аналог Java SDK: SdkTracerProvider.
Экземпляр создаётся через ОтелПостроительПровайдераТрассировки.
Методы
ПостроительТрассировщика
Создает построитель трассировщика (TracerBuilder).
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ИмяБиблиотеки | Строка | — | Имя инструментирующей библиотеки |
Возвращает: ОтелПостроительТрассировщика
ПолучитьТрассировщик
Создает или возвращает трассировщик для указанной библиотеки. Повторный вызов с теми же именем, версией, атрибутами и адресом схемы возвращает тот же трассировщик; если отличается хотя бы один параметр — другой.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ИмяБиблиотеки | Строка | — | Имя инструментирующей библиотеки |
ВерсияБиблиотеки | Строка | "" | Версия библиотеки |
АтрибутыОбласти | ОтелАтрибуты | Неопределено | Атрибуты InstrumentationScope |
АдресСхемы | Строка | "" | URL схемы телеметрии |
Возвращает: ОтелТрассировщик
ДобавитьПроцессор
Добавляет процессор спанов в цепочку.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Процессор | Процессор спанов | — | Встроенный (простой, пакетный, композитный) или свой процессор, см. ИнтерфейсПроцессорСпанов |
Сэмплер
Возвращает сэмплер провайдера: заданный УстановитьСэмплер построителя или сэмплер по умолчанию ParentBased(root=AlwaysOn). Трассировщики провайдера запрашивают у него решение при создании каждого спана.
Возвращает: ИнтерфейсСэмплер — встроенный сэмплер из ОтелСэмплер или свой; описание сэмплера возвращает его метод Описание()
Ресурс
Возвращает ресурс провайдера.
Возвращает: ОтелРесурс
СброситьБуфер
Принудительно отправляет все накопленные данные через процессоры. СброситьБуфер вызывается у каждого процессора, даже если предыдущий бросил исключение; все процессоры укладываются в общий срок — каждому передаётся оставшееся время.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 0 | Таймаут в миллисекундах (0 — без ограничения) |
Возвращает: ОтелРезультатЭкспорта — ошибка, если хотя бы один процессор сообщил о сбое или бросил исключение; иначе таймаут, если истёк срок или процессор сообщил о таймауте; иначе успех
ПринудительноВыгрузитьСРезультатом
Принудительно отправляет накопленные данные через процессоры так же, как СброситьБуфер, но возвращает ОтелРезультатЗакрытия с описаниями ошибок, а срок по умолчанию — 30 секунд. После Закрыть процессоры не вызываются: возвращается ошибка «Провайдер трассировки закрыт».
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 30000 | Таймаут операции в миллисекундах (0 — без ограничения) |
Возвращает: ОтелРезультатЗакрытия — ошибка, если провайдер закрыт или хотя бы один процессор сообщил о сбое или бросил исключение (описания ошибок перечислены через ; ); иначе таймаут, если истёк срок или процессор сообщил о таймауте; иначе успех
СброситьБуферАсинхронно
Запускает СброситьБуфер() — без ограничения срока — в фоновом задании и сразу возвращает обещание библиотеки async.
Возвращает: Обещание — Получить(Таймаут) обещания ждёт окончания выгрузки и возвращает ОтелРезультатЭкспорта; если выгрузка не закончилась за Таймаут миллисекунд, Получить выбрасывает исключение
Закрыть
Завершает работу провайдера. Закрыть вызывается у каждого процессора в пределах общего срока — даже после исключения в предыдущем и после истечения срока (тогда процессор получает 1 мс и завершается без ожидания). Повторный вызов ничего не делает и возвращает успех.
После закрытия ПолучитьТрассировщик возвращает отключённый трассировщик — его Включен() возвращает Ложь, спаны он создаёт незаписывающие, — а ПринудительноВыгрузитьСРезультатом возвращает ошибку.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 30000 | Таймаут операции в миллисекундах |
Возвращает: ОтелРезультатЗакрытия — ошибка, если хотя бы один процессор вернул ошибку или бросил исключение (описания ошибок перечислены через ; ); иначе таймаут, если истёк срок или процессор сообщил о таймауте; иначе успех
ЗакрытьАсинхронно
Запускает Закрыть() — с таймаутом по умолчанию 30000 мс — в фоновом задании и сразу возвращает обещание библиотеки async.
Возвращает: Обещание — Получить(Таймаут) обещания ждёт закрытия и возвращает ОтелРезультатЗакрытия; если закрытие не закончилось за Таймаут миллисекунд, Получить выбрасывает исключение
Внутренние методы
Экспортированы только для вызова из других модулей SDK (в OneScript нет внутренней видимости), приложению вызывать их не нужно:
Процессор— внутренний композитный процессор с цепочкой процессоров: трассировщик передаёт его спанам и проверяет по нему, есть ли процессоры;ЛимитыСпана— лимиты, которые трассировщик передаёт создаваемым спанам;Включен— признак SDK-режима провайдера, его читает трассировщик.Ложь— у no-op провайдера, которыйОтелГлобальный.ПолучитьПровайдерТрассировки()возвращает, пока не задан глобальный провайдер и нет SDK с провайдером трассировки: трассировщики такого провайдера создают незаписывающие спаны, генератор идентификаторов не вызывается. Закрытие признак не меняет;УстановитьВключен— переключает SDK-режим:ОтелГлобальныйвыключает им no-op провайдер;Закрыт—Истинас начала первого вызоваЗакрыть; SDK его не вызывает, его используют тесты;СгенерироватьИдТрассировки,СгенерироватьИдСпана— идентификаторы нового спана от генератора изУстановитьГенераторИдпостроителя или от генератора по умолчанию; некорректный идентификатор генератора пишется в лог ошибкой и заменяется идентификатором генератора по умолчанию.
Пример
Провайдер = Новый ОтелПостроительПровайдераТрассировки()
.УстановитьРесурс(Ресурс)
.ДобавитьПроцессор(Процессор)
.УстановитьСэмплер(ОтелСэмплер.НаОсновеРодителя(ОтелСэмплер.ПоДолеТрассировок(0.25)))
.Построить();
Трассировщик = Провайдер.ПолучитьТрассировщик("мой-сервис");