Skip to content

Автоконфигурация ​

Модуль ОтелАвтоконфигурация — рекомендуемый способ инициализации SDK. Он следует спецификации переменных окружения OpenTelemetry и автоматически создаёт все необходимые провайдеры (трассировки, логирования, метрик), настраивает экспортеры, процессоры и пропагаторы.

Как работает автоконфигурация ​

  1. Читает параметры из переменных окружения (OTEL_*) и/или файла конфигурации через configor.
  2. Создаёт транспорт (HTTP или gRPC) согласно OTEL_EXPORTER_OTLP_PROTOCOL.
  3. Строит провайдеры трассировки, логирования и метрик с batch-процессорами. Перед batch-процессором логов стоит процессор событий в события спана.
  4. Регистрирует SDK глобально через ОтелГлобальный.
  5. Возвращает готовый объект ОтелSdk.

Инициализация ​

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

Сдк = ОтелАвтоконфигурация.Инициализировать();

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

// Получение метра
Метр = Сдк.ПолучитьМетр("my-library");

// Глобальный доступ из любого места кода
Трассировщик2 = ОтелГлобальный.ПолучитьТрассировщик("other-library");

Настройка через переменные окружения ​

Переменные окружения читаются автоматически. Имена переменных соответствуют стандарту OpenTelemetry: OTEL_FOO_BAR → ключ configor otel.foo.bar.

bash
export OTEL_SERVICE_NAME=my-service
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
bash
export OTEL_SERVICE_NAME=my-service
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
export OTEL_EXPORTER_OTLP_PROTOCOL=http/json
export OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=production,team=backend
bash
export OTEL_SERVICE_NAME=my-service
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
bash
export OTEL_SDK_DISABLED=true

Настройка через файл конфигурации (configor) ​

Параметры можно хранить в файле JSON или YAML с теми же ключами, что и у переменных окружения (otel.service.name и т.д.). Файл подключается программно: МенеджерПараметров из configor читает его и передаётся в ОтелАвтоконфигурация.Инициализировать.

Переменная OTEL_CONFIG_FILE задаёт файл другого формата — декларативной конфигурации с обязательным полем file_format. Он описан в ОтелФайловаяКонфигурация.

json
{
    "otel": {
        "service": {
            "name": "my-service"
        },
        "exporter": {
            "otlp": {
                "endpoint": "http://otel-collector:4318",
                "protocol": "http/protobuf",
                "headers": "Authorization=Bearer token123",
                "compression": "gzip",
                "timeout": "10000"
            }
        },
        "traces": {
            "sampler": "parentbased_traceidratio",
            "sampler.arg": "0.1"
        },
        "propagators": "tracecontext,baggage"
    }
}
yaml
otel:
  service:
    name: my-service
  exporter:
    otlp:
      endpoint: http://otel-collector:4318
      protocol: http/protobuf
      compression: gzip
  traces:
    sampler: parentbased_always_on
  propagators: tracecontext,baggage
bsl
#Использовать opentelemetry

Менеджер = Новый МенеджерПараметров();
Менеджер.ИспользоватьПровайдерJSON(); // для YAML — ИспользоватьПровайдерYAML()
Менеджер.УстановитьФайлПараметров("/etc/myapp/otel-config.json");
Менеджер.Прочитать();

// Переменные окружения в этом случае не читаются
Сдк = ОтелАвтоконфигурация.Инициализировать(Менеджер);

Полная таблица переменных окружения ​

Общие параметры SDK ​

ПеременнаяКлюч configorПо умолчаниюОписание
OTEL_SDK_DISABLEDotel.sdk.disabledfalseОтключить SDK. При true создаётся NoOp SDK
OTEL_SERVICE_NAMEotel.service.name—Имя сервиса (service.name в ресурсе)
OTEL_RESOURCE_ATTRIBUTESotel.resource.attributes—Дополнительные атрибуты ресурса, формат: key1=value1,key2=value2, спецсимволы в percent-encoding. Значение с ошибкой разбора (элемент не в формате ключ=значение, пустой ключ, некорректный percent-encoding) игнорируется целиком
OTEL_SDK_SHUTDOWN_TIMEOUTotel.sdk.shutdown.timeout30000Таймаут завершения SDK в миллисекундах, 0 — без ограничения. Действует, если Закрыть вызван без таймаута
OTEL_CONFIG_FILEotel.config.file—Путь к файлу декларативной конфигурации (YAML с полем file_format, см. ОтелФайловаяКонфигурация). Читается из менеджера параметров: переданного в Инициализировать или менеджера из переменных окружения. Если задан, SDK строится только по файлу, остальные параметры не применяются. Устаревший ключ — otel.experimental.config.file (OTEL_EXPERIMENTAL_CONFIG_FILE)

