Skip to content

Публичный интерфейс библиотеки opentelemetry

Ядро

Трассировка

Логирование

  • ОтелПровайдерЛогирования — провайдер логирования SDK
  • ОтелЛоггер — логгер для записи событий
  • ОтелЗаписьЛога — запись журнала (LogRecord)
  • ОтелПростойПроцессорЛогов — синхронный процессор записей журнала
  • ОтелПакетныйПроцессорЛогов — пакетный процессор записей журнала
  • ОтелПостроительЛоггера — построитель логгера
  • ОтелПостроительПровайдераЛогирования — построитель провайдера логирования
  • ОтелСтепеньСерьезности — константы степени серьезности лог-записи

Метрики

  • ОтелПровайдерМетрик — провайдер метрик SDK
  • ОтелМетр — метр для создания инструментов метрик
  • ОтелСчетчик — монотонно возрастающий счетчик (Counter)
  • ОтелРеверсивныйСчетчик — двунаправленный счетчик (UpDownCounter)
  • ОтелДатчик — синхронный датчик значений (Gauge)
  • ОтелГистограмма — гистограмма распределения (Histogram)
  • ОтелПостроительМетра — построитель метра
  • ОтелПостроительПровайдераМетрик — построитель провайдера метрик
  • ОтелПериодическийЧитательМетрик — периодическое чтение метрик для экспорта

Экспорт

  • ОтелЭкспортерСпанов — OTLP-экспортер спанов
  • ОтелЭкспортерЛогов — OTLP-экспортер записей журнала
  • ОтелЭкспортерМетрик — OTLP-экспортер метрик
  • ОтелHttpТранспорт — HTTP/JSON транспорт для OTLP
  • ОтелGrpcТранспорт — gRPC транспорт для OTLP
  • ОтелВПамятьТранспорт — транспорт в памяти (для тестирования)
  • ОтелНастройкиTls — настройки TLS-соединения

Пропагация

  • ОтелW3CПропагатор — пропагатор W3C Trace Context
  • ОтелW3CBaggageПропагатор — пропагатор W3C Baggage
  • ОтелКомпозитныйПропагатор — составной пропагатор
  • ОтелНоопПропагатор — пустой пропагатор (noop)
  • ОтелГеттерТекстовойКарты — вспомогательный класс для чтения заголовков
  • ОтелСеттерТекстовойКарты — вспомогательный класс для записи заголовков

Конфигурация

Интеграции

  • ОтелАппендерLogos — аппендер для интеграции с библиотекой логирования Logos

ОтелАппендерLogos

Аппендер logos для отправки логов через OpenTelemetry.

Описание

Реализует интерфейс аппендера библиотеки logos (oscript-library/logos), перенаправляя сообщения логирования в формате OTLP через [ОтелЛоггер].

Позволяет использовать существующую инфраструктуру логирования на основе logos и одновременно отправлять логи в OpenTelemetry-совместимые системы (Grafana Loki, Jaeger и т.д.).

Маппинг уровней logos → OTel SeverityNumber:

Уровень logosЗначениеOTel SeverityНомер
Отладка0DEBUG5
Информация1INFO9
Предупреждение2WARN13
Ошибка3ERROR17
КритичнаяОшибка4FATAL21

Исключения, возникающие внутри аппендера, перехватываются и не распространяются в цепочку logos — это защищает логирование от сбоев OTel-инфраструктуры.

Конструктор

bsl
Новый ОтелАппендерLogos(Логгер)
ПараметрТипПо умолчаниюОписание
ЛоггерОтелЛоггерНеопределеноНастроенный логгер OpenTelemetry для отправки записей. Можно установить позже через УстановитьЛоггер()

Методы

ВывестиСобытие

Выводит событие лога через OpenTelemetry. Вызывается библиотекой logos при каждом событии логирования. Маппирует уровень, тело, временну́ю метку и дополнительные поля события.

ПараметрТипПо умолчаниюОписание
СобытиеЛогаСобытиеЛогаСобытие из библиотеки logos

Закрыть

Закрывает аппендер. Ресурсов, требующих явного закрытия, нет.

УстановитьСвойство

Устанавливает свойство аппендера из конфигурационного файла logos. Свойства не поддерживаются, конфигурация выполняется через конструктор.

ПараметрТипПо умолчаниюОписание
ИмяСвойстваСтрокаИмя свойства
ЗначениеПроизвольныйЗначение свойства

УстановитьЛоггер

Устанавливает OTel-логгер для отправки данных.

ПараметрТипПо умолчаниюОписание
ЗначениеОтелЛоггерНастроенный логгер OpenTelemetry

Логгер

Возвращает текущий OTel-логгер.

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

Пример

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

// Создать OTel-логгер
Транспорт = Новый ОтелHttpТранспорт("http://localhost:4318");
ЭкспортерЛогов = Новый ОтелЭкспортерЛогов(Транспорт);
// ... настроить провайдер логирования ...

// Создать аппендер и привязать к логгеру
ОтелЛоггер = ПровайдерЛогирования.ПолучитьЛоггер("мое.приложение");
Аппендер = Новый ОтелАппендерLogos(ОтелЛоггер);

// Подключить аппендер к logos
МенеджерЛогирования.ДобавитьАппендер("otel", Аппендер);

// Теперь все вызовы logos автоматически отправляются в OpenTelemetry
Лог = Логирование.ПолучитьЛог("мое.приложение");
Лог.Информация("Сообщение отправляется в OTel");

ОтелАвтоконфигурация

Модуль автоматической конфигурации SDK на основе переменных окружения и YAML-файла.

Описание

Реализует спецификацию OpenTelemetry SDK Environment Variable Specification. Читает конфигурацию из переменных окружения или YAML-файла (при установленной OTEL_CONFIG_FILE).

Основная точка входа — функция Инициализировать().

Поддерживаемые переменные окружения

ПеременнаяОписание
OTEL_CONFIG_FILEПуть к YAML-файлу конфигурации
OTEL_SERVICE_NAMEИмя сервиса (атрибут ресурса)
OTEL_RESOURCE_ATTRIBUTESАтрибуты ресурса в формате key=val,key2=val2
OTEL_EXPORTER_OTLP_ENDPOINTАдрес OTLP-экспортера
OTEL_EXPORTER_OTLP_PROTOCOLПротокол (grpc, http/protobuf)
OTEL_TRACES_SAMPLERСтратегия семплирования (always_on, always_off, traceidratio, parentbased_always_on, parentbased_always_off, parentbased_traceidratio)
OTEL_TRACES_SAMPLER_ARGАргумент семплера (доля для traceidratio)
OTEL_PROPAGATORSПропагаторы через запятую (tracecontext, baggage)
OTEL_SDK_DISABLEDОтключить SDK (true/false)
OTEL_LOG_LEVELУровень логирования SDK

Функции

Инициализировать

Главная функция инициализации. Конфигурирует SDK по переменным окружения (или YAML-файлу), регистрирует провайдеры в ОтелГлобальный и возвращает готовый SDK.

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

Возвращает: ОтелSdk — инициализированный объект SDK


СоздатьМенеджерПараметровПоУмолчанию

Создаёт менеджер параметров, читающий конфигурацию из переменных окружения.

Возвращает: МенеджерПараметров — объект для передачи в Инициализировать()


СоздатьРесурс

Создаёт ресурс из параметров конфигурации.

ПараметрТипПо умолчаниюОписание
МенеджерПараметровПроизвольныйМенеджер параметров
ПользовательскийРесурсОтелРесурсНеопределеноДополнительный ресурс, объединяется с автоматически созданным

Возвращает: ОтелРесурс


СоздатьТранспорт

Создаёт транспорт для экспортеров на основе параметров конфигурации.

ПараметрТипПо умолчаниюОписание
МенеджерПараметровПроизвольныйМенеджер параметров

Возвращает: транспортный объект для экспортера


СоздатьПровайдерТрассировки

Создаёт и конфигурирует провайдер трассировки.

ПараметрТипПо умолчаниюОписание
МенеджерПараметровПроизвольныйМенеджер параметров

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


СоздатьПровайдерЛогирования

Создаёт и конфигурирует провайдер логирования.

ПараметрТипПо умолчаниюОписание
МенеджерПараметровПроизвольныйМенеджер параметров

Возвращает: провайдер логирования


СоздатьПровайдерМетрик

Создаёт и конфигурирует провайдер метрик.

ПараметрТипПо умолчаниюОписание
МенеджерПараметровПроизвольныйМенеджер параметров

Возвращает: провайдер метрик

Пример

bsl
// Минимальная инициализация по переменным окружения
// (OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_ENDPOINT должны быть установлены)
Сдк = ОтелАвтоконфигурация.Инициализировать();

Трассировщик = Сдк.ПолучитьТрассировщик("мой-сервис");

// Расширенная инициализация с пользовательским ресурсом
МенеджерПараметров = ОтелАвтоконфигурация.СоздатьМенеджерПараметровПоУмолчанию();
ПользовательскийРесурс = Новый ОтелПостроительРесурса()
    .ДобавитьАтрибут("deployment.environment", "production")
    .Построить();
ИтоговыйРесурс = ОтелАвтоконфигурация.СоздатьРесурс(
    МенеджерПараметров,
    ПользовательскийРесурс
);

// При завершении работы
Сдк.Закрыть(30000);

YAML-конфигурация

При установленной переменной OTEL_CONFIG_FILE читается YAML-файл:

yaml
service:
  name: мой-сервис
exporters:
  otlp:
    endpoint: http://localhost:4317
    protocol: grpc
traces:
  sampler:
    name: parentbased_traceidratio
    args: "0.1"

См. также


ОтелФайловаяКонфигурация

Модуль файловой конфигурации OpenTelemetry SDK.

Описание

Читает YAML-файл конфигурации, выполняет подстановку переменных окружения и возвращает типизированную дата-модель (ОтелКонфигурация).

Реализует спецификацию:

Формат файла: YAML, обязательное поле file_format (поддерживается версия 1.x).

Подстановка переменных: переменные вида ${ENV_VAR_NAME} автоматически заменяются значениями из окружения через ОтелПодстановкаПеременных.

Методы модуля

Разобрать

Разбирает файл конфигурации и возвращает типизированную модель ОтелКонфигурация.

ПараметрТипПо умолчаниюОписание
ПутьКФайлуСтрокаПуть к YAML-файлу конфигурации

Возвращает: ОтелКонфигурация — разобранная конфигурация

Исключения:

  • Файл не найден по указанному пути
  • YAML не является маппингом верхнего уровня
  • Поле file_format не указано
  • Версия формата не поддерживается (не 1.x)

Пример

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

// Разобрать файл конфигурации
Конфигурация = ОтелФайловаяКонфигурация.Разобрать("/etc/otel/config.yaml");

// Проверить флаг отключения
Если Конфигурация.Отключен Тогда
    // OpenTelemetry отключён в конфигурации
    Возврат;
КонецЕсли;

// Использовать автоконфигурацию
ОтелАвтоконфигурация.Применить(Конфигурация);

Пример YAML-файла конфигурации:

yaml
file_format: "1.0"
disabled: false

resource:
  attributes:
    service.name: "${SERVICE_NAME}"
    service.version: "1.0.0"

tracer_provider:
  processors:
    - batch:
        exporter:
          otlp:
            protocol: http/protobuf
            endpoint: "${OTLP_ENDPOINT}"

ОтелЗаписьЛога

Запись лога (LogRecord) — объект, содержащий все поля одной записи лога.

Описание

ОтелЗаписьЛога реализует спецификацию OpenTelemetry LogRecord / ReadWriteLogRecord. Содержит: тело, серьезность, атрибуты, время, имя события, контекст трассировки, ресурс и scope.

После вызова Логгер.Записать() запись фиксируется (Зафиксировать()) и становится неизменяемой — все сеттеры превращаются в no-op.

Уважает лимиты атрибутов из ОтелЛимитыЗаписейЛога: атрибуты сверх лимита отбрасываются, длинные строковые значения усекаются.

Конструктор

ПараметрТипПо умолчаниюОписание
ЛимитыЗаписейЛогаОтелЛимитыЗаписейЛогаНеопределеноЛимиты записей лога (иначе 128 атрибутов, без ограничения длины)

Методы — Геттеры

Время

Возвращает время записи лога в наносекундах Unix epoch.

Возвращает: Строка


ВремяНаблюдения

Возвращает время наблюдения записи лога в наносекундах Unix epoch.

Возвращает: Строка


НомерСерьезности

Возвращает номер серьезности (SeverityNumber).

Возвращает: Число


ТекстСерьезности

Возвращает текст серьезности (SeverityText).

Возвращает: Строка


Тело

Возвращает тело записи лога.

Возвращает: Строка


Атрибуты

Возвращает атрибуты записи лога.

Возвращает: ОтелАтрибуты


ИдТрассировки

Возвращает идентификатор трассировки для корреляции.

Возвращает: Строка


ИдСпана

Возвращает идентификатор спана для корреляции.

Возвращает: Строка


ФлагиТрассировки

Возвращает флаги трассировки (TraceFlags).

Возвращает: Число


Ресурс

Возвращает ресурс, описывающий источник телеметрии.

Возвращает: ОтелРесурс


ОбластьИнструментирования

Возвращает область инструментирования (InstrumentationScope).

Возвращает: ОтелОбластьИнструментирования


КоличествоОтброшенныхАтрибутов

Возвращает количество атрибутов, отброшенных из-за превышения лимита.

Возвращает: Число


ИмяСобытия

Возвращает имя события (EventName) по спецификации.

Возвращает: Строка


ИнформацияОбИсключении

Возвращает информацию об исключении (если установлена).

Возвращает: ИнформацияОбОшибке, Неопределено


Контекст

Возвращает контекст, в котором была эмитирована запись. Используется Event Bridge.

Возвращает: Соответствие, Неопределено

Методы — Сеттеры (fluent API)

Все сеттеры возвращают ОтелЗаписьЛога (ЭтотОбъект) для цепочки вызовов. После Зафиксировать() становятся no-op.

УстановитьСерьезность

Устанавливает серьезность по номеру из ОтелСтепеньСерьезности. Автоматически устанавливает ТекстСерьезности.

ПараметрТипПо умолчаниюОписание
ЗначениеЧислоНомер серьезности (см. ОтелСтепеньСерьезности)

УстановитьТекстСерьезности

Устанавливает произвольный текст серьезности независимо от номера.

ПараметрТипПо умолчаниюОписание
ЗначениеСтрокаТекст серьезности

УстановитьТело

Устанавливает тело записи. Принимает строку, число, булево, массив или соответствие (AnyValue).

ПараметрТипПо умолчаниюОписание
ЗначениеПроизвольныйСодержимое лога

УстановитьАтрибут

Устанавливает атрибут записи лога. Уважает лимиты: атрибуты сверх лимита отбрасываются, строки длиннее лимита усекаются.

ПараметрТипПо умолчаниюОписание
КлючСтрокаИмя атрибута
ЗначениеПроизвольныйЗначение атрибута

УдалитьАтрибут

Удаляет атрибут записи лога (ReadWriteLogRecord MUST поддерживать удаление).

ПараметрТипПо умолчаниюОписание
КлючСтрокаИмя атрибута

УстановитьКонтекстТрассировки

Устанавливает контекст трассировки для корреляции лога с трассировкой.

ПараметрТипПо умолчаниюОписание
НовыйИдТрассировкиСтрокаИдентификатор трассировки
НовыйИдСпанаСтрокаИдентификатор спана

УстановитьФлагиТрассировки

Устанавливает флаги трассировки.

ПараметрТипПо умолчаниюОписание
ФлагиЧислоФлаги трассировки

УстановитьИмяСобытия

Устанавливает имя события (EventName) по спецификации.

ПараметрТипПо умолчаниюОписание
ЗначениеСтрокаИмя события

УстановитьВремя

Устанавливает время записи лога в наносекундах Unix epoch.

ПараметрТипПо умолчаниюОписание
ВремяНаносекундыСтрокаВремя в наносекундах

УстановитьВремяНаблюдения

Устанавливает время наблюдения записи лога в наносекундах Unix epoch.

ПараметрТипПо умолчаниюОписание
ВремяНаносекундыСтрокаВремя наблюдения в наносекундах

УстановитьИсключение

Устанавливает информацию об исключении. SDK автоматически извлечёт атрибуты exception.type, exception.message, exception.stacktrace.

ПараметрТипПо умолчаниюОписание
ЗначениеИнформацияОбОшибкеИнформация об исключении

Зафиксировать

Фиксирует запись лога, делая её неизменяемой. Автоматически вызывается в Логгер.Записать().

Пример

bsl
Запись = Логгер.СоздатьЗаписьЛога();
Запись
    .УстановитьСерьезность(ОтелСтепеньСерьезности.Error())
    .УстановитьТело("Критическая ошибка обработки заказа")
    .УстановитьАтрибут("order.id", "12345")
    .УстановитьАтрибут("user.id", "42")
    .УстановитьИмяСобытия("order.failed");
Логгер.Записать(Запись);

// С исключением
Попытка
    ОбработатьЗаказ();
Исключение
    Запись = Логгер.СоздатьЗаписьЛога();
    Запись
        .УстановитьСерьезность(ОтелСтепеньСерьезности.Error())
        .УстановитьТело("Ошибка обработки заказа")
        .УстановитьИсключение(ИнформацияОбОшибке());
    Логгер.Записать(Запись);
КонецПопытки;

ОтелЛимитыЗаписейЛога

Лимиты записей лога (LogLimits) — настройки ограничений атрибутов.

Описание

ОтелЛимитыЗаписейЛога задаёт ограничения на количество атрибутов и длину их строковых значений в ОтелЗаписьЛога. Используется при создании провайдера через ОтелПостроительПровайдераЛогирования.

Аналог Java SDK: io.opentelemetry.sdk.logs.LogLimits.

По умолчанию: максимум 128 атрибутов, без ограничения длины строковых значений.

Методы

МаксАтрибутов

Возвращает максимальное количество атрибутов записи лога.

Возвращает: Число


МаксДлинаЗначенияАтрибута

Возвращает максимальную длину значения строкового атрибута. 0 означает отсутствие ограничения.

Возвращает: Число


УстановитьМаксАтрибутов

Устанавливает максимальное количество атрибутов записи лога.

ПараметрТипПо умолчаниюОписание
ЗначениеЧислоМаксимальное количество атрибутов

Возвращает: ОтелЛимитыЗаписейЛогаЭтотОбъект для цепочки вызовов


УстановитьМаксДлинаЗначенияАтрибута

Устанавливает максимальную длину значения строкового атрибута. 0 — без ограничения.

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

Возвращает: ОтелЛимитыЗаписейЛогаЭтотОбъект для цепочки вызовов

Пример

bsl
Лимиты = Новый ОтелЛимитыЗаписейЛога()
    .УстановитьМаксАтрибутов(256)
    .УстановитьМаксДлинаЗначенияАтрибута(2048);

Провайдер = Новый ОтелПостроительПровайдераЛогирования()
    .УстановитьРесурс(Ресурс)
    .УстановитьЛимитыЗаписейЛога(Лимиты)
    .Построить();

ОтелЛоггер

Логгер (Logger) — инструмент для создания и отправки записей лога.

