Skip to content

ОтелГлобальный ​

Модуль глобального реестра OpenTelemetry (GlobalOpenTelemetry).

Описание ​

Хранит единственный экземпляр ОтелSdk для всего приложения. Потокобезопасен: использует АтомарнаяСсылка. Аналог Java SDK: GlobalOpenTelemetry.

Если SDK не установлен явно, shortcut-методы используют noop-fallback (SDK с AlwaysOff семплером, без процессоров и читателей), чтобы инструментирующий код не блокировал конфигурацию. Его провайдер метрик выдаёт no-op метры: инструменты выключены и не хранят измерений.

Глобальные провайдеры трассировки, логирования и метрик (global default TracerProvider, LoggerProvider, MeterProvider) устанавливаются и читаются и без SDK — так же, как пропагаторы. Порядок выбора: провайдер, установленный методом УстановитьПровайдер..., затем провайдер зарегистрированного SDK, затем no-op провайдер. Shortcut-методы ПолучитьТрассировщик, ПолучитьЛоггер и ПолучитьМетр берут объекты из этих провайдеров.

Функции ​

Установить ​

Устанавливает глобальный экземпляр OpenTelemetry SDK. Может быть вызван только один раз; повторный вызов вызывает исключение. Потокобезопасен (CAS).

ПараметрТипПо умолчаниюОписание
СдкОтелSdk—Экземпляр SDK

Получить ​

Возвращает глобальный экземпляр OpenTelemetry SDK.

Возвращает: ОтелSdk, Неопределено


Сбросить ​

Сбрасывает глобальный экземпляр, пропагаторы и явно установленные провайдеры. Предназначен для тестов.


СброситьИЗакрыть ​

Закрывает SDK и сбрасывает глобальный экземпляр. Явно установленные провайдеры сбрасываются без закрытия: ими владеет вызывающий код. Предназначен для тестов.


УстановитьПровайдерТрассировки / УстановитьПровайдерЛогирования / УстановитьПровайдерМетрик ​

Устанавливают глобальный провайдер сигнала. Могут использоваться независимо от SDK: установленный провайдер важнее провайдера зарегистрированного SDK.

ПараметрТипПо умолчаниюОписание
ПровайдерОтелПровайдерТрассировки, ОтелПровайдерЛогирования, ОтелПровайдерМетрик—Провайдер сигнала

ПолучитьПровайдерТрассировки / ПолучитьПровайдерЛогирования / ПолучитьПровайдерМетрик ​

Возвращают глобальный провайдер сигнала: установленный явно, иначе провайдер зарегистрированного SDK, иначе no-op провайдер. Никогда не возвращают Неопределено. Через провайдер доступны все параметры получения трассировщика, логгера и метра (атрибуты области, адрес схемы).

Возвращает: ОтелПровайдерТрассировки, ОтелПровайдерЛогирования, ОтелПровайдерМетрик


ПолучитьТрассировщик ​

Shortcut: получить трассировщик из глобального провайдера трассировки.

ПараметрТипПо умолчаниюОписание
ИмяБиблиотекиСтрока—Имя инструментирующей библиотеки
ВерсияБиблиотекиСтрока""Версия библиотеки

Возвращает: ОтелТрассировщик


ПолучитьЛоггер ​

Shortcut: получить логгер из глобального провайдера логирования.

ПараметрТипПо умолчаниюОписание
ИмяБиблиотекиСтрока—Имя инструментирующей библиотеки
ВерсияБиблиотекиСтрока""Версия библиотеки

Возвращает: ОтелЛоггер


ПолучитьМетр ​

Shortcut: получить метр из глобального провайдера метрик.

ПараметрТипПо умолчаниюОписание
ИмяБиблиотекиСтрока—Имя инструментирующей библиотеки
ВерсияБиблиотекиСтрока""Версия библиотеки

Возвращает: ОтелМетр


УстановитьПропагаторы ​

Устанавливает глобальные пропагаторы контекста. Может использоваться независимо от SDK.

ПараметрТипПо умолчаниюОписание
ПропагаторыОтелКомпозитныйПропагатор, ОтелНоопПропагатор—Пропагаторы контекста

ПолучитьПропагаторы ​

Возвращает глобальные пропагаторы контекста. Если не установлены явно — из SDK. Если пропагаторы не настроены ни явно, ни в SDK — ОтелНоопПропагатор: по спецификации API использует no-op пропагаторы, пока они не настроены. ОтелАвтоконфигурация.Инициализировать() настраивает W3C Trace Context и W3C Baggage (OTEL_PROPAGATORS по умолчанию tracecontext,baggage); SDK, собранный через ОтелПостроительSdk, получает пропагаторы через УстановитьПропагаторы.

Возвращает: ОтелКомпозитныйПропагатор, ОтелНоопПропагатор — пропагаторы контекста

Пример ​

bsl
// Регистрация
ОтелГлобальный.Установить(Сдк);

// Использование из любой точки приложения
Трассировщик = ОтелГлобальный.ПолучитьТрассировщик("мой-сервис");
Спан = Трассировщик.НачатьСпан("операция");
// ...
Спан.Завершить();

// Глобальный провайдер метрик без SDK и метр с адресом схемы
ОтелГлобальный.УстановитьПровайдерМетрик(ПровайдерМетрик);
Метр = ОтелГлобальный.ПолучитьПровайдерМетрик()
    .ПолучитьМетр("мой-сервис", "1.0.0", , "https://opentelemetry.io/schemas/1.26.0");

См. также ​