Экспортеры ​

ПеременнаяКлюч configorПо умолчаниюОписание
OTEL_TRACES_EXPORTERotel.traces.exporterotlpЭкспортер трассировки: otlp, none
OTEL_LOGS_EXPORTERotel.logs.exporterotlpЭкспортер логов: otlp, none
OTEL_METRICS_EXPORTERotel.metrics.exporterotlpЭкспортер метрик: otlp, none
OTEL_OSCRIPT_EVENT_TO_SPAN_EVENT_BRIDGE_ENABLEDotel.oscript.event.to.span.event.bridge.enabledtrueВключает процессор событий в события спана. Включён только при true (без учёта регистра); пустое значение — как не заданное, другое значение выключает процессор. Ключ языковой: стандартной переменной для процессора нет. Процессор включён и с экспортером логов none

С экспортером none (или недоступным транспортом) сэмплер, лимиты и фильтр exemplars из переменных окружения всё равно применяются: решение сэмплера задаёт флаг sampled, который передаётся дальше, а спаны, записи и метрики получают процессоры и читатели, добавленные в коде.

OTLP — общие параметры ​

Применяются ко всем сигналам, если не заданы per-signal переопределения.

ПеременнаяКлюч configorПо умолчаниюОписание
OTEL_EXPORTER_OTLP_ENDPOINTotel.exporter.otlp.endpointhttp://localhost:4318 (HTTP) / http://localhost:4317 (gRPC)Адрес OTLP-коллектора
OTEL_EXPORTER_OTLP_PROTOCOLotel.exporter.otlp.protocolhttp/protobufПротокол: http/json, http/protobuf, grpc
OTEL_EXPORTER_OTLP_HEADERSotel.exporter.otlp.headers—Заголовки HTTP/gRPC, формат: key1=value1,key2=value2
OTEL_EXPORTER_OTLP_COMPRESSIONotel.exporter.otlp.compressionnoneСжатие: gzip, none
OTEL_EXPORTER_OTLP_TIMEOUTotel.exporter.otlp.timeout10000Таймаут запроса в миллисекундах, 0 — без ограничения
OTEL_EXPORTER_OTLP_CERTIFICATEotel.exporter.otlp.certificate—Путь к CA-сертификату (PEM)
OTEL_EXPORTER_OTLP_CLIENT_KEYotel.exporter.otlp.client.key—Путь к клиентскому приватному ключу (PEM)
OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATEotel.exporter.otlp.client.certificate—Путь к клиентскому сертификату (PEM)
OTEL_EXPORTER_OTLP_INSECUREotel.exporter.otlp.insecurefalsetrue — gRPC-соединение с endpoint без схемы идёт без TLS (по умолчанию такое соединение защищено TLS); схема http/https важнее, на OTLP/HTTP не влияет

OTLP — трассировка (per-signal) ​

Переопределяют общие OTEL_EXPORTER_OTLP_* для сигнала трассировки.

ПеременнаяОписание
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTАдрес коллектора
OTEL_EXPORTER_OTLP_TRACES_PROTOCOLПротокол
OTEL_EXPORTER_OTLP_TRACES_HEADERSЗаголовки
OTEL_EXPORTER_OTLP_TRACES_COMPRESSIONСжатие
OTEL_EXPORTER_OTLP_TRACES_TIMEOUTТаймаут (мс)
OTEL_EXPORTER_OTLP_TRACES_CERTIFICATECA-сертификат (PEM)
OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEYКлиентский ключ (PEM)
OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATEКлиентский сертификат (PEM)

OTLP — логирование (per-signal) ​

ПеременнаяОписание
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTАдрес коллектора
OTEL_EXPORTER_OTLP_LOGS_PROTOCOLПротокол
OTEL_EXPORTER_OTLP_LOGS_HEADERSЗаголовки
OTEL_EXPORTER_OTLP_LOGS_COMPRESSIONСжатие
OTEL_EXPORTER_OTLP_LOGS_TIMEOUTТаймаут (мс)
OTEL_EXPORTER_OTLP_LOGS_CERTIFICATECA-сертификат (PEM)
OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEYКлиентский ключ (PEM)
OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATEКлиентский сертификат (PEM)

OTLP — метрики (per-signal) ​

ПеременнаяПо умолчаниюОписание
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT—Адрес коллектора
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL—Протокол
OTEL_EXPORTER_OTLP_METRICS_HEADERS—Заголовки
OTEL_EXPORTER_OTLP_METRICS_COMPRESSION—Сжатие
OTEL_EXPORTER_OTLP_METRICS_TIMEOUT—Таймаут (мс)
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCEcumulativeВременная агрегация: cumulative, delta, lowmemory
OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATIONexplicit_bucket_histogramАгрегация гистограммы: explicit_bucket_histogram, base2_exponential_bucket_histogram
OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE—CA-сертификат (PEM)
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY—Клиентский ключ (PEM)
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE—Клиентский сертификат (PEM)