Описание

ОтелЛоггер реализует спецификацию OpenTelemetry Logger API. Создаётся через ОтелПровайдерЛогирования. Логгер привязан к ОтелОбластьИнструментирования и делегирует записи цепочке процессоров провайдера.

Все публичные методы потокобезопасны.

Методы

СоздатьЗаписьЛога

Создаёт новую запись лога с лимитами из провайдера.

Возвращает: ОтелЗаписьЛога


Включен

Проверяет, включён ли логгер для заданных параметров. Предназначен для оптимизации hot path — позволяет пропустить создание ОтелЗаписьЛога, если логгер заведомо ничего не сделает.

Важно: Результат может меняться со временем. Кэшировать значение между Записать-вызовами недопустимо (спецификация Logs API §16).

ПараметрТипПо умолчаниюОписание
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст (иначе текущий контекст потока)
ОбластьИнструментированияОтелОбластьИнструментированияНеопределеноScope (иначе scope логгера)
СтепеньСерьезностиЧисло0Номер серьезности для фильтрации
ИмяСобытияСтрока""Имя события для фильтрации

Возвращает: БулевоИстина, если логгер может обрабатывать записи


Записать

Отправляет запись лога. Устанавливает scope, resource и trace context, затем передаёт запись процессору. После вызова запись становится неизменяемой (Зафиксировать()).

ПараметрТипПо умолчаниюОписание
ЗаписьЛогаОтелЗаписьЛогаЗапись лога для отправки
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст для trace correlation

ОбластьИнструментирования

Возвращает область инструментирования логгера.

Возвращает: ОтелОбластьИнструментирования

Пример

bsl
Логгер = Провайдер.ПолучитьЛоггер("мой-сервис", "1.0.0");

Если Логгер.Включен(, , ОтелСтепеньСерьезности.Info()) Тогда
    Запись = Логгер.СоздатьЗаписьЛога();
    Запись
        .УстановитьСерьезность(ОтелСтепеньСерьезности.Info())
        .УстановитьТело("Операция завершена")
        .УстановитьАтрибут("user.id", "42");
    Логгер.Записать(Запись);
КонецЕсли;

ОтелПакетныйПроцессорЛогов

Пакетный процессор записей логов (BatchLogRecordProcessor) по спецификации OpenTelemetry.

Описание

Буферизует записи лога и отправляет их экспортеру асинхронно, партиями. Thin facade — вся логика буферизации реализована в ОтелБазовыйПакетныйПроцессор.

Реализует ИнтерфейсПроцессорЛогов.

Важно: Процессор хранит переданный объект ОтелЗаписьЛога as-is и обрабатывает его асинхронно. Если вызывающая сторона продолжает модифицировать запись после ПриПоявлении() — возможны гонки данных. Передавайте клон или не модифицируйте запись после передачи.

Методы

ПриПоявлении

Добавляет запись лога в буфер (OnEmit). Буфер обрабатывается асинхронно.

ПараметрТипПо умолчаниюОписание
ЗаписьЛогаОтелЗаписьЛогаЗапись лога (не должна модифицироваться после передачи)
КонтекстСоответствие, НеопределеноНеопределеноРазрешённый контекст

Включен

Проверяет, будет ли процессор обрабатывать запись. Всегда возвращает Истина. Реализация не мутирует переданные объекты.

ПараметрТипПо умолчаниюОписание
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст
ОбластьИнструментированияОтелОбластьИнструментированияНеопределеноScope логгера
СтепеньСерьезностиЧисло0Номер серьезности
ИмяСобытияСтрока""Имя события

Возвращает: Булево

Пример

bsl
Процессор = Новый ОтелПакетныйПроцессорЛогов();

Провайдер = Новый ОтелПостроительПровайдераЛогирования()
    .УстановитьРесурс(Ресурс)
    .ДобавитьПроцессор(Процессор)
    .Построить();

ОтелПостроительПровайдераЛогирования

Построитель провайдера логирования (SdkLoggerProviderBuilder) с fluent API.

Описание

Используется для пошаговой конфигурации ОтелПровайдерЛогирования: задаёт ресурс, процессоры логов и лимиты записей. Аналог Java SDK: SdkLoggerProvider.builder().

Методы

УстановитьРесурс

Устанавливает ресурс, описывающий источник телеметрии.

ПараметрТипПо умолчаниюОписание
ЗначениеОтелРесурсРесурс телеметрии

Возвращает: ОтелПостроительПровайдераЛогированияЭтотОбъект для цепочки вызовов


ДобавитьПроцессор

Добавляет процессор логов. Аналог Java SDK: SdkLoggerProviderBuilder.addLogRecordProcessor(processor).

ПараметрТипПо умолчаниюОписание
ПроцессорПроизвольныйПроцессор логов (реализует ИнтерфейсПроцессорЛогов)

Возвращает: ОтелПостроительПровайдераЛогированияЭтотОбъект для цепочки вызовов


УстановитьЛимитыЗаписейЛога

Устанавливает лимиты записей лога. Аналог Java SDK: SdkLoggerProviderBuilder.setLogLimits(logLimits).

ПараметрТипПо умолчаниюОписание
ЗначениеОтелЛимитыЗаписейЛогаЛимиты записей лога

Возвращает: ОтелПостроительПровайдераЛогированияЭтотОбъект для цепочки вызовов


Построить

Создаёт экземпляр провайдера логирования с заданными параметрами.

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

Пример

bsl
Провайдер = Новый ОтелПостроительПровайдераЛогирования()
    .УстановитьРесурс(Ресурс)
    .ДобавитьПроцессор(Новый ОтелПростойПроцессорЛогов(Экспортер))
    .УстановитьЛимитыЗаписейЛога(
        Новый ОтелЛимитыЗаписейЛога()
            .УстановитьМаксАтрибутов(256)
    )
    .Построить();

ОтелПровайдерЛогирования

Провайдер логирования (LoggerProvider) — центральная точка управления логгерами и процессорами.

Описание

ОтелПровайдерЛогирования реализует спецификацию OpenTelemetry LoggerProvider. Хранит кэш логгеров по ключу (имя библиотеки + версия + атрибуты scope) и делегирует записи логов цепочке процессоров. Все публичные методы потокобезопасны.

Рекомендуется создавать через ОтелПостроительПровайдераЛогирования.

Конструктор

ПараметрТипПо умолчаниюОписание
РесурсОтелРесурсРесурс, описывающий источник телеметрии
КонфигураторДействие, НеопределеноНеопределеноCallback ОбластьИнструментирования → ОтелКонфигурацияЛоггера
ЛимитыЗаписейЛогаОтелЛимитыЗаписейЛогаНеопределеноЛимиты записей лога

Методы

ПостроительЛоггера

Создаёт построитель логгера (LoggerBuilder).

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

Возвращает: ОтелПостроительЛоггера


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

Создаёт или возвращает из кэша логгер для указанной библиотеки. После Закрыть() возвращает рабочий no-op логгер.

ПараметрТипПо умолчаниюОписание
ИмяБиблиотекиСтрокаИмя инструментирующей библиотеки
ВерсияБиблиотекиСтрока""Версия библиотеки
АтрибутыОбластиОтелАтрибутыНеопределеноАтрибуты InstrumentationScope
АдресСхемыСтрока""URL схемы телеметрии

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


ДобавитьПроцессор

Добавляет процессор логов в цепочку.

ПараметрТипПо умолчаниюОписание
ПроцессорПроизвольныйПроцессор логов (реализует ИнтерфейсПроцессорЛогов)

Ресурс

Возвращает ресурс провайдера.

Возвращает: ОтелРесурс


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

Принудительно отправляет все накопленные данные через процессоры.

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

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


Закрыть

Завершает работу провайдера (Shutdown). Идемпотентен. После закрытия ПолучитьЛоггер() возвращает no-op логгер.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут операции в миллисекундах

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


ПринудительноВыгрузитьСРезультатом

Принудительно отправляет все данные и возвращает результат в формате OTel SDK.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут операции в миллисекундах

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


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

Асинхронно сбрасывает буфер. Аналог Java SDK: CompletableResultCode forceFlush().

Возвращает: Обещание


ЗакрытьАсинхронно

Асинхронно завершает работу провайдера. Аналог Java SDK: CompletableResultCode shutdown().

Возвращает: Обещание


ОбновитьКонфигуратор

Обновляет конфигуратор логгеров и пропагирует изменения во все ранее созданные логгеры.

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

Пример

bsl
Провайдер = Новый ОтелПостроительПровайдераЛогирования()
    .УстановитьРесурс(Ресурс)
    .ДобавитьПроцессор(Новый ОтелПростойПроцессорЛогов(Экспортер))
    .Построить();

Логгер = Провайдер.ПолучитьЛоггер("мой-сервис", "1.0.0");

// После завершения работы
Провайдер.Закрыть();

ОтелПростойПроцессорЛогов

Простой процессор записей логов (SimpleLogRecordProcessor) по спецификации OpenTelemetry.

Описание

Синхронно передаёт каждую запись лога экспортеру в момент вызова ПриПоявлении(). Аналог ОтелПростойПроцессорСпанов для подсистемы логирования. Потокобезопасен — доступ к экспортеру защищён блокировкой.

Реализует ИнтерфейсПроцессорЛогов.

Конструктор

ПараметрТипПо умолчаниюОписание
ЭкспортерОтелЭкспортерЛоговЭкспортер записей логов

Методы

ПриПоявлении

Обрабатывает запись лога — синхронно передаёт экспортеру. После Закрыть() записи игнорируются. Ошибки экспортера логируются и не пробрасываются наверх.

ПараметрТипПо умолчаниюОписание
ЗаписьЛогаОтелЗаписьЛогаЗапись лога
КонтекстСоответствие, НеопределеноНеопределеноРазрешённый контекст

Включен

Проверяет, будет ли процессор обрабатывать запись. Реализация не мутирует переданные объекты. Всегда возвращает Истина (процессор без фильтрации).

ПараметрТипПо умолчаниюОписание
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст
ОбластьИнструментированияОтелОбластьИнструментированияНеопределеноScope логгера
СтепеньСерьезностиЧисло0Номер серьезности
ИмяСобытияСтрока""Имя события

Возвращает: Булево


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

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

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло0Таймаут в миллисекундах

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


Закрыть

Завершает работу процессора. После вызова ПриПоявлении игнорирует новые записи. Идемпотентен.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут в миллисекундах

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


ПринудительноВыгрузитьСРезультатом

Принудительно выгружает накопленные данные и возвращает результат.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут в миллисекундах

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

Пример

bsl
Процессор = Новый ОтелПростойПроцессорЛогов(МойОтлпЭкспортер);

Провайдер = Новый ОтелПостроительПровайдераЛогирования()
    .УстановитьРесурс(Ресурс)
    .ДобавитьПроцессор(Процессор)
    .Построить();

ОтелПроцессорСобытийВSpanEvents

Процессор-мост Logs → Span Events (Event Bridge) по спецификации OpenTelemetry.

Описание

При появлении записи лога с непустым ИмяСобытия и наличии активного записываемого Span перекладывает событие в Span.ДобавитьСобытие(). Это позволяет использовать единый Logs API для эмиссии событий и автоматически получать span events в trace-данных.

Реализует ИнтерфейсПроцессорЛогов. Соответствует спецификации Logs SDK §48.

Поведение:

  • Запись без ИмяСобытия — пропускается.
  • Нет активного записываемого Span — пропускается.
  • Иначе — Span.ДобавитьСобытие(ИмяСобытия, Атрибуты, Время).

Процессор не экспортирует логи. Регистрируйте его вместе с ОтелПростойПроцессорЛогов или ОтелПакетныйПроцессорЛогов, если запись должна попасть и в логи, и в span events.

Методы

ПриПоявлении

Преобразует лог-событие в Span Event, если есть активный записываемый спан. Ошибки добавления события не пробрасываются наружу.

ПараметрТипПо умолчаниюОписание
ЗаписьЛогаОтелЗаписьЛогаЗапись лога
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст для поиска активного спана

Включен

Возвращает Истина, если процессор не закрыт.

ПараметрТипПо умолчаниюОписание
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст
ОбластьИнструментированияОтелОбластьИнструментированияНеопределеноScope логгера
СтепеньСерьезностиЧисло0Номер серьезности
ИмяСобытияСтрока""Имя события

Возвращает: Булево


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

Процессор не буферизует — всегда возвращает Успех.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло0Не используется

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


Закрыть

Завершает работу процессора. После вызова ПриПоявлении игнорирует записи.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло0Не используется

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

Пример

bsl
// Регистрация вместе с основным процессором
Провайдер = Новый ОтелПостроительПровайдераЛогирования()
    .УстановитьРесурс(Ресурс)
    .ДобавитьПроцессор(Новый ОтелПростойПроцессорЛогов(Экспортер))
    .ДобавитьПроцессор(Новый ОтелПроцессорСобытийВSpanEvents())
    .Построить();

// Запись попадёт и в логи, и в span events активного спана
Запись = Логгер.СоздатьЗаписьЛога();
Запись
    .УстановитьИмяСобытия("user.login")
    .УстановитьАтрибут("user.id", "42");
Логгер.Записать(Запись);

ОтелСтепеньСерьезности

Модуль констант степеней серьезности (SeverityNumber) по спецификации OpenTelemetry.

Описание

Значения соответствуют OTLP SeverityNumber enum. Используется для задания степени серьезности в ОтелЗаписьЛога.УстановитьСерьезность() и фильтрации в ОтелЛоггер.Включен().

Каждый уровень имеет диапазон из 4 значений (например, INFO = 9..12). Для стандартных уровней используйте именованные функции.

Методы

Trace

Возвращает номер серьезности TRACE (1).

Возвращает: ЧислоSEVERITY_NUMBER_TRACE


Debug

Возвращает номер серьезности DEBUG (5).

Возвращает: ЧислоSEVERITY_NUMBER_DEBUG


Info

Возвращает номер серьезности INFO (9).

Возвращает: ЧислоSEVERITY_NUMBER_INFO


Warn

Возвращает номер серьезности WARN (13).

Возвращает: ЧислоSEVERITY_NUMBER_WARN


Error

Возвращает номер серьезности ERROR (17).

Возвращает: ЧислоSEVERITY_NUMBER_ERROR


Fatal

Возвращает номер серьезности FATAL (21).

Возвращает: ЧислоSEVERITY_NUMBER_FATAL


ТекстСерьезности

Возвращает текстовое представление серьезности по номеру (TRACE, DEBUG, INFO, WARN, ERROR, FATAL). Номер 0 (SEVERITY_NUMBER_UNSPECIFIED) возвращает пустую строку.

ПараметрТипПо умолчаниюОписание
НомерСерьезностиЧислоНомер серьезности (SeverityNumber)

Возвращает: Строка

Пример

bsl
// Запись с уровнем INFO
Запись.УстановитьСерьезность(ОтелСтепеньСерьезности.Info());

// Запись с уровнем ERROR
Запись.УстановитьСерьезность(ОтелСтепеньСерьезности.Error());

// Фильтрация по уровню
Если Логгер.Включен(, , ОтелСтепеньСерьезности.Warn()) Тогда
    // создать и отправить запись
КонецЕсли;

// Получить текст по номеру
Текст = ОтелСтепеньСерьезности.ТекстСерьезности(17); // "ERROR"

ОтелАгрегация

Модуль стратегий агрегации метрик.

Описание

ОтелАгрегация — глобальный модуль-фабрика конфигураций агрегации для инструментов метрик. Используется в ОтелПредставление и при настройке читателей.

Функции

ПоУмолчанию

Возвращает конфигурацию агрегации по умолчанию (определяется типом инструмента).

Возвращает: конфигурация агрегации Default


Сумма

Возвращает конфигурацию суммирующей агрегации.

Возвращает: конфигурация агрегации Sum


ПоследнееЗначение

Возвращает конфигурацию агрегации «последнее значение» (last value).

Возвращает: конфигурация агрегации LastValue


Отбросить

Возвращает конфигурацию агрегации «отбросить» — данные не собираются.

Возвращает: конфигурация агрегации Drop


ГистограммаСЯвнымиГраницами

Возвращает конфигурацию агрегации гистограммы с явно заданными границами бакетов.

ПараметрТипПо умолчаниюОписание
ГраницыМассивСписок числовых границ бакетов, строго монотонно возрастающий

Возвращает: конфигурация агрегации ExplicitBucketHistogram


ГистограммаЭкспоненциальная

Возвращает конфигурацию агрегации экспоненциальной гистограммы.

ПараметрТипПо умолчаниюОписание
МаксБакетовЧислоМаксимальное число бакетов

Возвращает: конфигурация агрегации ExponentialHistogram


СоздатьАгрегаторИзКонфигурации

Создаёт экземпляр агрегатора из конфигурации.

ПараметрТипПо умолчаниюОписание
Параметрыконфигурация агрегацииКонфигурация агрегации
АгрегаторБазабазовый агрегаторБазовый агрегатор

Возвращает: агрегатор

Пример

bsl
// Явные границы бакетов для гистограммы запросов
Границы = Новый Массив();
Границы.Добавить(0.005);
Границы.Добавить(0.01);
Границы.Добавить(0.025);
Границы.Добавить(0.05);
Границы.Добавить(0.1);
Границы.Добавить(0.25);
Границы.Добавить(0.5);
Границы.Добавить(1);

Агрегация = ОтелАгрегация.ГистограммаСЯвнымиГраницами(Границы);

Представление = Новый ОтелПредставление(
    Неопределено,    // НовоеИмя
    Неопределено,    // НовоеОписание
    Неопределено,    // РазрешенныеКлючи
    Неопределено,    // ИсключенныеКлючи
    Неопределено,    // ГраницыГистограммы
    Агрегация);      // Агрегация

ОтелВременнаяАгрегация

Модуль констант типов временной агрегации (temporality).

Описание

ОтелВременнаяАгрегация — глобальный модуль с константами режимов временной агрегации метрик.

Тип временной агрегации определяет, как значения агрегируются во времени:

  • Кумулятивная — значения накапливаются с момента запуска; всегда увеличиваются
  • Дельта — значения сбрасываются после каждой выгрузки; показывают изменение за период

Функции

НеУказана

Возвращает значение для неуказанного типа.

Возвращает: Число0


Кумулятивная

Возвращает значение для кумулятивной временной агрегации (Cumulative).

Агрегирование ведётся с момента запуска. После выгрузки данные не сбрасываются. Применяется для Prometheus-читателя.

Возвращает: Число2


Дельта

Возвращает значение для дельта-агрегации (Delta).

Агрегирование ведётся между выгрузками. После каждой выгрузки буфер сбрасывается.

Возвращает: Число1

Пример

bsl
// Сравнение типов временной агрегации
Если ВременнаяАгрегация = ОтелВременнаяАгрегация.Кумулятивная() Тогда
    Сообщить("Кумулятивный режим");
ИначеЕсли ВременнаяАгрегация = ОтелВременнаяАгрегация.Дельта() Тогда
    Сообщить("Дельта-режим");
КонецЕсли;

ОтелГистограмма

Гистограмма (Histogram) — инструмент для статистики распределения значений.

Описание

