ОтелГлобальный
Модуль глобального реестра 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, получает пропагаторы через УстановитьПропагаторы.
Возвращает: ОтелКомпозитныйПропагатор, ОтелНоопПропагатор — пропагаторы контекста
Пример
// Регистрация
ОтелГлобальный.Установить(Сдк);
// Использование из любой точки приложения
Трассировщик = ОтелГлобальный.ПолучитьТрассировщик("мой-сервис");
Спан = Трассировщик.НачатьСпан("операция");
// ...
Спан.Завершить();
// Глобальный провайдер метрик без SDK и метр с адресом схемы
ОтелГлобальный.УстановитьПровайдерМетрик(ПровайдерМетрик);
Метр = ОтелГлобальный.ПолучитьПровайдерМетрик()
.ПолучитьМетр("мой-сервис", "1.0.0", , "https://opentelemetry.io/schemas/1.26.0");