Семплирование трассировки ​

ПеременнаяКлюч configorПо умолчаниюОписание
OTEL_TRACES_SAMPLERotel.traces.samplerparentbased_always_onСтратегия сэмплирования
OTEL_TRACES_SAMPLER_ARGotel.traces.sampler.arg1.0Аргумент сэмплера (доля для traceidratio)

Поддерживаемые значения OTEL_TRACES_SAMPLER:

ЗначениеОписание
always_onСэмплировать все спаны
always_offНе сэмплировать ничего
traceidratioСлучайная доля (задаётся через OTEL_TRACES_SAMPLER_ARG)
parentbased_always_onParentBased(root=AlwaysOn)
parentbased_always_offParentBased(root=AlwaysOff)
parentbased_traceidratioParentBased(root=TraceIdRatio)

Пакетный процессор спанов (BatchSpanProcessor) ​

ПеременнаяКлюч configorПо умолчаниюОписание
OTEL_BSP_MAX_QUEUE_SIZEotel.bsp.max.queue.size2048Максимальный размер очереди, целое число больше 0
OTEL_BSP_SCHEDULE_DELAYotel.bsp.schedule.delay5000Интервал запуска экспорта (мс)
OTEL_BSP_MAX_EXPORT_BATCH_SIZEotel.bsp.max.export.batch.size512Максимальный размер пакета, целое число больше 0, не больше OTEL_BSP_MAX_QUEUE_SIZE
OTEL_BSP_EXPORT_TIMEOUTotel.bsp.export.timeout30000Таймаут экспорта (мс)

Пакетный процессор логов настраивается аналогичными переменными OTEL_BLRP_* (ключи otel.blrp.*), значение по умолчанию OTEL_BLRP_SCHEDULE_DELAY — 1000 мс. Размер очереди или пакета меньше 1 или дробный записывается в лог предупреждением и заменяется значением по умолчанию. Размер пакета больше размера очереди записывается в лог предупреждением и заменяется размером очереди.

Периодический экспорт метрик ​

ПеременнаяКлюч configorПо умолчаниюОписание
OTEL_METRIC_EXPORT_INTERVALotel.metric.export.interval60000Интервал экспорта метрик (мс)
OTEL_METRIC_EXPORT_TIMEOUTotel.metric.export.timeout30000Таймаут одного экспорта метрик (мс)
OTEL_METRICS_EXEMPLAR_FILTERotel.metrics.exemplar.filtertrace_basedФильтр exemplars: always_on, always_off, trace_based

Пропагаторы контекста ​

ПеременнаяКлюч configorПо умолчаниюОписание
OTEL_PROPAGATORSotel.propagatorstracecontext,baggageПропагаторы через запятую

Поддерживаемые значения:

ЗначениеОписание
tracecontextW3C Trace Context
baggageW3C Baggage
b3B3 Single Header (требуется пакет opentelemetry-propagator-b3)
b3multiB3 Multi Header (требуется тот же пакет)
noneОтключить все пропагаторы; указанные вместе с none значения игнорируются с предупреждением

Ограничения атрибутов ​

ПеременнаяПо умолчаниюОписание
OTEL_ATTRIBUTE_COUNT_LIMIT128Максимальное число атрибутов (все сигналы)
OTEL_ATTRIBUTE_VALUE_LENGTH_LIMITбез ограниченияМаксимальная длина строкового атрибута
OTEL_SPAN_ATTRIBUTE_COUNT_LIMITнаследует OTEL_ATTRIBUTE_COUNT_LIMITПереопределение для спанов
OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMITнаследует OTEL_ATTRIBUTE_VALUE_LENGTH_LIMITПереопределение для спанов
OTEL_SPAN_EVENT_COUNT_LIMIT128Максимальное число событий в спане
OTEL_SPAN_LINK_COUNT_LIMIT128Максимальное число ссылок в спане
OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT128Максимальное число атрибутов события
OTEL_LINK_ATTRIBUTE_COUNT_LIMIT128Максимальное число атрибутов ссылки
OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMITнаследует OTEL_ATTRIBUTE_COUNT_LIMITПереопределение для записей лога
OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMITнаследует OTEL_ATTRIBUTE_VALUE_LENGTH_LIMITПереопределение для записей лога

0 — нулевой лимит, а не отсутствие лимита: атрибуты отбрасываются, строки усекаются до пустых. Лимит длины действует на строки и двоичные данные, в том числе внутри массивов и соответствий. Атрибуты ресурса и метрик лимитами не ограничиваются.

Смотрите также ​