ОтелГистограмма реализует спецификацию OpenTelemetry Histogram. Агрегирует значения в явные бакеты с фиксированными границами. Используется для измерения распределений: длительность операций, размеры запросов/ответов и т.д.

Thin facade — логика хранения в ОтелБазовыйСинхронныйИнструмент.

Границы бакетов задаются через advisory-параметр ExplicitBucketBoundaries при создании или через ОтелПредставление. Границы MUST быть строго монотонно возрастающими.

Методы

Записать

Записывает значение в гистограмму. Ожидается неотрицательное значение.

ПараметрТипПо умолчаниюОписание
ЗначениеЧислоИзмеренное значение (ожидается неотрицательное)
АтрибутыОтелАтрибутыНеопределеноАтрибуты точки данных
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст

Вид

Возвращает вид инструмента.

Возвращает: Строка"Histogram"

Пример

bsl
ДлительностьЗапроса = Метр.СоздатьГистограмму(
    "http.request.duration", "Длительность HTTP-запроса", "s");

НачалоМс = ТекущаяУниверсальнаяДатаВМиллисекундах();
ОбработатьЗапрос();
ДлительностьСек = (ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоМс) / 1000;

Атрибуты = Новый ОтелАтрибуты();
Атрибуты.Установить("http.method", "POST");
Атрибуты.Установить("http.route", "/api/orders");
ДлительностьЗапроса.Записать(ДлительностьСек, Атрибуты);

ОтелДатчик

Датчик (Gauge) — инструмент для записи мгновенного значения.

Описание

ОтелДатчик реализует спецификацию OpenTelemetry Gauge. Записывает текущее значение, перезаписывая предыдущее для данного набора атрибутов. Используется для абсолютных значений в данный момент (температура, загрузка CPU, использование памяти и т.д.).

Thin facade — логика хранения в ОтелБазовыйСинхронныйИнструмент.

Методы

Записать

Записывает текущее значение датчика.

ПараметрТипПо умолчаниюОписание
ЗначениеЧислоТекущее значение
АтрибутыОтелАтрибутыНеопределеноАтрибуты точки данных
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст

Вид

Возвращает вид инструмента.

Возвращает: Строка"Gauge"

Пример

bsl
ИспользованиеЦПУ = Метр.СоздатьДатчик(
    "system.cpu.utilization", "Загрузка CPU", "1");

// Записать текущее значение
Атрибуты = Новый ОтелАтрибуты();
Атрибуты.Установить("cpu", "0");
ИспользованиеЦПУ.Записать(0.75, Атрибуты);

ОтелМетр

Метр (Meter) — фабрика метрических инструментов.

Описание

ОтелМетр создаёт и возвращает инструменты для записи метрик: счётчики, датчики, гистограммы и наблюдаемые инструменты. Инструменты кэшируются по нормализованному имени.

При повторной регистрации с тем же именем возвращается уже существующий инструмент. Конфликт типов или единиц измерения логируется как предупреждение.

Все публичные методы потокобезопасны.

Имя инструмента должно соответствовать паттерну [A-Za-z][A-Za-z0-9_./-]{0,254}.

Методы

СоздатьСчетчик

Создаёт монотонный счётчик (ОтелСчетчик) — принимает только неотрицательные значения.

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя счётчика
ОписаниеСтрока""Описание
ЕдиницаИзмеренияСтрока""Единица измерения
СоветСтруктура, НеопределеноНеопределеноAdvisory-параметры

Возвращает: ОтелСчетчик


СоздатьРеверсивныйСчетчик

Создаёт реверсивный счётчик (ОтелРеверсивныйСчетчик) — принимает любые значения, включая отрицательные (UpDownCounter).

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя счётчика
ОписаниеСтрока""Описание
ЕдиницаИзмеренияСтрока""Единица измерения
СоветСтруктура, НеопределеноНеопределеноAdvisory-параметры

Возвращает: ОтелРеверсивныйСчетчик


СоздатьДатчик

Создаёт датчик (ОтелДатчик) — записывает мгновенное значение, перезаписывая предыдущее (Gauge).

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя датчика
ОписаниеСтрока""Описание
ЕдиницаИзмеренияСтрока""Единица измерения
СоветСтруктура, НеопределеноНеопределеноAdvisory-параметры

Возвращает: ОтелДатчик


СоздатьГистограмму

Создаёт гистограмму (ОтелГистограмма) — агрегирует значения по бакетам (Histogram).

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя гистограммы
ОписаниеСтрока""Описание
ЕдиницаИзмеренияСтрока""Единица измерения
СоветСтруктура, НеопределеноНеопределеноAdvisory-параметры (может содержать ExplicitBucketBoundaries)

Возвращает: ОтелГистограмма


СоздатьЭкспоненциальнуюГистограмму

Создаёт экспоненциальную гистограмму (ОтелЭкспоненциальнаяГистограмма) — гистограмму с логарифмическими бакетами.

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя гистограммы
ОписаниеСтрока""Описание
ЕдиницаИзмеренияСтрока""Единица измерения
СоветСтруктура, НеопределеноНеопределеноAdvisory-параметры

Возвращает: ОтелЭкспоненциальнаяГистограмма


СоздатьНаблюдаемыйСчетчик

Создаёт наблюдаемый счётчик (ОтелНаблюдаемыйСчетчик). Значения собираются через callback при каждом сборе метрик.

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя инструмента
ОписаниеСтрока""Описание
ЕдиницаИзмеренияСтрока""Единица измерения
ДействиеДействие, НеопределеноНеопределеноCallback для сбора значений
СоветСтруктура, НеопределеноНеопределеноAdvisory-параметры

Возвращает: ОтелНаблюдаемыйСчетчик


СоздатьНаблюдаемыйРеверсивныйСчетчик

Создаёт наблюдаемый реверсивный счётчик (ОтелНаблюдаемыйРеверсивныйСчетчик).

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя инструмента
ОписаниеСтрока""Описание
ЕдиницаИзмеренияСтрока""Единица измерения
ДействиеДействие, НеопределеноНеопределеноCallback для сбора значений
СоветСтруктура, НеопределеноНеопределеноAdvisory-параметры

Возвращает: ОтелНаблюдаемыйРеверсивныйСчетчик


СоздатьНаблюдаемыйДатчик

Создаёт наблюдаемый датчик (ОтелНаблюдаемыйДатчик).

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя инструмента
ОписаниеСтрока""Описание
ЕдиницаИзмеренияСтрока""Единица измерения
ДействиеДействие, НеопределеноНеопределеноCallback для сбора значений
СоветСтруктура, НеопределеноНеопределеноAdvisory-параметры

Возвращает: ОтелНаблюдаемыйДатчик

Пример

bsl
Метр = Провайдер.ПолучитьМетр("мой-сервис", "1.0.0");

// Синхронные инструменты
Счетчик = Метр.СоздатьСчетчик("http.requests.total", "Всего HTTP-запросов", "{запросов}");
Гистограмма = Метр.СоздатьГистограмму("http.request.duration", "Длительность запроса", "s");
Датчик = Метр.СоздатьДатчик("system.memory.usage", "Использование памяти", "By");

// Наблюдаемый инструмент с callback
ОбратныйВызов = Новый Действие(ЭтотОбъект, "МойCallback");
НаблюдаемыйДатчик = Метр.СоздатьНаблюдаемыйДатчик(
    "queue.size", "Размер очереди", "{элементов}", ОбратныйВызов);

ОтелНаблюдаемыйДатчик

Наблюдаемый датчик (ObservableGauge) — асинхронный инструмент для мгновенных значений.

Описание

ОтелНаблюдаемыйДатчик реализует спецификацию OpenTelemetry ObservableGauge. Значения собираются через зарегистрированные callback при каждом сборе метрик.

Используется, когда нельзя записать значение синхронно в момент изменения (например, показания температуры, загрузка памяти).

Thin facade — вся логика в ОтелБазовыйНаблюдаемыйИнструмент.

Методы

Вид

Возвращает вид инструмента.

Возвращает: Строка"ObservableGauge"


Остальные методы унаследованы от ОтелБазовыйНаблюдаемыйИнструмент (см. ОтелНаблюдаемыйСчетчик): ДобавитьCallback, УдалитьCallback.

Пример

bsl
// Наблюдать за текущей температурой
Процедура СобратьТемпературу(Наблюдение) Экспорт
    ЧипыЦПУ = ПолучитьСписокЧипов();
    Для Каждого Чип Из ЧипыЦПУ Цикл
        Атрибуты = Новый ОтелАтрибуты();
        Атрибуты.Установить("cpu", Чип.Номер);
        Наблюдение.Записать(Чип.Температура, Атрибуты);
    КонецЦикла;
КонецПроцедуры

НаблюдаемыйДатчик = Метр.СоздатьНаблюдаемыйДатчик(
    "system.cpu.temperature",
    "Температура ЦП",
    "Cel",
    Новый Действие(ЭтотОбъект, "СобратьТемпературу"));

ОтелНаблюдаемыйРеверсивныйСчетчик

Наблюдаемый реверсивный счётчик (ObservableUpDownCounter) — асинхронный инструмент, допускающий уменьшение значений.

Описание

ОтелНаблюдаемыйРеверсивныйСчетчик реализует спецификацию OpenTelemetry ObservableUpDownCounter. Значения собираются через зарегистрированные callback при каждом сборе метрик.

Используется, когда нужно асинхронно наблюдать за значением, которое может расти и убывать (например, размер пула соединений, количество элементов в очереди).

Thin facade — вся логика в ОтелБазовыйНаблюдаемыйИнструмент.

Методы

Вид

Возвращает вид инструмента.

Возвращает: Строка"ObservableUpDownCounter"


Остальные методы унаследованы от ОтелБазовыйНаблюдаемыйИнструмент (см. ОтелНаблюдаемыйСчетчик): ДобавитьCallback, УдалитьCallback.

Пример

bsl
// Наблюдать за размером пула соединений
Процедура СобратьРазмерПула(Наблюдение) Экспорт
    Наблюдение.Записать(МойПулСоединений.Количество());
КонецПроцедуры

НаблюдаемыйРеверсивный = Метр.СоздатьНаблюдаемыйРеверсивныйСчетчик(
    "db.connections.pool.size",
    "Размер пула соединений",
    "{соединений}",
    Новый Действие(ЭтотОбъект, "СобратьРазмерПула"));

ОтелНаблюдаемыйСчетчик

Наблюдаемый счётчик (ObservableCounter) — асинхронный монотонный инструмент для суммирования.

Описание

ОтелНаблюдаемыйСчетчик реализует спецификацию OpenTelemetry ObservableCounter. Значения собираются через зарегистрированные callback при каждом сборе метрик.

Используется, когда нет возможности записать значение непосредственно в момент изменения (например, системные счётчики из ОС).

Thin facade — вся логика в ОтелБазовыйНаблюдаемыйИнструмент.

Методы

Все методы унаследованы от ОтелБазовыйНаблюдаемыйИнструмент:

Вид

Возвращает вид инструмента.

Возвращает: Строка"ObservableCounter"


ДобавитьCallback

Регистрирует дополнительный callback для наблюдения. Callback SHOULD NOT бросать исключения — они будут перехвачены и залогированы.

ПараметрТипПо умолчаниюОписание
ДействиеДействиеCallback с сигнатурой (Наблюдение: ОтелНаблюдениеМетрики)

Возвращает: ОтелРегистрацияНаблюдателя — токен для отмены регистрации


УдалитьCallback

Удаляет ранее зарегистрированный callback.

ПараметрТипПо умолчаниюОписание
ДействиеДействиеCallback для удаления

Пример

bsl
// Callback для наблюдения
Процедура СобратьМетрики(Наблюдение) Экспорт
    // системный счётчик CPU ticks
    ЗначениеСчетчика = ПолучитьСчетчикЦПУ();
    Наблюдение.Записать(ЗначениеСчетчика);
КонецПроцедуры

НаблюдаемыйСчетчик = Метр.СоздатьНаблюдаемыйСчетчик(
    "system.cpu.time",
    "Время ЦП",
    "s",
    Новый Действие(ЭтотОбъект, "СобратьМетрики"));

// Добавить ещё один callback
Регистрация = НаблюдаемыйСчетчик.ДобавитьCallback(ДополнительныйCallback);

// Отменить callback
Регистрация.Закрыть();

ОтелНаблюдениеМетрики

Объект наблюдения метрики — передаётся в callback асинхронных инструментов.

Описание

ОтелНаблюдениеМетрики передаётся в callback асинхронных инструментов (ОтелНаблюдаемыйСчетчик, ОтелНаблюдаемыйРеверсивныйСчетчик, ОтелНаблюдаемыйДатчик).

В рамках одного вызова callback можно записать несколько значений с разными атрибутами.

Объект создаётся SDK автоматически — вручную не создаётся.

Методы

Записать

Записывает значение с опциональными атрибутами. Поддерживает fluent-цепочку.

ПараметрТипПо умолчаниюОписание
ЗначениеЧислоИзмеренное значение
АтрибутыОтелАтрибутыНеопределеноАтрибуты точки данных

Возвращает: ОтелНаблюдениеМетрикиЭтотОбъект (для fluent-цепочки)


Записи

Возвращает все записанные наблюдения.

Возвращает: Массив — массив структур {Значение: Число, Атрибуты: ОтелАтрибуты}


Количество

Возвращает количество записанных наблюдений.

Возвращает: Число

Пример

bsl
Процедура СобратьМетрики(Наблюдение) Экспорт
    // Запись одного значения
    Наблюдение.Записать(42);

    // Запись нескольких значений через fluent-цепочку
    Атрибуты1 = Новый ОтелАтрибуты();
    Атрибуты1.Установить("регион", "msk");

    Атрибуты2 = Новый ОтелАтрибуты();
    Атрибуты2.Установить("регион", "spb");

    Наблюдение
        .Записать(100, Атрибуты1)
        .Записать(85, Атрибуты2);

    // Проверить сколько наблюдений уже записано
    Сообщить("Записей: " + Наблюдение.Количество());
КонецПроцедуры

ОтелПериодическийЧитательМетрик

Периодический читатель метрик — собирает метрики по расписанию и отправляет их экспортёру.

Описание

ОтелПериодическийЧитательМетрик реализует push-модель сбора метрик. Периодически собирает данные из всех зарегистрированных метров и передаёт их экспортёру.

Создаётся через ОтелПостроительПровайдераМетрик.

Методы

ДобавитьМетр

Регистрирует метр в читателе.

ПараметрТипПо умолчаниюОписание
МетрОтелМетрМетр для регистрации

ДобавитьПродюсер

Регистрирует дополнительный продюсер метрик.

ПараметрТипПо умолчаниюОписание
ПродюсеробъектПродюсер метрик

Запустить

Запускает фоновый периодический сбор метрик.


ПериодическийСбор

Выполняет один цикл сбора метрик вручную.


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

Принудительно выгружает накопленные метрики и очищает буфер.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧислоТаймаут операции в миллисекундах

СброситьБуферБезОчистки

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


Закрыть

Останавливает периодический сбор и завершает работу.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧислоТаймаут завершения в миллисекундах
ОчищатьДанныеБулевоИстинаОчищать ли накопленные данные

ПринудительноВыгрузитьСРезультатом

Принудительно выгружает данные и возвращает результат операции.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧислоТаймаут операции в миллисекундах

Возвращает: результат выгрузки


УстановитьФильтрМетрик

Задаёт фильтр на собираемые метрики.

ПараметрТипПо умолчаниюОписание
ЗначениефильтрФунктор или условие фильтрации

ЛимитМощности

Возвращает текущий лимит мощности (cardinality limit).

Возвращает: Число


АгрегацияГистограммПоУмолчанию

Возвращает тип агрегации гистограммы, заданный по умолчанию для данного читателя.

Возвращает: ОтелАгрегация

Пример

bsl
ОтладочныйЭкспортёр = Новый ОтелОтладочныйЭкспортёрМетрик();
ПериодическийЧитатель = Новый ОтелПериодическийЧитательМетрик(ОтладочныйЭкспортёр, 60000);

Построитель = Новый ОтелПостроительПровайдераМетрик();
Построитель.ДобавитьЧитатель(ПериодическийЧитатель);
Провайдер = Построитель.Создать();

// Запустить периодический сбор
ПериодическийЧитатель.Запустить();

// При завершении
ПериодическийЧитатель.Закрыть(5000);

ОтелПостроительПровайдераМетрик

Построитель провайдера метрик (SdkMeterProviderBuilder) с fluent API.

Описание

Используется для пошаговой конфигурации ОтелПровайдерМетрик. Аналог Java SDK: SdkMeterProvider.builder().

Поддерживает настройку ресурса, нескольких читателей метрик, представлений (Views) и фильтра exemplars.

Значение OTEL_METRICS_EXEMPLAR_FILTER из окружения применяется автоматически при создании построителя.

Методы

УстановитьРесурс

Устанавливает ресурс, описывающий источник телеметрии.

ПараметрТипПо умолчаниюОписание
ЗначениеОтелРесурсРесурс телеметрии

Возвращает: ОтелПостроительПровайдераМетрикЭтотОбъект для fluent API


ЗарегистрироватьЧитатель

Регистрирует читатель метрик (MetricReader). Аналог Java SDK: SdkMeterProviderBuilder.registerMetricReader(reader).

ПараметрТипПо умолчаниюОписание
ЧитательОтелПериодическийЧитательМетрикЧитатель метрик

Возвращает: ОтелПостроительПровайдераМетрикЭтотОбъект для fluent API


ЗарегистрироватьПредставление

Регистрирует представление (View) с селектором инструментов. Аналог Java SDK: SdkMeterProviderBuilder.registerView(selector, view).

ПараметрТипПо умолчаниюОписание
СелекторОтелСелекторИнструментовСелектор инструментов
ПредставлениеОтелПредставлениеПредставление

Возвращает: ОтелПостроительПровайдераМетрикЭтотОбъект для fluent API


УстановитьФильтрЭкземпляров

Устанавливает фильтр exemplars (ExemplarFilter). Аналог Java SDK: SdkMeterProviderBuilder.setExemplarFilter(filter).

ПараметрТипПо умолчаниюОписание
ФильтрЧислоФильтр из ОтелФильтрЭкземпляров

Возвращает: ОтелПостроительПровайдераМетрикЭтотОбъект для fluent API


Построить

Создаёт экземпляр провайдера метрик с заданными параметрами.

Возвращает: ОтелПровайдерМетрик

Пример

bsl
Провайдер = Новый ОтелПостроительПровайдераМетрик()
    .УстановитьРесурс(Ресурс)
    .ЗарегистрироватьЧитатель(
        Новый ОтелПериодическийЧитательМетрик(Экспортер)
    )
    .ЗарегистрироватьПредставление(
        Новый ОтелСелекторИнструментов("запросы"),
        Новый ОтелПредставление(, , МассивКлючейАтрибутов)
    )
    .Построить();

ОтелПредставление

Представление (View) — конфигурация агрегации и фильтрации для инструмента метрик.

Описание

ОтелПредставление позволяет переопределить имя, описание, атрибуты, границы гистограммы и тип агрегации для отдельных инструментов метрик.

Регистрируется в ОтелПостроительПровайдераМетрик.

Конструктор

Все параметры опциональны.

ПараметрТипПо умолчаниюОписание
НовоеИмяСтрокаНеопределеноПереопределённое имя инструмента
НовоеОписаниеСтрокаНеопределеноПереопределённое описание
РазрешенныеКлючиАтрибутовМассивНеопределеноСписок разрешённых ключей атрибутов
ИсключенныеКлючиАтрибутовМассивНеопределеноСписок исключённых ключей атрибутов
ГраницыГистограммыМассивНеопределеноЯвные границы бакетов гистограммы
АгрегацияОтелАгрегацияНеопределеноСтратегия агрегации
РезервуарЭкземпляровНеопределеноКонфигурация резервуара образцов
ЛимитМощностиАгрегацииЧислоНеопределеноЛимит cardinality

Методы

НовоеИмя

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


НовоеОписание

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


РазрешенныеКлючиАтрибутов

Возвращает: Массив, Неопределено


ИсключенныеКлючиАтрибутов

Возвращает: Массив, Неопределено


ГраницыГистограммы

Возвращает: Массив, Неопределено


Агрегация

Возвращает: ОтелАгрегация, Неопределено


РезервуарЭкземпляров

Возвращает: конфигурация резервуара или Неопределено


ЛимитМощностиАгрегации

Возвращает: Число, Неопределено

Пример

bsl
// Переименовать инструмент и задать границы гистограммы
Границы = Новый Массив();
Границы.Добавить(0.005);
Границы.Добавить(0.01);
Границы.Добавить(0.025);
Границы.Добавить(0.05);
Границы.Добавить(0.1);
Границы.Добавить(0.25);
Границы.Добавить(0.5);
Границы.Добавить(1);

Представление = Новый ОтелПредставление(
    "http_request_duration_seconds",    // НовоеИмя
    Неопределено,                       // НовоеОписание
    Неопределено,                       // РазрешенныеКлючи
    Неопределено,                       // ИсключенныеКлючи
    Границы);                           // ГраницыГистограммы

Построитель.ДобавитьПредставление(Представление, "http.request.duration");

ОтелПровайдерМетрик

Провайдер метрик (MeterProvider) — центральная точка управления метрами и читателями метрик.

Описание

ОтелПровайдерМетрик реализует спецификацию OpenTelemetry MeterProvider. Хранит кэш объектов ОтелМетр по ключу (имя библиотеки + версия + атрибуты scope), управляет представлениями (Views) и читателями метрик. Поддерживает несколько читателей.

Все публичные методы потокобезопасны.

Рекомендуется создавать через ОтелПостроительПровайдераМетрик.

Методы

ПостроительМетра

Создаёт построитель метра (MeterBuilder). Аналог Java SDK: MeterProvider.meterBuilder("name").

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

Возвращает: ОтелПостроительМетра


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

Создаёт или возвращает из кэша метр для указанной библиотеки. После Закрыть() возвращает no-op метр.

ПараметрТипПо умолчаниюОписание
ИмяБиблиотекиСтрокаИмя инструментирующей библиотеки
ВерсияБиблиотекиСтрока""Версия библиотеки
АтрибутыОбластиОтелАтрибутыНеопределеноАтрибуты InstrumentationScope
АдресСхемыСтрока""URL схемы телеметрии

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


Ресурс

Возвращает ресурс провайдера.

Возвращает: ОтелРесурс


ЧитательМетрик

Возвращает первый зарегистрированный читатель метрик (для обратной совместимости).

Возвращает: ОтелПериодическийЧитательМетрик, Неопределено


ЧитателиМетрик

Возвращает массив всех зарегистрированных читателей метрик.

Возвращает: Массив


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

Принудительно экспортирует все накопленные метрики через все читатели.

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

Возвращает: ОтелРезультатЭкспорта — агрегированный результат всех читателей


Закрыть

Завершает работу провайдера. Отключает все инструменты, закрывает читателей. Идемпотентен.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут операции в миллисекундах

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


ПринудительноВыгрузитьСРезультатом

Принудительно выгружает все накопленные метрики через читателей.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут операции в миллисекундах

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


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

Асинхронно сбрасывает буфер.

Возвращает: Обещание


ЗакрытьАсинхронно

Асинхронно завершает работу провайдера.

Возвращает: Обещание


ЗарегистрироватьПредставление

Регистрирует представление (View) с селектором инструментов.

ПараметрТипПо умолчаниюОписание
СелекторОтелСелекторИнструментовСелектор инструментов
ПредставлениеОтелПредставлениеПредставление

Пример

bsl
Провайдер = Новый ОтелПостроительПровайдераМетрик()
    .УстановитьРесурс(Ресурс)
    .ЗарегистрироватьЧитатель(Читатель)
    .Построить();

Метр = Провайдер.ПолучитьМетр("мой-сервис", "1.0.0");
Счетчик = Метр.СоздатьСчетчик("запросы");
Счетчик.Добавить(1);

// Завершение работы
Провайдер.Закрыть();

ОтелПрометеусЧитательМетрик

Prometheus-читатель метрик — экспортирует метрики в формате Prometheus text.

Описание

ОтелПрометеусЧитательМетрик реализует pull-модель сбора метрик для Prometheus. Метрики собираются по запросу и возвращаются в формате Prometheus text exposition.

Всегда использует кумулятивную временную агрегацию (Cumulative).

Создаётся через ОтелПостроительПровайдераМетрик.

Методы

ДобавитьМетр

Регистрирует метр в читателе.

ПараметрТипПо умолчаниюОписание
МетрОтелМетрМетр для регистрации

СобратьВТексте

Собирает все метрики и возвращает их в формате Prometheus text.

Возвращает: Строка — метрики в формате Prometheus text exposition


ContentType

Возвращает MIME-тип ответа для HTTP-endpoint.

Возвращает: Строка"text/plain; version=0.0.4; charset=utf-8"


ПолучитьВременнуюАгрегацию

Возвращает тип временной агрегации для инструмента.

Всегда возвращает Кумулятивная независимо от типа инструмента.

ПараметрТипПо умолчаниюОписание
ТипИнструментаСтрокаТип инструмента

Возвращает: ОтелВременнаяАгрегация.Кумулятивная()


СобратьСемейства

Собирает все метрики как семейства метрик Prometheus.

Возвращает: Массив — массив семейств метрик Prometheus

Пример

bsl
// Настройка Prometheus-читателя
ПрометеусЧитатель = Новый ОтелПрометеусЧитательМетрик();

Построитель = Новый ОтелПостроительПровайдераМетрик();
Построитель.ДобавитьЧитатель(ПрометеусЧитатель);
Провайдер = Построитель.Создать();

// В HTTP-обработчике /metrics:
// ContentType заголовок
ТипКонтента = ПрометеусЧитатель.ContentType(); 
// => "text/plain; version=0.0.4; charset=utf-8"

// Тело ответа
ТелоОтвета = ПрометеусЧитатель.СобратьВТексте();

ОтелРеверсивныйСчетчик

Реверсивный счётчик (UpDownCounter) — инструмент для суммирования значений, допускающий уменьшение.

Описание

ОтелРеверсивныйСчетчик реализует спецификацию OpenTelemetry UpDownCounter. Принимает любые значения, включая отрицательные. Используется для измерений, которые могут как расти, так и уменьшаться (количество активных соединений, размер очереди и т.д.).

Thin facade — логика хранения в ОтелБазовыйСинхронныйИнструмент.

Методы

Добавить

Добавляет значение к счётчику. Принимает и отрицательные значения.

ПараметрТипПо умолчаниюОписание
ЗначениеЧислоЗначение для добавления (может быть отрицательным)
АтрибутыОтелАтрибутыНеопределеноАтрибуты точки данных
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст

Вид

Возвращает вид инструмента.

Возвращает: Строка"UpDownCounter"

Пример

bsl
АктивныеСоединения = Метр.СоздатьРеверсивныйСчетчик(
    "db.connections.active", "Активные соединения с БД");

// Новое соединение
АктивныеСоединения.Добавить(1);

// Соединение закрыто
АктивныеСоединения.Добавить(-1);

ОтелРегистрацияНаблюдателя

Токен регистрации наблюдателя — позволяет отменить регистрацию callback.

Описание

ОтелРегистрацияНаблюдателя возвращается при регистрации callback у асинхронных инструментов. Позволяет впоследствии отменить регистрацию callback вызовом Закрыть().

Конструктор

ПараметрТипОписание
ИнструментОтелБазовыйНаблюдаемыйИнструментИнструмент, у которого зарегистрирован callback
ДействиеДействиеЗарегистрированный callback

Методы

Закрыть

Отменяет регистрацию callback у инструмента. После вызова callback больше не будет вызываться при сборе метрик.

Эквивалентно вызову Инструмент.УдалитьCallback(Действие).

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

Пример

bsl
// Регистрация callback
Регистрация = НаблюдаемыйСчетчик.ДобавитьCallback(
    Новый Действие(ЭтотОбъект, "МойCallback"));

// ... некоторое время работы ...

// Отменить callback (например, при завершении работы модуля)
Регистрация.Закрыть();

ОтелСчетчик

Счётчик (Counter) — монотонный инструмент для суммирования неотрицательных значений.

Описание

ОтелСчетчик реализует спецификацию OpenTelemetry Counter. Агрегирует значения суммой. Принимает только неотрицательные значения — отрицательные игнорируются с предупреждением.

Для значений, которые могут уменьшаться, используйте ОтелРеверсивныйСчетчик.

Thin facade — логика хранения в ОтелБазовыйСинхронныйИнструмент.

Методы

Добавить

Добавляет значение к счётчику. При отрицательном значении записывает предупреждение и игнорирует вызов.

ПараметрТипПо умолчаниюОписание
ЗначениеЧислоНеотрицательное значение для добавления
АтрибутыОтелАтрибутыНеопределеноАтрибуты точки данных
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст

Вид

Возвращает вид инструмента.

Возвращает: Строка"Counter"

Пример

bsl
Счетчик = Метр.СоздатьСчетчик("http.requests.total", "Всего HTTP-запросов");

// Без атрибутов
Счетчик.Добавить(1);

// С атрибутами
Атрибуты = Новый ОтелАтрибуты();
Атрибуты.Установить("http.method", "GET");
Атрибуты.Установить("http.status_code", "200");
Счетчик.Добавить(1, Атрибуты);

ОтелТипМетрики

Модуль констант типов метрик.

Описание

ОтелТипМетрики — глобальный модуль с константами строковых идентификаторов типов инструментов метрик. Используется при настройке представлений, экспорте и фильтрации.

Функции

Сумма

Возвращает строковый идентификатор типа Sum.

Возвращает: Строка"sum"


Датчик

Возвращает строковый идентификатор типа Gauge.

Возвращает: Строка"gauge"


Гистограмма

Возвращает строковый идентификатор типа Histogram.

Возвращает: Строка"histogram"


ЭкспоненциальнаяГистограмма

Возвращает строковый идентификатор типа ExponentialHistogram.

Возвращает: Строка"exponentialHistogram"

Пример

bsl
// Использование при создании представления для гистограмм
Если ТипМетрики = ОтелТипМетрики.Гистограмма() Тогда
    // Применить специальные настройки агрегации для гистограмм
    Представление = Новый ОтелПредставление(
        Неопределено, Неопределено, Неопределено, Неопределено,
        СтандартныеГраницы);
КонецЕсли;

ОтелЭкспоненциальнаяГистограмма

Экспоненциальная гистограмма (ExponentialHistogram) — инструмент для распределения с логарифмическими бакетами.

Описание

ОтелЭкспоненциальнаяГистограмма реализует спецификацию OpenTelemetry ExponentialHistogram. В отличие от ОтелГистограмма, использует логарифмические бакеты с автоматически вычисляемыми границами (Base-2 Exponential Bucket Histogram).

Не требует предварительной настройки границ бакетов — автоматически адаптируется к диапазону значений.

Thin facade — логика в ОтелАгрегаторЭкспоненциальнойГистограммы и ОтелБазовыйСинхронныйИнструмент.

Методы

Записать

Записывает значение в экспоненциальную гистограмму.

ПараметрТипПо умолчаниюОписание
ЗначениеЧислоИзмеренное значение
АтрибутыОтелАтрибутыНеопределеноАтрибуты точки данных
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст

Вид

Возвращает вид инструмента.

Возвращает: Строка"ExponentialHistogram"

Пример

bsl
ДлительностьЗапроса = Метр.СоздатьЭкспоненциальнуюГистограмму(
    "http.request.duration", "Длительность HTTP-запроса", "s");

ДлительностьЗапроса.Записать(0.123);

ОтелW3CBaggageПропагатор

Пропагатор Baggage по спецификации W3C Baggage.

Описание

Обеспечивает внедрение и извлечение Baggage в/из HTTP-заголовков по спецификации W3C Baggage.

Используемый заголовок: baggage
Формат: key1=value1,key2=value2;metadata

Значения кодируются percent-encoding по спецификации W3C Baggage. Общий размер заголовка ограничен 8192 байтами: если значение превышает ограничение, заголовок не внедряется и записывается предупреждение в лог.

Использует ОтелГеттерТекстовойКарты и ОтелСеттерТекстовойКарты по умолчанию.

Конструктор

Конструктор без параметров.

bsl
Новый ОтелW3CBaggageПропагатор()

Методы

Внедрить

Внедряет Baggage из контекста в заголовок baggage носителя. Если Baggage отсутствует или пустое — ничего не делает.

ПараметрТипПо умолчаниюОписание
КонтекстСоответствиеOTel Context
НосительПроизвольныйНоситель заголовков
СеттерОтелСеттерТекстовойКартыСтандартный сеттерОбъект для записи в носитель

Извлечь

Извлекает Baggage из заголовка baggage носителя в новый контекст. Если заголовок отсутствует — возвращает исходный контекст без изменений.

ПараметрТипПо умолчаниюОписание
КонтекстСоответствиеВходной OTel Context
НосительПроизвольныйНоситель заголовков
ГеттерОтелГеттерТекстовойКартыСтандартный геттерОбъект для чтения из носителя

Возвращает: Соответствие — новый контекст с Baggage (или входной контекст, если заголовок отсутствует)

Поля

Возвращает список HTTP-заголовков, используемых пропагатором.

Возвращает: Массив из Строка["baggage"]

Пример

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

Пропагатор = Новый ОтелW3CBaggageПропагатор();

// Создать контекст с Baggage
Багаж = Новый ОтелПостроительBaggage()
    .Установить("user.id", "42")
    .Установить("tenant", "acme")
    .Построить();
Контекст = ОтелКонтекст.КонтекстСBaggage(ОтелКонтекст.Текущий(), Багаж);

// Внедрить в заголовки
Заголовки = Новый Соответствие();
Пропагатор.Внедрить(Контекст, Заголовки);
// baggage: user.id=42,tenant=acme

// Извлечь из входящих заголовков
ВходящиеЗаголовки = Новый Соответствие();
ВходящиеЗаголовки.Вставить("baggage", "user.id=42,tenant=acme");
НовыйКонтекст = Пропагатор.Извлечь(Новый Соответствие(), ВходящиеЗаголовки);

ОтелW3CПропагатор

Пропагатор контекста трассировки W3C Trace Context.

Описание

Реализует внедрение и извлечение контекста трассировки через HTTP-заголовки traceparent и tracestate согласно спецификации W3C Trace Context Level 2.

Формат traceparent: {version}-{trace-id}-{parent-id}-{trace-flags}
Пример: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Поля trace-flags (1 байт):

  • Бит 0 (маска 0x01) — sampled
  • Бит 1 (маска 0x02) — random (W3C Level 2): TraceId сгенерирован случайно

Все биты сохраняются при round-trip через числовое поле ФлагиТрассировки в ОтелКонтекстСпана. Парсинг tracestate выполняется через ОтелСостояниеТрассировки с RFC-валидацией ключей и значений.

Использует ОтелГеттерТекстовойКарты и ОтелСеттерТекстовойКарты по умолчанию.

Конструктор

Конструктор без параметров.

bsl
Новый ОтелW3CПропагатор()

Методы

Внедрить

Внедряет контекст трассировки (SpanContext) в HTTP-заголовки носителя. Если контекст не содержит валидного спана — ничего не делает.

ПараметрТипПо умолчаниюОписание
КонтекстСоответствиеOTel Context
НосительПроизвольныйНоситель заголовков
СеттерОтелСеттерТекстовойКартыСтандартный сеттерОбъект для записи в носитель

Извлечь

Извлекает SpanContext из HTTP-заголовков носителя в новый OTel Context. При невалидном заголовке возвращает исходный контекст без изменений.

ПараметрТипПо умолчаниюОписание
КонтекстСоответствиеВходной OTel Context
НосительПроизвольныйНоситель заголовков
ГеттерОтелГеттерТекстовойКартыСтандартный геттерОбъект для чтения из носителя

Возвращает: Соответствие — новый контекст с извлечённым SpanContext (или входной контекст при ошибке)

Поля

Возвращает список HTTP-заголовков, используемых пропагатором.

Возвращает: Массив из Строка["traceparent", "tracestate"]

Пример

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

Пропагатор = Новый ОтелW3CПропагатор();

// Внедрить контекст в исходящий запрос
Заголовки = Новый Соответствие();
Пропагатор.Внедрить(ОтелКонтекст.Текущий(), Заголовки);
// Заголовки теперь содержит traceparent: 00-...

// Извлечь контекст из входящего запроса
ВходящиеЗаголовки = Новый Соответствие();
ВходящиеЗаголовки.Вставить("traceparent", "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01");
НовыйКонтекст = Пропагатор.Извлечь(Новый Соответствие(), ВходящиеЗаголовки);

// Использовать совместно с kompozitным пропагатором
КомпПропагатор = Новый ОтелКомпозитныйПропагатор(
    Новый Массив() + Новый ОтелW3CПропагатор() + Новый ОтелW3CBaggageПропагатор()
);

ОтелГеттерТекстовойКарты

Геттер текстовой карты для пропагаторов.

Описание

Реализует абстракцию Getter для работы с носителем типа Соответствие. Обеспечивает case-insensitive доступ к заголовкам для HTTP-совместимости.

Объект является stateless и может быть сохранён как константа — создавать новый экземпляр для каждой операции не требуется.

Конструктор

Конструктор без параметров. Stateless — без состояния.

bsl
Новый ОтелГеттерТекстовойКарты()

Методы

Получить

Возвращает первое значение по заданному ключу из носителя. Поиск выполняется без учёта регистра для HTTP-совместимости.

ПараметрТипПо умолчаниюОписание
НосительСоответствиеКоллекция заголовков
КлючСтрокаИмя заголовка

Возвращает: Строка, Неопределено — первое найденное значение или Неопределено

ПолучитьВсе

Возвращает все значения по заданному ключу из носителя. Поиск выполняется без учёта регистра.

ПараметрТипПо умолчаниюОписание
НосительСоответствиеКоллекция заголовков
КлючСтрокаИмя заголовка

Возвращает: Массив из Строка — все найденные значения (пустой массив, если ключ не найден)

Ключи

Возвращает список всех ключей из носителя.

ПараметрТипПо умолчаниюОписание
НосительСоответствиеКоллекция заголовков

Возвращает: Массив из Строка — список ключей

Пример

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

Геттер = Новый ОтелГеттерТекстовойКарты();

Заголовки = Новый Соответствие();
Заголовки.Вставить("traceparent", "00-abc123...");
Заголовки.Вставить("Content-Type", "application/json");

// Case-insensitive поиск
Значение = Геттер.Получить(Заголовки, "TRACEPARENT"); // "00-abc123..."
Значение = Геттер.Получить(Заголовки, "content-type"); // "application/json"

// Получить все ключи
Ключи = Геттер.Ключи(Заголовки); // ["traceparent", "Content-Type"]

// Использование с пропагатором
Пропагатор = Новый ОтелW3CПропагатор();
НовыйКонтекст = Пропагатор.Извлечь(ОтелКонтекст.Текущий(), Заголовки, Геттер);

ОтелКомпозитныйПропагатор

Композитный пропагатор (CompositePropagator) по спецификации OpenTelemetry.

Описание

Объединяет несколько пропагаторов в единую цепочку. Позволяет одновременно использовать, например, ОтелW3CПропагатор и ОтелW3CBaggageПропагатор.

  • Внедрить() — вызывает все пропагаторы последовательно
  • Извлечь() — цепочечно передаёт контекст через все пропагаторы
  • Поля() — возвращает объединённый список заголовков всех пропагаторов

Ошибки отдельного пропагатора не прерывают выполнение цепочки: они записываются в лог как предупреждения и обработка продолжается со следующим пропагатором.

Конструктор

bsl
Новый ОтелКомпозитныйПропагатор(Пропагаторы)
ПараметрТипПо умолчаниюОписание
ПропагаторыМассивМассив объектов-пропагаторов

Методы

Внедрить

Внедряет контекст через все пропагаторы последовательно.

ПараметрТипПо умолчаниюОписание
КонтекстПроизвольныйКонтекст для внедрения (Спан, Baggage и т.д.)
НосительПроизвольныйНоситель заголовков
СеттерОтелСеттерТекстовойКартыНеопределеноОбъект для записи в носитель (по умолчанию для Соответствие)

Извлечь

Извлекает контекст из заголовков через все пропагаторы последовательно. Каждый пропагатор получает контекст, обогащённый предыдущим.

ПараметрТипПо умолчаниюОписание
КонтекстСоответствиеВходной OTel Context
НосительПроизвольныйНоситель заголовков
ГеттерОтелГеттерТекстовойКартыНеопределеноОбъект для чтения из носителя (по умолчанию для Соответствие)

Возвращает: Соответствие — контекст, обогащённый данными от всех пропагаторов

Поля

Возвращает объединённый список заголовков всех пропагаторов.

Возвращает: Массив из Строка — список имён полей заголовков

Пример

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

// Объединить W3C TraceContext и Baggage пропагаторы
Список = Новый Массив();
Список.Добавить(Новый ОтелW3CПропагатор());
Список.Добавить(Новый ОтелW3CBaggageПропагатор());

КомпПропагатор = Новый ОтелКомпозитныйПропагатор(Список);

// Внедрить все данные в заголовки
Заголовки = Новый Соответствие();
КомпПропагатор.Внедрить(ОтелКонтекст.Текущий(), Заголовки);
// Заголовки содержит traceparent, tracestate и baggage

// Извлечь все данные из входящих заголовков
НовыйКонтекст = КомпПропагатор.Извлечь(Новый Соответствие(), ВходящиеЗаголовки);

// Получить все используемые поля
Поля = КомпПропагатор.Поля();
// ["traceparent", "tracestate", "baggage"]

ОтелСеттерТекстовойКарты

Сеттер текстовой карты для пропагаторов.

Описание

Реализует абстракцию Setter для работы с носителем типа Соответствие. Сохраняет регистр ключей как есть (согласно спецификации TextMap Propagator: "SHOULD preserve casing"). Нормализацию регистра выполняет транспортный слой.

Согласно спецификации Propagators, сеттер обязан использовать только US-ASCII ключи и значения. Невалидные записи (содержащие символы вне US-ASCII) пропускаются с предупреждением в лог, чтобы не повредить носитель.

Объект является stateless и может быть сохранён как константа.

Конструктор

Конструктор без параметров.

bsl
Новый ОтелСеттерТекстовойКарты()

Методы

Установить

Устанавливает значение в носителе по ключу. Регистр ключа сохраняется.

Если ключ или значение содержат не US-ASCII символы, запись пропускается и в лог записывается предупреждение (носитель не модифицируется).

Допустимые символы ключа (RFC 9110 token): A-Z, a-z, 0-9, ! # $ % & ' * + - . ^ _ \ | ~ Допустимые символы значения: VCHAR (0x21-0x7E), пробел (0x20), горизонтальный таб (0x09`). Значение не должно начинаться или заканчиваться пробелом или табом.

ПараметрТипПо умолчаниюОписание
НосительСоответствиеКоллекция заголовков (модифицируется)
КлючСтрокаИмя заголовка (US-ASCII)
ЗначениеСтрокаЗначение заголовка (US-ASCII)

Пример

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

Сеттер = Новый ОтелСеттерТекстовойКарты();

Заголовки = Новый Соответствие();
Сеттер.Установить(Заголовки, "traceparent", "00-abc123...");
Сеттер.Установить(Заголовки, "tracestate", "vendor=data");

// Невалидный ключ — будет пропущен с предупреждением в лог
Сеттер.Установить(Заголовки, "мой-заголовок", "значение"); // US-ASCII нарушение

// Использование с пропагатором
Пропагатор = Новый ОтелW3CПропагатор();
Пропагатор.Внедрить(ОтелКонтекст.Текущий(), Заголовки, Сеттер);

ОтелВидСпана

Модуль — перечисление видов (типов) спанов.

Описание

Аналог Java SDK: SpanKind. Предоставляет числовые константы для установки вида спана через ОтелПостроительСпана.УстановитьВидСпана().

Функции-константы

Внутренний

Спан представляет внутреннюю операцию внутри сервиса. Значение по умолчанию.

Возвращает: Число


Сервер

Спан охватывает серверную часть синхронного RPC или HTTP-запроса.

Возвращает: Число


Клиент

Спан охватывает клиентскую часть синхронного RPC или HTTP-запроса (исходящий запрос).

Возвращает: Число


Производитель

Спан описывает производителя сообщения в асинхронной системе (очередь, брокер).

Возвращает: Число


Потребитель

Спан описывает потребителя сообщения из асинхронной системы.

Возвращает: Число

Пример

bsl
Спан = Трассировщик.ПостроительСпана("GET /api/users")
    .УстановитьВидСпана(ОтелВидСпана.Сервер())
    .НачатьСпан();

См. также


ОтелКодСтатуса

Модуль — перечисление кодов статуса спана.

Описание

Аналог Java SDK: StatusCode. Предоставляет числовые константы для ОтелСпан.УстановитьСтатус().

По спецификации OpenTelemetry статус не может быть «понижен»: установленный Ок или Ошибка не может быть заменён на НеУстановлен; переход ОкОшибка игнорируется.

Функции-константы

НеУстановлен

Статус по умолчанию — операция прошла без явного указания результата.

Возвращает: Число


Ок

Операция завершилась успешно.

Возвращает: Число


Ошибка

Операция завершилась с ошибкой.

Возвращает: Число

Пример

bsl
Попытка
    // ... выполнение операции ...
    Спан.УстановитьСтатус(ОтелКодСтатуса.Ок());
Исключение
    Спан.УстановитьСтатус(
        ОтелКодСтатуса.Ошибка(),
        ОписаниеОшибки()
    );
КонецПопытки;

См. также


ОтелКонтекстСпана

Неизменяемый контекст спана (SpanContext).

Описание

Содержит W3C Trace Context данные: trace-id (128 бит), span-id (64 бита), флаги трассировки и состояние трассировки. Может быть получен из Спан.КонтекстСпана() или передан из внешней системы через пропагаторы.

Аналог Java SDK: SpanContext.

Методы

ИдТрассировки

Возвращает идентификатор трассировки.

Возвращает: Строка — 32 hex-символа


ИдСпана

Возвращает идентификатор спана.

Возвращает: Строка — 16 hex-символов


ФлагиТрассировки

Возвращает флаги трассировки (W3C TraceFlags).

Возвращает: Число — бит 0 = sampled flag (1 — семплирован)


СостояниеТрассировки

Возвращает состояние трассировки (W3C TraceState).

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


Удаленный

Возвращает признак удалённого контекста (получен из заголовков, а не создан локально).

Возвращает: БулевоИстина, если контекст пришёл из внешнего источника


Валиден

Проверяет валидность контекста. Валидный контекст имеет ненулевые trace-id и span-id.

Возвращает: Булево


ИдТрассировкиВДвоичномВиде

Возвращает идентификатор трассировки в бинарном виде.

Возвращает: ДвоичныеДанные — 16 байт


ИдСпанаВДвоичномВиде

Возвращает идентификатор спана в бинарном виде.

Возвращает: ДвоичныеДанные — 8 байт

Пример

bsl
КонтекстСпана = Спан.КонтекстСпана();
Если КонтекстСпана.Валиден() Тогда
    ИдТрассировки = КонтекстСпана.ИдТрассировки(); // "4bf92f3577b34da6a3ce929d0e0e4736"
    ИдСпана = КонтекстСпана.ИдСпана();             // "00f067aa0ba902b7"
    Семплирован = (КонтекстСпана.ФлагиТрассировки() ЭтоНЕ 0);
КонецЕсли;

См. также


ОтелЛимитыСпана

Конфигурация лимитов спана (SpanLimits).

Описание

Определяет максимально допустимые количества атрибутов, событий и линков для спана, а также максимальную длину строковых значений атрибутов. Используется при создании провайдера трассировки.

Аналог Java SDK: SpanLimits.

Методы чтения

МаксАтрибутов / КоличествоАтрибутовЛимит

Возвращает максимальное количество атрибутов в спане.

Возвращает: Число


МаксСобытий / КоличествоСобытийЛимит

Возвращает максимальное количество событий в спане.

Возвращает: Число


МаксЛинков / КоличествоСсылокЛимит

Возвращает максимальное количество линков в спане.

Возвращает: Число


МаксДлинаЗначенияАтрибута

Возвращает максимальную длину строкового значения атрибута.

Возвращает: Число


МаксАтрибутовНаСобытие

Возвращает максимальное количество атрибутов на событие.

Возвращает: Число


МаксАтрибутовНаЛинк

Возвращает максимальное количество атрибутов на линк.

Возвращает: Число

Методы записи (fluent API)

Все методы-сеттеры возвращают ОтелЛимитыСпана для fluent API.

УстановитьМаксАтрибутов / УстановитьКоличествоАтрибутовЛимит

ПараметрТипОписание
ЗначениеЧислоМаксимальное количество атрибутов

УстановитьМаксСобытий / УстановитьКоличествоСобытийЛимит

ПараметрТипОписание
ЗначениеЧислоМаксимальное количество событий

УстановитьМаксЛинков / УстановитьКоличествоСсылокЛимит

ПараметрТипОписание
ЗначениеЧислоМаксимальное количество линков

УстановитьМаксДлинуЗначенияАтрибута

ПараметрТипОписание
ЗначениеЧислоМаксимальная длина строкового значения

УстановитьМаксАтрибутовНаСобытие

ПараметрТипОписание
ЗначениеЧислоМаксимальное количество атрибутов на событие

УстановитьМаксАтрибутовНаЛинк

ПараметрТипОписание
ЗначениеЧислоМаксимальное количество атрибутов на линк

Пример

bsl
Лимиты = Новый ОтелЛимитыСпана()
    .УстановитьМаксАтрибутов(128)
    .УстановитьМаксСобытий(256)
    .УстановитьМаксЛинков(64)
    .УстановитьМаксДлинуЗначенияАтрибута(1024);

Провайдер = Новый ОтелПостроительПровайдераТрассировки()
    .УстановитьЛимитыСпана(Лимиты)
    .Построить();

См. также


ОтелЛинк

Линк (Link) к другому спану.

Описание

Неизменяемый DTO, описывающий связь с другим спаном в той же или другой трассировке. Применяется для моделирования зависимостей между трассировками (например, batch-операции или fan-in сценарии).

Аналог Java SDK: LinkData.

Конструктор

ПараметрТипПо умолчаниюОписание
НовыйКонтекстСпанаОтелКонтекстСпанаКонтекст спана, на который ссылается линк
НовыеАтрибутыСоответствиеНеопределеноАтрибуты линка
НовоеОтброшеноАтрибутовЧисло0Количество отброшенных атрибутов

Методы

КонтекстСпана

Возвращает контекст спана, на который указывает линк.

Возвращает: ОтелКонтекстСпана


Атрибуты

Возвращает атрибуты линка.

Возвращает: ОтелАтрибуты


ОтброшеноАтрибутов

Возвращает количество атрибутов, отброшенных из-за лимита.

Возвращает: Число

Пример

bsl
// Добавить линк к уже завершённому спану из другой трассировки
Спан = Трассировщик.ПостроительСпана("обработка-батча")
    .ДобавитьЛинк(ПредыдущийСпан.КонтекстСпана())
    .ДобавитьЛинк(КонтекстВнешнегоСпана)
    .НачатьСпан();

См. также


ОтелПакетныйПроцессорСпанов

Пакетный (асинхронный) процессор спанов.

Описание

Накапливает завершённые спаны в буфере и экспортирует их пакетами в фоновом потоке. Рекомендуется для производственного использования. Является тонкой обёрткой над ОтелБазовыйПакетныйПроцессор.

Аналог Java SDK: BatchSpanProcessor.

Конструктор

ПараметрТипПо умолчаниюОписание
ЭкспортерПроизвольныйЭкспортер спанов

Методы

ПриНачале

Вызывается при начале спана. В пакетном процессоре не выполняет действий.

ПараметрТипПо умолчаниюОписание
СпанОтелСпанНачавшийся спан
РодительскийКонтекстПроизвольныйРодительский контекст

ПередЗавершением

Вызывается перед завершением спана. В пакетном процессоре не выполняет действий.

ПараметрТипПо умолчаниюОписание
СпанОтелСпанЗавершаемый спан

ПриЗавершении

Вызывается при завершении спана. Помещает спан в буфер.

ПараметрТипПо умолчаниюОписание
СпанОтелСпанЗавершённый спан

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

Принудительно экспортирует все спаны из буфера.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло0Таймаут в миллисекундах

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


Закрыть

Завершает работу процессора: сбрасывает буфер и закрывает экспортер.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло0Таймаут в миллисекундах

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

Пример

bsl
Экспортер = Новый ОтелOtlpГрпцЭкспортерСпанов();

Процессор = Новый ОтелПакетныйПроцессорСпанов(Экспортер);

Провайдер = Новый ОтелПостроительПровайдераТрассировки()
    .ДобавитьПроцессор(Процессор)
    .Построить();

// При завершении работы приложения
РезЗакрытия = Провайдер.Закрыть(30000);
Если НЕ РезЗакрытия.Успешно() Тогда
    Сообщить("Ошибка закрытия: " + РезЗакрытия.Описание());
КонецЕсли;

См. также


ОтелПостроительПровайдераТрассировки

Построитель провайдера трассировки (SdkTracerProviderBuilder).

Описание

Fluent API для создания ОтелПровайдерТрассировки. Аналог Java SDK: SdkTracerProvider.builder().

Методы

УстановитьРесурс

Устанавливает ресурс.

ПараметрТипПо умолчаниюОписание
ЗначениеОтелРесурсРесурс

Возвращает: ОтелПостроительПровайдераТрассировкиЭтотОбъект для fluent API


ДобавитьПроцессор

Добавляет процессор спанов. Аналог Java SDK: SdkTracerProviderBuilder.addSpanProcessor(processor).

ПараметрТипПо умолчаниюОписание
ПроцессорОтелПростойПроцессорСпанов, ОтелПакетныйПроцессорСпановПроцессор спанов

Возвращает: ОтелПостроительПровайдераТрассировкиЭтотОбъект для fluent API


УстановитьСэмплер

Устанавливает стратегию семплирования. Аналог Java SDK: SdkTracerProviderBuilder.setSampler(sampler).

ПараметрТипПо умолчаниюОписание
СтратегияЧислоСтратегия из ОтелСэмплер
НоваяДоляСэмплированияЧисло1.0Доля от 0.0 до 1.0 для ПоДолеТрассировок
НоваяКорневаяСтратегияЧислоНеопределеноСтратегия для корневых спанов при НаОсновеРодителя

Возвращает: ОтелПостроительПровайдераТрассировкиЭтотОбъект для fluent API


УстановитьЛимитыСпана

Устанавливает лимиты спана. Аналог Java SDK: SdkTracerProviderBuilder.setSpanLimits(spanLimits).

ПараметрТипПо умолчаниюОписание
ЗначениеОтелЛимитыСпанаЛимиты спана

Возвращает: ОтелПостроительПровайдераТрассировкиЭтотОбъект для fluent API


УстановитьГенераторИд

Устанавливает генератор идентификаторов. Генератор должен реализовывать методы СгенерироватьИдТрассировки()Строка (32 hex) и СгенерироватьИдСпана()Строка (16 hex).

ПараметрТипПо умолчаниюОписание
ЗначениеПроизвольныйОбъект-генератор идентификаторов

Возвращает: ОтелПостроительПровайдераТрассировкиЭтотОбъект для fluent API


Построить

Создает экземпляр провайдера трассировки.

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

Пример

bsl
Провайдер = Новый ОтелПостроительПровайдераТрассировки()
    .УстановитьРесурс(Ресурс)
    .ДобавитьПроцессор(Процессор)
    .УстановитьСэмплер(ОтелСэмплер.ВсегдаВключен())
    .Построить();

См. также


ОтелПостроительСпана

Построитель спана (SpanBuilder).

Описание

Создаётся через Трассировщик.ПостроительСпана(ИмяСпана). Позволяет настроить спан до его начала. По умолчанию устанавливает родителем текущий спан контекста.

Аналог Java SDK: SpanBuilder.

Конструктор

ПараметрТипПо умолчаниюОписание
ТрассировщикОтелТрассировщикТрассировщик
ИмяСпанаСтрокаИмя спана

Методы

УстановитьРодителя

Устанавливает родительский контекст.

ПараметрТипПо умолчаниюОписание
ЗначениеОтелКонтекстСпана, ОтелСпанРодительский контекст или спан

Возвращает: ОтелПостроительСпанаЭтотОбъект для fluent API


БезРодителя

Явно указывает, что спан должен быть корневым (без родителя). Отменяет УстановитьРодителя.

Возвращает: ОтелПостроительСпанаЭтотОбъект для fluent API


УстановитьВидСпана

Устанавливает вид спана.

ПараметрТипПо умолчаниюОписание
ЗначениеЧислоВид из ОтелВидСпана

Возвращает: ОтелПостроительСпанаЭтотОбъект для fluent API


УстановитьАтрибут

Добавляет начальный атрибут. Атрибуты, добавленные до НачатьСпан(), передаются сэмплеру.

ПараметрТипПо умолчаниюОписание
КлючСтрокаИмя атрибута
ЗначениеСтрока, Число, Булево, МассивЗначение атрибута

Возвращает: ОтелПостроительСпанаЭтотОбъект для fluent API


ДобавитьЛинк

Добавляет линк к другому спану.

ПараметрТипПо умолчаниюОписание
КонтекстСпанаОтелКонтекстСпанаКонтекст спана
НовыеАтрибутыСоответствиеНеопределеноАтрибуты линка

Возвращает: ОтелПостроительСпанаЭтотОбъект для fluent API


УстановитьВремяНачала

Устанавливает время начала спана.

ПараметрТипПо умолчаниюОписание
ЗначениеДатаВремя начала

Возвращает: ОтелПостроительСпанаЭтотОбъект для fluent API


НачатьСпан

Создаёт и возвращает настроенный спан. Если семплер решил отбросить спан — возвращает незаписывающий спан (ОтелНезаписывающийСпан).

Возвращает: ОтелСпан, ОтелНезаписывающийСпан

Пример

bsl
Спан = Трассировщик.ПостроительСпана("обработка")
    .УстановитьВидСпана(ОтелВидСпана.Сервер())
    .УстановитьАтрибут("http.method", "POST")
    .УстановитьАтрибут("http.url", АдресЗапроса)
    .НачатьСпан();

См. также


ОтелПровайдерТрассировки

Провайдер трассировки SDK (SdkTracerProvider).

Описание

Потокобезопасный объект. Создаёт и кэширует трассировщики (ОтелТрассировщик) по имени и версии библиотеки. Управляет цепочкой процессоров спанов, ресурсом и стратегией семплирования.

Аналог Java SDK: SdkTracerProvider.

Экземпляр создаётся через ОтелПостроительПровайдераТрассировки.

Методы

ПостроительТрассировщика

Создает построитель трассировщика (TracerBuilder).

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

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


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

Создает или возвращает трассировщик для указанной библиотеки (кэшируется по ключу имя:версия).

ПараметрТипПо умолчаниюОписание
ИмяБиблиотекиСтрокаИмя инструментирующей библиотеки
ВерсияБиблиотекиСтрока""Версия библиотеки
АтрибутыОбластиОтелАтрибутыНеопределеноАтрибуты InstrumentationScope
АдресСхемыСтрока""URL схемы телеметрии

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


ДобавитьПроцессор

Добавляет процессор спанов в цепочку.

ПараметрТипПо умолчаниюОписание
ПроцессорОтелПростойПроцессорСпанов, ОтелПакетныйПроцессорСпановПроцессор спанов

Ресурс

Возвращает ресурс провайдера.

Возвращает: ОтелРесурс


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

Принудительно отправляет все накопленные данные через процессоры.

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

Возвращает: ОтелРезультатЭкспорта — агрегированный результат сброса всех процессоров


Закрыть

Завершает работу провайдера и возвращает результат.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут операции в миллисекундах

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

Пример

bsl
Провайдер = Новый ОтелПостроительПровайдераТрассировки()
    .УстановитьРесурс(Ресурс)
    .ДобавитьПроцессор(Процессор)
    .УстановитьСэмплер(ОтелСэмплер.ВсегдаВключен())
    .Построить();

Трассировщик = Провайдер.ПолучитьТрассировщик("мой-сервис");

См. также


ОтелПростойПроцессорСпанов

Простой (синхронный) процессор спанов.

Описание

Экспортирует спаны синхронно в момент их завершения. Не буферизует данные — каждый завершённый спан немедленно передаётся экспортеру. Подходит для разработки и тестирования; в продакшне рекомендуется использовать ОтелПакетныйПроцессорСпанов.

Аналог Java SDK: SimpleSpanProcessor.

Конструктор

ПараметрТипПо умолчаниюОписание
ЭкспортерПроизвольныйЭкспортер спанов (должен реализовывать интерфейс экспортера)

Методы

ПриНачале

Вызывается при начале спана. В простом процессоре не выполняет действий.

ПараметрТипПо умолчаниюОписание
СпанОтелСпанНачавшийся спан
РодительскийКонтекстПроизвольныйРодительский контекст

ПередЗавершением

Вызывается перед завершением спана. В простом процессоре не выполняет действий.

ПараметрТипПо умолчаниюОписание
СпанОтелСпанЗавершаемый спан

ПриЗавершении

Вызывается при завершении спана. Синхронно экспортирует спан.

ПараметрТипПо умолчаниюОписание
СпанОтелСпанЗавершённый спан

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

Синхронизирует незавершённые операции экспорта.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло0Таймаут в миллисекундах

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


Закрыть

Завершает работу процессора и закрывает экспортер.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло0Таймаут в миллисекундах

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

Пример

bsl
// OTLP HTTP-экспортер (из подсистемы Экспорт)
Экспортер = Новый ОтелOtlpГрпцЭкспортерСпанов();

Процессор = Новый ОтелПростойПроцессорСпанов(Экспортер);

Провайдер = Новый ОтелПостроительПровайдераТрассировки()
    .ДобавитьПроцессор(Процессор)
    .Построить();

См. также


ОтелСобытиеСпана

Событие (Event) спана.

Описание

Именованное событие с меткой времени и атрибутами, добавляемое к спану. Аналог Java SDK: EventData. Создаётся внутри SDK; доступен через Спан.События().

Конструктор

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя события
НовыеАтрибутыСоответствиеНеопределеноАтрибуты события
МеткаВремениДатаНеопределеноМетка времени (по умолчанию — текущее время)
МаксАтрибутовЧисло0Максимальное количество атрибутов (0 — без ограничения)

Методы

Имя

Возвращает имя события.

Возвращает: Строка


Время

Возвращает метку времени события.

Возвращает: Дата


Атрибуты

Возвращает атрибуты события.

Возвращает: ОтелАтрибуты


КоличествоОтброшенныхАтрибутов

Возвращает количество атрибутов, отброшенных из-за лимита.

Возвращает: Число


ВСоответствиеOtlp

Сериализует событие в соответствие для OTLP-экспорта.

Возвращает: Соответствие — словарь в формате OTLP

Пример

bsl
// Чтение событий спана
Для Каждого Событие Из Спан.События() Цикл
    Сообщить("Событие: " + Событие.Имя() + " @ " + Событие.Время());
КонецЦикла;

См. также


ОтелСостояниеТрассировки

Состояние трассировки (W3C TraceState).

Описание

Хранит пары ключ-значение, передаваемые по W3C TraceContext HTTP-заголовку tracestate. Ключи имеют формат vendorname или tenant@vendorname. Максимум 32 записи (ограничение W3C TraceState spec).

Аналог Java SDK: TraceState. Иммутабельный: методы Установить, Удалить возвращают новый экземпляр.

Методы

Получить

Возвращает значение по ключу.

ПараметрТипПо умолчаниюОписание
КлючСтрокаКлюч записи

Возвращает: Строка — значение или пустая строка


Установить

Добавляет или обновляет значение по ключу. Возвращает новый экземпляр (иммутабельность).

ПараметрТипПо умолчаниюОписание
КлючСтрокаКлюч записи
ЗначениеСтрокаЗначение записи

Возвращает: ОтелСостояниеТрассировки — новый экземпляр с добавленной записью


Удалить

Удаляет запись по ключу. Возвращает новый экземпляр.

ПараметрТипПо умолчаниюОписание
КлючСтрокаКлюч для удаления

Возвращает: ОтелСостояниеТрассировки — новый экземпляр без удалённой записи


ПолучитьОтелПодКлюч

Возвращает подзначение из записи OTel-вендора (vendor key = ot).

ПараметрТипПо умолчаниюОписание
ИмяПодКлючаСтрокаИмя подключа в OTel-записи

Возвращает: Строка


УстановитьОтелПодКлюч

Устанавливает подзначение в записи OTel-вендора.

ПараметрТипПо умолчаниюОписание
ИмяПодКлючаСтрокаИмя подключа
ЗначениеСтрокаЗначение
ПринудительноБулевоЛожьПерезаписать существующее значение

Возвращает: ОтелСостояниеТрассировки — новый экземпляр


Количество

Возвращает количество записей.

Возвращает: Число

Пример

bsl
СостояниеТрассировки = Спан.КонтекстСпана().СостояниеТрассировки();
НовоеСостояние = СостояниеТрассировки
    .Установить("vendor1", "значение1")
    .Установить("vendor2", "значение2");

Сообщить("Записей: " + НовоеСостояние.Количество());

См. также


ОтелСпан

Спан трассировки (Span).

Описание

Потокобезопасный объект, содержащий данные одной единицы работы. Создаётся через Трассировщик.НачатьСпан(), НачатьКорневойСпан(), НачатьДочернийСпан() или ОтелПостроительСпана.НачатьСпан().

Важно: Конструктор технически публичен из-за ограничений OneScript, но НЕ должен вызываться напрямую. Используйте только методы трассировщика.

Все методы записи (установка статуса, атрибутов и т.д.) не производят действий, если спан уже завершён.

Методы чтения

Имя

Возвращает имя спана.

Возвращает: Строка


КонтекстСпана

Возвращает неизменяемый контекст спана (SpanContext).

Возвращает: ОтелКонтекстСпана


ИдРодительскогоСпана

Возвращает идентификатор родительского спана.

Возвращает: Строка — 16 hex-символов или пустая строка для корневого спана


КонтекстРодительскогоСпана

Возвращает контекст спана родителя.

Возвращает: ОтелКонтекстСпана


ВидСпана

Возвращает вид спана.

Возвращает: Число — константа из ОтелВидСпана


ВремяНачала

Возвращает время начала спана.

Возвращает: Дата


ВремяОкончания

Возвращает время окончания спана (Неопределено если не завершён).

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


Атрибуты

Возвращает атрибуты спана.

Возвращает: ОтелАтрибуты


События

Возвращает список событий спана.

Возвращает: Массив из ОтелСобытиеСпана


Линки

Возвращает список линков спана.

Возвращает: Массив из ОтелЛинк


Ресурс

Возвращает ресурс спана (из провайдера трассировки).

Возвращает: ОтелРесурс


ОбластьИнструментирования

Возвращает область инструментирования (InstrumentationScope).

Возвращает: ОтелОбластьИнструментирования


КодСтатуса

Возвращает код статуса спана.

Возвращает: Число — константа из ОтелКодСтатуса


СообщениеСтатуса

Возвращает сообщение статуса.

Возвращает: Строка


Завершен

Проверяет, завершён ли спан.

Возвращает: Булево


КоличествоОтброшенныхАтрибутов

Возвращает: Число — количество атрибутов, отброшенных из-за лимита


КоличествоОтброшенныхСобытий

Возвращает: Число — количество событий, отброшенных из-за лимита


КоличествоОтброшенныхЛинков

Возвращает: Число — количество линков, отброшенных из-за лимита

Методы записи

УстановитьСтатус

Устанавливает статус спана. По спецификации OpenTelemetry: статус Ок и Ошибка не могут быть понижены до НеУстановлен. Переход ОкОшибка игнорируется.

ПараметрТипПо умолчаниюОписание
ЗначениеЧислоКод статуса из ОтелКодСтатуса
СообщениеСтрока""Сообщение статуса (только для Ошибка)

Возвращает: ОтелСпанЭтотОбъект для fluent API


ПереопределитьВремяНачала

Изменяет время начала спана.

ПараметрТипПо умолчаниюОписание
НовоеВремяНачалаДатаНовое время начала

СделатьТекущим

Помещает спан в текущий контекст (аналог Java Span.makeCurrent()).

Возвращает: ОтелТокенКонтекста — токен для последующего Закрыть()


Завершить

Завершает спан и отправляет его в цепочку процессоров. После вызова методы записи игнорируются.

ПараметрТипПо умолчаниюОписание
НовоеВремяОкончанияДатаНеопределеноВремя окончания; если не указано — текущее время

Пример

bsl
Спан = Трассировщик.НачатьСпан("SQL-запрос");
Токен = Спан.СделатьТекущим();
Попытка
    Спан.УстановитьСтатус(ОтелКодСтатуса.Ок());
Исключение
    Спан.УстановитьСтатус(ОтелКодСтатуса.Ошибка(), ОписаниеОшибки());
КонецПопытки;
Токен.Закрыть();
Спан.Завершить();

См. также


ОтелСэмплер

Модуль — стратегии семплирования.

Описание

Предоставляет встроенные стратегии семплирования спанов и функцию ДолженСэмплировать(). Семплер вызывается провайдером трассировки при создании каждого спана для принятия решения — записывать и экспортировать спан, только записывать, или отбросить.

Аналог Java SDK: Sampler + встроенные реализации.

Стратегии семплирования

ВсегдаВключен

Все спаны записываются и экспортируются.

Возвращает: Число


ВсегдаВыключен

Все спаны отбрасываются.

Возвращает: Число


ПоДолеТрассировок

Семплирует заданную долю трассировок. Решение принимается на основе trace-id.

Возвращает: Число


НаОсновеРодителя

Наследует решение о семплировании от родительского спана. Для корневых спанов применяет НоваяКорневаяСтратегия (по умолчанию — ВсегдаВключен).

Возвращает: Число


ВсегдаЗаписывать

Все спаны записываются, но не экспортируются (только локальное хранение).

Возвращает: Число

Константы решений семплирования

РешениеЗаписатьИЭкспортировать

Спан записывается в память и экспортируется в бэкенд.

Возвращает: Число


РешениеЗаписать

Спан записывается в память, но НЕ экспортируется.

Возвращает: Число


РешениеОтбросить

Спан не записывается и не экспортируется; возвращается незаписывающий объект.

Возвращает: Число

Служебные функции

Описание

Возвращает строковое описание конфигурации семплера (для логирования).

ПараметрТипПо умолчаниюОписание
СтратегияЧислоСтратегия из этого модуля
ДоляЧисло1.0Доля для ПоДолеТрассировок
КорневаяСтратегияЧислоНеопределеноКорневая стратегия для НаОсновеРодителя

Возвращает: Строка


ДолженСэмплировать

Принимает решение о семплировании спана. Вызывается автоматически провайдером трассировки.

ПараметрТипПо умолчаниюОписание
СтратегияЧислоСтратегия семплирования
ДоляЧислоДоля для ПоДолеТрассировок
ИдТрассировкиСтрокаИдентификатор трассировки (32 hex)
РодительСэмплированБулевоФлаг семплирования родительского спана
ЕстьРодительБулевоЕсть ли родительский спан
...ПроизвольныйНеопределеноДополнительные параметры для конкретных стратегий

Возвращает: ОтелРезультатСэмплирования

Пример

bsl
// Семплировать 10% трассировок (родительские наследуют решение)
Провайдер = Новый ОтелПостроительПровайдераТрассировки()
    .УстановитьСэмплер(
        ОтелСэмплер.НаОсновеРодителя(),
        1.0,
        ОтелСэмплер.ПоДолеТрассировок()  // корневая стратегия
    )
    // При построении передаётся доля для корневой стратегии
    .Построить();

См. также


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

Трассировщик — потокобезопасный объект для создания и управления спанами.

Описание

Все публичные методы безопасны для параллельного вызова из нескольких потоков. Создаётся через ОтелПровайдерТрассировки.ПолучитьТрассировщик() или ОтелSdk.ПолучитьТрассировщик(). Аналог Java SDK: Tracer.

Методы

ПостроительСпана

Создает построитель спана (SpanBuilder).

ПараметрТипПо умолчаниюОписание
ИмяСпанаСтрокаИмя спана

Возвращает: ОтелПостроительСпана


Включен

Проверяет, включён ли трассировщик. Имеет двухрежимную семантику:

  • Истина (SDK-режим): IdGenerator + Sampler работают штатно, создаются реальные спаны.
  • Ложь (API-режим): возвращается non-recording Span, IdGenerator не вызывается.

По спецификации: инструментирующий код SHOULD вызывать Включен() непосредственно перед каждым созданием спана, не кэшируя результат надолго.

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


НачатьСпан

Начинает новый спан. Если в контексте есть текущий спан, создаёт дочерний; иначе — корневой.

ПараметрТипПо умолчаниюОписание
ИмяСпанаСтрокаИмя спана
ВидСпанаЧислоНеопределеноВид спана из ОтелВидСпана
НачальныеАтрибутыСоответствиеНеопределеноНачальные атрибуты, передаются сэмплеру
ЛинкиМассив из ОтелЛинкНеопределеноНачальные линки

Возвращает: ОтелСпан, ОтелНезаписывающийСпан — спан или незаписывающий спан, если отброшен семплером


НачатьКорневойСпан

Начинает новый корневой спан (без родителя).

ПараметрТипПо умолчаниюОписание
ИмяСпанаСтрокаИмя спана
ВидСпанаЧислоНеопределеноВид спана из ОтелВидСпана
НачальныеАтрибутыСоответствиеНеопределеноНачальные атрибуты
ЛинкиМассив из ОтелЛинкНеопределеноНачальные линки

Возвращает: ОтелСпан, ОтелНезаписывающийСпан


НачатьДочернийСпан

Начинает новый дочерний спан.

ПараметрТипПо умолчаниюОписание
ИмяСпанаСтрокаИмя спана
РодительскийКонтекстОтелСпан, ОтелКонтекстСпанаРодительский спан или контекст спана
ВидСпанаЧислоНеопределеноВид спана из ОтелВидСпана
НачальныеАтрибутыСоответствиеНеопределеноНачальные атрибуты
ЛинкиМассив из ОтелЛинкНеопределеноНачальные линки

Возвращает: ОтелСпан, ОтелНезаписывающийСпан


ОбластьИнструментирования

Возвращает область инструментирования трассировщика.

Возвращает: ОтелОбластьИнструментирования


УстановитьКонфигурация

Обновляет конфигурацию трассировщика.

ПараметрТипПо умолчаниюОписание
ЗначениеОтелКонфигурацияТрассировщикаНовая конфигурация

Пример

bsl
Трассировщик = Сдк.ПолучитьТрассировщик("мой-сервис", "1.0.0");

Спан = Трассировщик.ПостроительСпана("обработка-запроса")
    .УстановитьВидСпана(ОтелВидСпана.Сервер())
    .УстановитьАтрибут("http.method", "GET")
    .НачатьСпан();

Токен = Спан.СделатьТекущим();
Попытка
    // ... логика обработки ...
Исключение
    Спан.ЗаписатьИсключение(ИнформацияОбОшибке());
    Спан.УстановитьСтатус(ОтелКодСтатуса.Ошибка());
КонецПопытки;
Токен.Закрыть();
Спан.Завершить();

См. также


ОтелGrpcТранспорт

gRPC-транспорт для отправки телеметрии по протоколу OTLP.

Описание

Обеспечивает отправку данных трассировки, метрик и логов через gRPC на адреса OTLP-совместимых коллекторов (Grafana LGTM, OpenTelemetry Collector и т.д.). Использует библиотеку oint (OPI_GRPC) для gRPC-вызовов.

Реализует тот же интерфейс Отправить(Путь, Данные), что и ОтелHttpТранспорт, поэтому все существующие экспортеры (спаны, логи, метрики) работают с обоими транспортами.

Данные передаются в формате OTLP JSON (camelCase ключи); транспорт автоматически конвертирует их в формат protobuf (snake_case ключи) через внутренний конвертер.

При получении gRPC-кодов UNAVAILABLE, DEADLINE_EXCEEDED, RESOURCE_EXHAUSTED выполняет повторные попытки с экспоненциальной задержкой и jitter.

Конструктор

bsl
Новый ОтелGrpcТранспорт(
    Адрес,
    НастройкиTls,
    Метаданные,
    КаталогProto,
    Таймаут,
    НовыйМаксПопыток
)
ПараметрТипПо умолчаниюОписание
АдресСтрокаАдрес OTLP-коллектора, например "http://localhost:4317". Схема http:// или https:// обязательна
НастройкиTlsОтелНастройкиTlsНеопределеноНастройки TLS для защищённых соединений
МетаданныеСоответствиеНеопределеноМетаданные gRPC, отправляемые с каждым вызовом
КаталогProtoСтрока""Каталог с OTLP .proto файлами (по умолчанию proto/ рядом с библиотекой)
ТаймаутЧисло10000Таймаут gRPC-вызова в миллисекундах
НовыйМаксПопытокЧисло3Максимальное количество попыток отправки

Методы

Отправить

Отправляет данные на указанный путь OTLP-адреса через gRPC. Автоматически конвертирует OTLP JSON в formат protobuf.

ПараметрТипПо умолчаниюОписание
ПутьСтрокаПуть OTLP-адреса, например "/v1/traces"
ДанныеСоответствиеДанные для отправки в формате OTLP JSON

Возвращает: БулевоИстина, если отправка прошла успешно

Закрыть

Закрывает gRPC-соединение. После вызова транспорт перестаёт принимать запросы.

ПолучитьМетаданные

Возвращает метаданные gRPC, отправляемые с каждым вызовом.

Возвращает: Соответствие — метаданные gRPC

ПолучитьНастройкиTls

Возвращает настройки TLS транспорта.

Возвращает: ОтелНастройкиTls, Неопределено — настройки TLS или Неопределено, если не заданы

Пример

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

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

// С метаданными авторизации
Метаданные = Новый Соответствие();
Метаданные.Вставить("authorization", "Bearer mytoken");
Транспорт = Новый ОтелGrpcТранспорт("http://localhost:4317", , Метаданные);

// С TLS
НастройкиTls = Новый ОтелНастройкиTls();
НастройкиTls.ФайлСертификата = "/etc/ssl/ca.crt";
Транспорт = Новый ОтелGrpcТранспорт("https://collector.example.com", НастройкиTls);

// Использование с экспортером
ЭкспортерСпанов = Новый ОтелЭкспортерСпанов(Транспорт);
// После работы — закрыть соединение
Транспорт.Закрыть();

ОтелHttpТранспорт

HTTP-транспорт для отправки телеметрии по протоколу OTLP.

Описание

Обеспечивает отправку данных трассировки, метрик и логов в формате JSON или protobuf по HTTP на адреса OTLP-совместимых коллекторов (Grafana LGTM, OpenTelemetry Collector и т.д.). Использует библиотеку 1connector для HTTP-запросов.

При получении HTTP-кодов 429, 502, 503, 504 транспорт автоматически выполняет повторные попытки с экспоненциальной задержкой и jitter (поддержка Retry-After).

Поддерживает протоколы http/protobuf (по умолчанию, согласно спецификации OTel) и http/json, gzip-сжатие тела запроса, а также TLS-настройки через ОтелНастройкиTls.

Конструктор

bsl
Новый ОтелHttpТранспорт(
    Адрес,
    НовыеЗаголовки,
    Таймаут,
    НовыйМаксПопыток,
    Компрессия,
    НастройкиTls,
    НовыйПротокол,
    НовыйСигнал
)
ПараметрТипПо умолчаниюОписание
АдресСтрокаАдрес OTLP-коллектора, например "http://localhost:4318"
НовыеЗаголовкиСоответствиеНеопределеноДополнительные HTTP-заголовки, отправляемые с каждым запросом
ТаймаутЧисло10Таймаут HTTP-запроса в секундах
НовыйМаксПопытокЧисло3Максимальное количество попыток отправки при повторяемых ошибках
КомпрессияСтрокаНеопределеноАлгоритм сжатия: "gzip" или Неопределено для отключения
НастройкиTlsОтелНастройкиTlsНеопределеноНастройки TLS для защищённых соединений
НовыйПротоколСтрока"http/protobuf"Протокол OTLP: "http/protobuf" или "http/json"
НовыйСигналСтрока""Сигнал телеметрии: "traces", "metrics", "logs" или пустая строка

Методы

Отправить

Отправляет данные на указанный путь OTLP-адреса. При получении HTTP 429/502/503/504 выполняет retry с экспоненциальной задержкой. Поддерживает оба протокола: http/json и http/protobuf.

ПараметрТипПо умолчаниюОписание
ПутьСтрокаПуть OTLP-адреса, например "/v1/traces"
ДанныеСоответствиеДанные для отправки в формате OTLP JSON

Возвращает: БулевоИстина, если отправка прошла успешно

ПолучитьЗаголовки

Возвращает HTTP-заголовки, отправляемые с каждым запросом.

Возвращает: Соответствие — заголовки HTTP-запроса

ПолучитьНастройкиTls

Возвращает настройки TLS транспорта.

Возвращает: ОтелНастройкиTls, Неопределено — настройки TLS или Неопределено, если не заданы

Пример

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

// Простой HTTP-транспорт
Транспорт = Новый ОтелHttpТранспорт("http://localhost:4318");

// С заголовками авторизации и gzip-сжатием
Заголовки = Новый Соответствие();
Заголовки.Вставить("Authorization", "Bearer mytoken");
Транспорт = Новый ОтелHttpТранспорт("https://collector.example.com", Заголовки, 30, 5, "gzip");

// С настройками TLS
НастройкиTls = Новый ОтелНастройкиTls();
НастройкиTls.ФайлСертификата = "/etc/ssl/ca.crt";
Транспорт = Новый ОтелHttpТранспорт("https://collector.example.com", , , , , НастройкиTls);

// Использование с экспортером спанов
ЭкспортерСпанов = Новый ОтелЭкспортерСпанов(Транспорт);

ОтелВПамятьТранспорт

Транспорт в памяти (InMemoryTransport) для тестирования.

Описание

Реализует тот же интерфейс Отправить(Путь, Данные), что и ОтелHttpТранспорт и ОтелGrpcТранспорт. Вместо отправки по сети сохраняет данные в массив для последующей проверки в тестах.

Является потокобезопасным: все операции защищены БлокировкаРесурса для корректной работы при конкурентном вызове.

Конструктор

Конструктор без параметров. При создании инициализирует пустой массив отправленных данных и признак закрытия в Ложь.

bsl
Новый ОтелВПамятьТранспорт()

Методы

Отправить

Сохраняет данные в память. Если транспорт закрыт, возвращает Ложь.

ПараметрТипПо умолчаниюОписание
ПутьСтрокаПуть адреса, например "/v1/traces"
ДанныеСоответствиеДанные в формате OTLP JSON

Возвращает: БулевоИстина, если транспорт не закрыт и данные сохранены

ПолучитьОтправленные

Возвращает все сохранённые отправки.

Возвращает: Массив из Соответствие — каждый элемент содержит ключи "Путь" и "Данные"

Очистить

Очищает все сохранённые отправки. Транспорт остаётся рабочим.

Закрыть

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

Пример

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

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

// Подключить к экспортеру
Экспортер = Новый ОтелЭкспортерСпанов(Транспорт);

// ... выполнить операции, создающие спаны ...

// Проверить результаты
Отправленные = Транспорт.ПолучитьОтправленные();
Если Отправленные.Количество() > 0 Тогда
    ПерваяОтправка = Отправленные[0];
    Сообщить("Путь: " + ПерваяОтправка["Путь"]);
    // Данные["resourceSpans"] - отправленные спаны
КонецЕсли;

// Сбросить для следующего теста
Транспорт.Очистить();

ОтелНастройкиTls

Настройки TLS для OTLP-транспортов.

Описание

Используется для передачи параметров TLS в ОтелHttpТранспорт и ОтелGrpcТранспорт. Соответствует спецификации OTLP Exporter: поля Insecure, Certificate File, Client key file, Client certificate file.

Примечание: поля ФайлКлиентскогоКлюча и ФайлКлиентскогоСертификата (mTLS-клиентский сертификат) принимаются в настройках, но не применяются к HTTP-соединениям. Это ограничение текущей версии библиотеки 1connector: параметр КлиентскийСертификатSSL сохраняется во внутренних настройках, но не передаётся в пул соединений. Следите за обновлениями 1connector.

Конструктор

Конструктор без параметров. При создании все поля инициализируются пустыми строками, Insecure = Ложь.

bsl
Новый ОтелНастройкиTls()

Свойства

СвойствоТипПо умолчаниюОписание
ФайлСертификатаСтрока""Путь к файлу корневого сертификата (CA / trust chain)
ФайлКлиентскогоКлючаСтрока""Путь к файлу клиентского приватного ключа (для mTLS)
ФайлКлиентскогоСертификатаСтрока""Путь к файлу клиентского сертификата (для mTLS)
InsecureБулевоЛожьЕсли Истина — отключает проверку TLS-сертификата сервера

Методы

Применен

Проверяет, применены ли какие-либо TLS-настройки.

Возвращает: БулевоИстина, если хотя бы одно поле задано (не пустая строка или Insecure = Истина)

Пример

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

// Отключить проверку сертификата (для разработки)
НастройкиTls = Новый ОтелНастройкиTls();
НастройкиTls.Insecure = Истина;

// С указанием CA-сертификата
НастройкиTls = Новый ОтелНастройкиTls();
НастройкиTls.ФайлСертификата = "/etc/ssl/certs/ca-bundle.crt";

// mTLS (только для gRPC)
НастройкиTls = Новый ОтелНастройкиTls();
НастройкиTls.ФайлСертификата = "/etc/ssl/ca.crt";
НастройкиTls.ФайлКлиентскогоКлюча = "/etc/ssl/client.key";
НастройкиTls.ФайлКлиентскогоСертификата = "/etc/ssl/client.crt";

// Передать в транспорт
Транспорт = Новый ОтелGrpcТранспорт("https://collector.example.com", НастройкиTls);

// Проверить, заданы ли настройки
Если НастройкиTls.Применен() Тогда
    Сообщить("TLS настроен");
КонецЕсли;

ОтелЭкспортерЛогов

Экспортер записей логов в формате OTLP.

Описание

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

Scope и resource читаются из каждой записи при формировании пакета OTLP. Все методы безопасны для конкурентного вызова: признак закрытия хранится в АтомарноеБулево. Экспорт выполняется асинхронно через Обещания с ограничением по таймауту.

Конструктор

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

Методы

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

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

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

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

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

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

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

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

Закрыть

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

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

Пример

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

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

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

// Интеграция с logos через аппендер
Транспорт = Новый ОтелHttpТранспорт("http://localhost:4318");
Экспортер = Новый ОтелЭкспортерЛогов(Транспорт);
// Используется совместно с ОтелАппендерLogos для автоматической отправки логов

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

ОтелЭкспортерМетрик

Экспортер метрик в формате OTLP.

Описание

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

Поддерживает типы метрик: Сумма, Датчик, Гистограмма, ЭкспоненциальнаяГистограмма. Перед отправкой выполняет валидацию совместимости агрегаций и темпоральности.

Все методы безопасны для конкурентного вызова. Поля состояния либо иммутабельны (назначаются в конструкторе), либо хранятся в АтомарноеБулево.

Конструктор

bsl
Новый ОтелЭкспортерМетрик(
    Транспорт,
    СелекторВременнойАгрегации,
    ПутьСигнала,
    ТаймаутМс
)
ПараметрТипПо умолчаниюОписание
ТранспортОтелHttpТранспорт, ОтелGrpcТранспорт, ОтелВПамятьТранспортТранспорт для отправки данных
СелекторВременнойАгрегацииУниФункцияНеопределеноФункция-селектор: Применить(ТипИнструмента) → Число; определяет временну́ю агрегацию для каждого типа инструмента
ПутьСигналаСтрока"/v1/metrics"Путь OTLP-адреса для отправки метрик
ТаймаутМсЧисло10000Таймаут экспорта в миллисекундах

Методы

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

Экспортирует данные метрик. Перед отправкой валидирует совместимость типов метрик и темпоральности. По спецификации OTel не блокируется бесконечно.

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

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

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

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

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

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

Закрыть

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

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут операции в миллисекундах

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

ПринудительноВыгрузитьСРезультатом

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

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут операции в миллисекундах

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

ПолучитьВременнуюАгрегацию

Возвращает временну́ю агрегацию для указанного типа инструмента.

ПараметрТипПо умолчаниюОписание
ТипИнструментаСтрокаТип инструмента: "counter", "up_down_counter", "histogram", "gauge" и т.д.

Возвращает: Число — значение из ОтелВременнаяАгрегация

Пример

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

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

// С кастомным селектором временной агрегации
// (функция, которая возвращает тип агрегации по типу инструмента)
Транспорт = Новый ОтелGrpcТранспорт("http://localhost:4317");
Экспортер = Новый ОтелЭкспортерМетрик(Транспорт, МойСелектор);

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

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

Экспортер завершённых спанов трассировки в формате 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");
Экспортер = Новый ОтелЭкспортерСпанов(Транспорт);

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

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

ОтелBaggage

Класс Baggage по спецификации W3C Baggage.

Описание

Хранит пары ключ-значение для передачи контекстных данных между сервисами. ОтелBaggage иммутабелен — внутри хранит ФиксированноеСоответствие. Для создания или изменения используйте ОтелПостроительBaggage или метод ТоПостроитель().

Аналог Java SDK: Baggage.

Конструктор

ПараметрТипПо умолчаниюОписание
НовыеЗначенияСоответствиеНеопределеноПары ключ-значение
НовыеМетаданныеСоответствиеНеопределеноМетаданные по ключам

Обычно создаётся через ОтелПостроительBaggage.Построить().

Методы

Текущий

Возвращает текущий Baggage из контекста выполнения. Аналог Java SDK: Baggage.current().

Возвращает: ОтелBaggage, Неопределено — текущий Baggage или Неопределено


СделатьТекущим

Делает этот Baggage текущим в контексте выполнения.

Возвращает: ОтелТокенКонтекста — токен; передайте в ОтелКонтекст.ОтсоединитьКонтекст() или вызовите Закрыть()


Получить

Возвращает значение по ключу.

ПараметрТипПо умолчаниюОписание
КлючСтрокаКлюч записи

Возвращает: Строка, Неопределено — значение или Неопределено, если ключ не найден


ПолучитьМетаданные

Возвращает метаданные по ключу.

ПараметрТипПо умолчаниюОписание
КлючСтрокаКлюч записи

Возвращает: Строка — метаданные или пустая строка, если не найдены


Установить

Возвращает новый Baggage с добавленной парой ключ-значение.

ПараметрТипПо умолчаниюОписание
КлючСтрокаКлюч
ЗначениеСтрокаЗначение

Возвращает: ОтелBaggage — новый иммутабельный экземпляр с добавленным значением


Удалить

Возвращает новый Baggage без указанного ключа.

ПараметрТипПо умолчаниюОписание
КлючСтрокаКлюч для удаления

Возвращает: ОтелBaggage — новый иммутабельный экземпляр без указанного ключа


Очистить

Возвращает новый пустой Baggage.

Возвращает: ОтелBaggage — новый пустой иммутабельный экземпляр


ПолучитьВсе

Возвращает все пары ключ-значение.

Возвращает: ФиксированноеСоответствие — иммутабельная коллекция


ТоПостроитель

Создает построитель на основе текущего Baggage. Аналог Java SDK: Baggage.toBuilder().

Возвращает: ОтелПостроительBaggage


Количество

Возвращает количество записей.

Возвращает: Число


ПолучитьВсеМетаданные

Возвращает все метаданные.

Возвращает: ФиксированноеСоответствие — иммутабельная коллекция метаданных

Пример

bsl
Baggage = Новый ОтелПостроительBaggage()
    .Установить("userId", "12345")
    .Установить("tenantId", "abc")
    .Построить();

Токен = Baggage.СделатьТекущим();
// ... работа в контексте Baggage ...
Токен.Закрыть();

См. также


ОтелSdk

Главный класс OpenTelemetry SDK — единая точка входа в телеметрию.

Описание

Агрегирует ОтелПровайдерТрассировки, ОтелПровайдерЛогирования, ОтелПровайдерМетрик и пропагаторы контекста. Предоставляет shortcut-методы для получения ОтелТрассировщик, ОтелЛоггер и ОтелМетр.

Аналог Java SDK: OpenTelemetrySdk.

Экземпляр создаётся через ОтелПостроительSdk — прямой вызов конструктора в пользовательском коде не рекомендуется.

Конструктор

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

Методы

ПровайдерТрассировки

Возвращает провайдер трассировки.

Возвращает: ОтелПровайдерТрассировки — провайдер трассировки


ПровайдерЛогирования

Возвращает провайдер логирования.

Возвращает: ОтелПровайдерЛогирования — провайдер логирования


ПровайдерМетрик

Возвращает провайдер метрик.

Возвращает: ОтелПровайдерМетрик — провайдер метрик


Пропагаторы

Возвращает пропагаторы контекста.

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


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

Shortcut: получить трассировщик. Аналог Java SDK: openTelemetry.getTracer("name").

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

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


ПостроительТрассировщика

Shortcut: получить построитель трассировщика.

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

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


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

Shortcut: получить логгер.

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

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


ПостроительЛоггера

Shortcut: получить построитель логгера.

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

Возвращает: ОтелПостроительЛоггера — построитель логгера


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

Shortcut: получить метр.

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

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


ПостроительМетра

Shortcut: получить построитель метра.

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

Возвращает: ОтелПостроительМетра — построитель метра


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

Принудительно отправляет все накопленные данные из всех провайдеров.

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

Возвращает: ОтелРезультатЭкспорта — агрегированный результат сброса всех провайдеров


Закрыть

Завершает работу всех провайдеров.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут завершения в миллисекундах. Переопределяется переменной окружения OTEL_SDK_SHUTDOWN_TIMEOUT

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

Пример

bsl
Сдк = Новый ОтелПостроительSdk()
    .УстановитьПровайдерТрассировки(ПровайдерТрассировки)
    .УстановитьПровайдерМетрик(ПровайдерМетрик)
    .Построить();

Трассировщик = Сдк.ПолучитьТрассировщик("мой-сервис");
Спан = Трассировщик.НачатьСпан("обработка-запроса");
// ...
Спан.Завершить();

Сдк.Закрыть();

См. также


ОтелАтрибуты

Класс для хранения атрибутов (пар ключ-значение) телеметрии OpenTelemetry.

Описание

Атрибуты используются для описания ресурсов, спанов, событий, записей логов и точек данных метрик. Внутри хранит обычное Соответствие. Поддерживает цепочку вызовов (fluent API) через метод Установить.

Методы

Установить

Устанавливает значение атрибута по ключу.

ПараметрТипПо умолчаниюОписание
КлючСтрокаИмя атрибута
ЗначениеПроизвольныйЗначение атрибута (строка, число, булево)

Возвращает: ОтелАтрибуты — ссылка на текущий объект для цепочки вызовов


Получить

Возвращает значение атрибута по ключу.

ПараметрТипПо умолчаниюОписание
КлючСтрокаИмя атрибута

Возвращает: Произвольный — значение атрибута или Неопределено


Удалить

Удаляет атрибут по ключу.

ПараметрТипПо умолчаниюОписание
КлючСтрокаИмя атрибута

Количество

Возвращает количество атрибутов.

Возвращает: Число — количество атрибутов


ВСоответствие

Возвращает внутреннее соответствие атрибутов.

Возвращает: Соответствие — внутреннее соответствие атрибутов


ВМассивOtlp

Преобразует атрибуты в массив формата OTLP JSON.

Возвращает: Массив — массив объектов {"key": "...", "value": {...}}

Пример

bsl
Атрибуты = Новый ОтелАтрибуты()
    .Установить("http.method", "GET")
    .Установить("http.status_code", 200)
    .Установить("http.url", "https://example.com/api");

Значение = Атрибуты.Получить("http.method"); // "GET"

См. также


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

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

Описание

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

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

Функции

Установить

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

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

Получить

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

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


Сбросить

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


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

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


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

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

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

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


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

Shortcut: получить логгер из глобального SDK.

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

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


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

Shortcut: получить метр из глобального SDK.

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

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


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

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

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

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

Возвращает глобальные пропагаторы контекста. Если не установлены явно — из SDK. Если SDK не инициализирован — default composite propagator (W3C Trace Context + W3C Baggage).

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

Пример

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

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

См. также


ОтелКлючКонтекста

Ключ для хранения значений в контексте.

Описание

Ключи сравниваются по ссылке, а не по имени — два ключа с одинаковым именем являются разными ключами. Имя используется только для отладки.

Создаётся через ОтелКонтекст.СоздатьКлюч(Имя).

Конструктор

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя ключа (для отладки)

Методы

Имя

Возвращает имя ключа (для отладки).

Возвращает: Строка — имя ключа

Пример

bsl
КлючСессии = ОтелКонтекст.СоздатьКлюч("session");

// Создать контекст с сессией
НовыйКонтекст = ОтелКонтекст.КонтекстСоЗначением(
    ОтелКонтекст.Текущий(),
    КлючСессии,
    СессионныйОбъект
);

// Прочитать из контекста
Сессия = ОтелКонтекст.ПолучитьИзКонтекста(ОтелКонтекст.Текущий(), КлючСессии);

См. также


ОтелКонтекст

Модуль для управления текущим контекстом выполнения.

Описание

Реализует generic key-value хранилище контекста (аналог Java SDK: io.opentelemetry.context.Context). Каждый поток (ФоновоеЗадание) имеет свой стек контекстов. Контекст — это ФиксированноеСоответствие ключ → значение. Ключи — ОтелКлючКонтекста, сравниваются по ссылке.

Потокобезопасен: использует СинхронизированнаяКарта для хранения стеков контекстов.

Важно: Ключи для спана и Baggage являются приватными переменными модуля. Для работы со спанами и Baggage используйте специализированные методы ТекущийСпан(), ТекущийBaggage() и т.д.

Функции

СоздатьКлюч

Создает новый ключ контекста. Ключи сравниваются по ссылке — два ключа с одинаковым именем являются разными ключами.

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя ключа (для отладки)

Возвращает: ОтелКлючКонтекста — новый ключ контекста


Текущий

Возвращает текущий контекст (верхний элемент стека). Если стек пуст, возвращает пустой иммутабельный контекст.

Возвращает: ФиксированноеСоответствие — текущий контекст (иммутабельный)


Получить

Возвращает значение из текущего контекста по ключу.

ПараметрТипПо умолчаниюОписание
КлючОтелКлючКонтекстаКлюч контекста

Возвращает: Произвольный, Неопределено — значение по ключу или Неопределено


ТекущийСпан

Возвращает текущий спан из контекста текущего потока.

Возвращает: ОтелСпан, Неопределено — текущий спан или Неопределено


ТекущийBaggage

Возвращает текущий Baggage из контекста текущего потока.

Возвращает: ОтелBaggage, Неопределено — текущий Baggage или Неопределено


ПолучитьИзКонтекста

Возвращает значение из переданного контекста по ключу.

ПараметрТипПо умолчаниюОписание
КонтекстФиксированноеСоответствие, СоответствиеКонтекст
КлючОтелКлючКонтекстаКлюч контекста

Возвращает: Произвольный, Неопределено — значение по ключу или Неопределено


КонтекстСоЗначением

Создает новый иммутабельный контекст с установленным значением.

ПараметрТипПо умолчаниюОписание
КонтекстФиксированноеСоответствие, СоответствиеИсходный контекст
КлючОтелКлючКонтекстаКлюч контекста
ЗначениеПроизвольныйЗначение для установки

Возвращает: ФиксированноеСоответствие — новый иммутабельный контекст


СпанИзКонтекста

Возвращает спан из переданного контекста или из текущего контекста потока.

ПараметрТипПо умолчаниюОписание
КонтекстОбъектФиксированноеСоответствие, Соответствие, НеопределеноНеопределеноЯвный контекст

Возвращает: ОтелСпан, Неопределено — спан или Неопределено


BaggageИзКонтекста

Возвращает Baggage из переданного контекста или из текущего контекста потока.

ПараметрТипПо умолчаниюОписание
КонтекстОбъектФиксированноеСоответствие, Соответствие, НеопределеноНеопределеноЯвный контекст

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


КонтекстСоСпаном

Создает новый иммутабельный контекст (копию переданного) с установленным спаном.

ПараметрТипПо умолчаниюОписание
КонтекстФиксированноеСоответствие, СоответствиеИсходный контекст
СпанОтелСпан, ОтелНезаписывающийСпанСпан для установки

Возвращает: ФиксированноеСоответствие — новый иммутабельный контекст со спаном


ПрисоединитьКонтекст

Присоединяет новый контекст к текущему потоку (Attach Context). Помещает контекст на вершину стека.

ПараметрТипПо умолчаниюОписание
КонтекстФиксированноеСоответствие, СоответствиеКонтекст для установки

Возвращает: ОтелТокенКонтекста — токен для последующего ОтсоединитьКонтекст()


ОтсоединитьКонтекст

Отсоединяет контекст по токену, восстанавливая предыдущий (Detach Context).

ПараметрТипПо умолчаниюОписание
ТокенОтелТокенКонтекстаТокен, возвращенный из ПрисоединитьКонтекст()

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


Очистить

Очищает контекст текущего потока.


ОчиститьМертвыеПотоки

Удаляет стеки контекстов для завершившихся потоков. Предотвращает утечку памяти. Вызывается автоматически при ОтелSdk.Закрыть().


КоличествоОтслеживаемыхПотоков

Возвращает количество отслеживаемых потоков. Используется для мониторинга и тестирования утечек.

Возвращает: Число — количество отслеживаемых потоков

Пример

bsl
// RAII-паттерн
Токен = Спан.СделатьТекущим();
Попытка
    // ... работа в контексте спана ...
Исключение
    Спан.ЗаписатьИсключение(ИнформацияОбОшибке());
КонецПопытки;
Токен.Закрыть();
Спан.Завершить();

// Явный Attach/Detach
Токен = ОтелКонтекст.ПрисоединитьКонтекст(НовыйКонтекст);
// ... работа ...
ОтелКонтекст.ОтсоединитьКонтекст(Токен);

См. также


ОтелОбластьИнструментирования

Класс InstrumentationScope по спецификации OpenTelemetry.

Описание

Описывает библиотеку инструментации, создавшую телеметрию. Используется в трассировщике, логгере и метре для группировки данных при экспорте. Аналог Java SDK: io.opentelemetry.sdk.common.InstrumentationScopeInfo.

Конструктор

ПараметрТипПо умолчаниюОписание
ИмяСтрокаИмя инструментирующей библиотеки
ВерсияСтрока""Версия библиотеки
АтрибутыОтелАтрибутыНеопределеноАтрибуты скоупа
АдресСхемыСтрока""URL схемы телеметрии

Методы

Имя

Возвращает имя инструментирующей библиотеки.

Возвращает: Строка


Версия

Возвращает версию библиотеки.

Возвращает: Строка


Атрибуты

Возвращает атрибуты скоупа.

Возвращает: ОтелАтрибуты, Неопределено


АдресСхемы

Возвращает URL схемы телеметрии.

Возвращает: Строка


Ключ

Возвращает уникальный ключ для кэширования (формат: имя:версия). Безопасен к Неопределено.

Возвращает: Строка


БиблиотекаИнструментирования

Возвращает ЭтотОбъект как InstrumentationLibrary (deprecated). Сохранен для обратной совместимости — InstrumentationLibrary содержит те же Имя и Версия, что и InstrumentationScope.

Возвращает: ОтелОбластьИнструментирования

См. также


ОтелПостроительBaggage

Построитель Baggage (BaggageBuilder) по спецификации OpenTelemetry.

Описание

Fluent API для создания иммутабельного ОтелBaggage. Аналог Java SDK: Baggage.builder().

Конструктор

ПараметрТипПо умолчаниюОписание
НачальныеЗначенияСоответствиеНеопределеноНачальные значения (для toBuilder)
НачальныеМетаданныеСоответствиеНеопределеноНачальные метаданные (для toBuilder)

Методы

Установить

Устанавливает пару ключ-значение с опциональными метаданными.

ПараметрТипПо умолчаниюОписание
КлючСтрокаКлюч элемента
ЗначениеСтрокаЗначение элемента
НовыеМетаданныеСтрока""Метаданные элемента

Возвращает: ОтелПостроительBaggageЭтотОбъект для fluent API


Удалить

Удаляет ключ.

ПараметрТипПо умолчаниюОписание
КлючСтрокаКлюч элемента для удаления

Возвращает: ОтелПостроительBaggageЭтотОбъект для fluent API


Построить

Создает иммутабельный экземпляр Baggage.

Возвращает: ОтелBaggage — созданный Baggage

Пример

bsl
Baggage = Новый ОтелПостроительBaggage()
    .Установить("userId", "12345")
    .Установить("tenantId", "abc", "metadata-value")
    .Построить();

См. также


ОтелПостроительSdk

Построитель OpenTelemetry SDK (OpenTelemetrySdkBuilder).

Описание

Предоставляет fluent API для сборки ОтелSdk из отдельных провайдеров. Аналог Java SDK: OpenTelemetrySdk.builder().

Методы

УстановитьПровайдерТрассировки

Устанавливает провайдер трассировки.

ПараметрТипПо умолчаниюОписание
ПровайдерОтелПровайдерТрассировкиПровайдер трассировки

Возвращает: ОтелПостроительSdkЭтотОбъект для fluent API


УстановитьПровайдерЛогирования

Устанавливает провайдер логирования.

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

Возвращает: ОтелПостроительSdkЭтотОбъект для fluent API


УстановитьПровайдерМетрик

Устанавливает провайдер метрик.

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

Возвращает: ОтелПостроительSdkЭтотОбъект для fluent API


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

Устанавливает пропагаторы контекста.

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

Возвращает: ОтелПостроительSdkЭтотОбъект для fluent API


Построить

Создает экземпляр OpenTelemetry SDK.

Возвращает: ОтелSdk — настроенный экземпляр SDK


ПостроитьИЗарегистрироватьГлобально

Создает экземпляр SDK и регистрирует его глобально. Аналог Java SDK: OpenTelemetrySdk.builder().buildAndRegisterGlobal().

Возвращает: ОтелSdk — настроенный и глобально зарегистрированный экземпляр SDK

Пример

bsl
Сдк = Новый ОтелПостроительSdk()
    .УстановитьПровайдерТрассировки(ПровайдерТрассировки)
    .УстановитьПровайдерЛогирования(ПровайдерЛогирования)
    .УстановитьПровайдерМетрик(ПровайдерМетрик)
    .УстановитьПропагаторы(Пропагатор)
    .ПостроитьИЗарегистрироватьГлобально();

См. также


ОтелПостроительРесурса

Построитель ресурса (ResourceBuilder) по спецификации OpenTelemetry.

Описание

Fluent API для создания ОтелРесурс с произвольными атрибутами. Атрибуты из построителя перезаписывают атрибуты по умолчанию при вызове Построить(). Аналог Java SDK: io.opentelemetry.sdk.resources.ResourceBuilder.

Методы

Установить

Устанавливает атрибут ресурса.

ПараметрТипПо умолчаниюОписание
КлючСтрокаИмя атрибута
ЗначениеПроизвольныйЗначение атрибута

Возвращает: ОтелПостроительРесурсаЭтотОбъект для fluent API


УстановитьВсе

Устанавливает несколько атрибутов из ОтелАтрибуты.

ПараметрТипПо умолчаниюОписание
ЗначениеОтелАтрибутыАтрибуты для добавления

Возвращает: ОтелПостроительРесурсаЭтотОбъект для fluent API


УстановитьАдресСхемы

Устанавливает URL схемы семантических атрибутов ресурса.

ПараметрТипПо умолчаниюОписание
ЗначениеСтрокаURL схемы (например, "https://opentelemetry.io/schemas/1.24.0")

Возвращает: ОтелПостроительРесурсаЭтотОбъект для fluent API


СлитьС

Добавляет атрибуты из другого ресурса. Атрибуты другого ресурса перезаписывают существующие.

ПараметрТипПо умолчаниюОписание
РесурсОтелРесурсРесурс для слияния

Возвращает: ОтелПостроительРесурсаЭтотОбъект для fluent API


Построить

Создает ресурс с указанными атрибутами. Атрибуты из построителя перезаписывают дефолтные значения.

Возвращает: ОтелРесурс — созданный ресурс с дефолтными и пользовательскими атрибутами

Пример

bsl
Ресурс = Новый ОтелПостроительРесурса()
    .Установить("service.name", "мой-сервис")
    .Установить("service.version", "1.0.0")
    .УстановитьАдресСхемы("https://opentelemetry.io/schemas/1.24.0")
    .Построить();

См. также


ОтелРезультатЗакрытия

Результат операции закрытия или принудительной выгрузки.

Описание

Аналог CompletableResultCode для операций Shutdown/ForceFlush по спецификации OpenTelemetry SDK. По умолчанию создаётся успешный результат.

Конструктор

ПараметрТипПо умолчаниюОписание
НовыйУспехБулевоИстинаПризнак успешного завершения
НовоеОписаниеСтрока""Описание ошибки
НовоеИстеклоБулевоЛожьПризнак истечения таймаута

Методы

Успешно

Возвращает признак успешного завершения операции.

Возвращает: Булево


ИстекТаймаут

Возвращает признак истечения таймаута.

Возвращает: Булево


Описание

Возвращает описание ошибки.

Возвращает: Строка

См. также


ОтелРезультатЭкспорта

Результат асинхронной операции экспорта.

Описание

Аналог CompletableResultCode из Java SDK. Используется процессорами и экспортерами для возврата результата операций Export, ForceFlush. Может содержать обещание для ожидания завершения асинхронных операций.

Конструктор

ПараметрТипПо умолчаниюОписание
СтатусЧисло-1Начальный статус: 0 = успех, 1 = ошибка, -1 = в процессе
ОбещаниеПроизвольныйНеопределеноОбъект обещания для async-операций

Методы

Успешно

Возвращает признак успешности результата.

Возвращает: БулевоИстина, если операция завершилась успешно


ИстекТаймаут

Возвращает признак истечения таймаута.

Возвращает: БулевоИстина, если операция завершилась по таймауту


Статус

Возвращает числовой код статуса результата.

Возвращает: Число0 = успех, 1 = ошибка, 2 = таймаут, -1 = в процессе


Ожидать

Блокирующее ожидание завершения операции. Если результат содержит обещание, ожидает его завершения.

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

Возвращает: ОтелРезультатЭкспорта — ссылка на себя для цепочки вызовов

См. также


ОтелРесурс

Класс описания ресурса (Resource) по спецификации OpenTelemetry.

Описание

Ресурс описывает сущность, производящую телеметрию: сервис, хост, процесс и т.д. По умолчанию при создании добавляются обязательные атрибуты: service.name, telemetry.sdk.name, telemetry.sdk.language, telemetry.sdk.version. Атрибуты можно дополнить через ОтелПостроительРесурса.

Конструктор

ПараметрТипПо умолчаниюОписание
БезУмолчанийБулевоЛожьЕсли Истина, не добавлять атрибуты по умолчанию
АдресСхемыСтрока""URL схемы ресурса

Методы

Атрибуты

Возвращает атрибуты ресурса.

Возвращает: ОтелАтрибуты — атрибуты ресурса


АдресСхемы

Возвращает URL схемы ресурса.

Возвращает: Строка — URL схемы или пустая строка


Слить

Создает новый ресурс как результат слияния текущего с другим. Атрибуты другого ресурса имеют приоритет.

ПараметрТипПо умолчаниюОписание
ДругойРесурсОтелРесурсРесурс для слияния

Возвращает: ОтелРесурс — новый ресурс со слитыми атрибутами


ВСоответствиеOtlp

Преобразует ресурс в соответствие формата OTLP JSON.

Возвращает: Соответствие{"attributes": [...]}

Пример

bsl
Ресурс = Новый ОтелПостроительРесурса()
    .Установить("service.name", "мой-сервис")
    .Установить("service.version", "1.0.0")
    .УстановитьАдресСхемы("https://opentelemetry.io/schemas/1.24.0")
    .Построить();

ИмяСервиса = Ресурс.Атрибуты().Получить("service.name"); // "мой-сервис"

См. также


ОтелТокенКонтекста

Токен (Token) контекста по спецификации OpenTelemetry Context API.

Описание

Возвращается из ОтелКонтекст.ПрисоединитьКонтекст() и должен быть передан в ОтелКонтекст.ОтсоединитьКонтекст() для восстановления предыдущего контекста. Поддерживает RAII-паттерн через метод Закрыть().

Аналоги: Java Scope, Python opentelemetry.context.Token, Go detach token.

Конструктор

ПараметрТипПо умолчаниюОписание
ПараметрГлубинаЧисло0Глубина стека контекстов на момент присоединения
ПараметрИдПотокаСтрока""Идентификатор потока, в котором был выдан токен

Методы

Отсоединен

Возвращает признак того, что токен уже отсоединён (Detach был вызван).

Возвращает: БулевоИстина, если токен отсоединён


ПометитьОтсоединенным

Помечает токен как отсоединённый. Внутренний метод, вызывается из ОтелКонтекст.ОтсоединитьКонтекст().


Закрыть

Отсоединяет контекст, восстанавливая предыдущий (сахар над ОтелКонтекст.ОтсоединитьКонтекст). Повторный вызов идемпотентен.

Пример

bsl
// RAII-паттерн
Токен = Спан.СделатьТекущим();
Попытка
    // ... работа в контексте спана ...
Исключение
    Спан.ЗаписатьИсключение(ИнформацияОбОшибке());
КонецПопытки;
Токен.Закрыть(); // обязательно вызвать перед Завершить()
Спан.Завершить();

// Явный Detach
Токен = ОтелКонтекст.ПрисоединитьКонтекст(Контекст);
// ... работа ...
ОтелКонтекст.ОтсоединитьКонтекст(Токен);

См. также