Skip to content

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

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

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

  1. Читает параметры из переменных окружения (OTEL_*) и/или файла конфигурации через configor.
  2. Создаёт транспорт (HTTP или gRPC) согласно OTEL_EXPORTER_OTLP_PROTOCOL.
  3. Строит провайдеры трассировки, логирования и метрик с 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=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)

Путь к файлу задаётся переменной OTEL_CONFIG_FILE или программно. Поддерживаются форматы JSON и YAML.

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
bash
export OTEL_CONFIG_FILE=/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
OTEL_SDK_SHUTDOWN_TIMEOUTotel.sdk.shutdown.timeout30000Таймаут завершения SDK в миллисекундах
OTEL_CONFIG_FILEotel.config.fileПуть к файлу конфигурации configor (YAML/JSON)

Экспортеры

ПеременнаяКлюч configorПо умолчаниюОписание
OTEL_TRACES_EXPORTERotel.traces.exporterotlpЭкспортер трассировки: otlp, none
OTEL_LOGS_EXPORTERotel.logs.exporterotlpЭкспортер логов: otlp, none
OTEL_METRICS_EXPORTERotel.metrics.exporterotlpЭкспортер метрик: otlp, none

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Таймаут запроса в миллисекундах
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.insecurefalseОтключить проверку TLS-сертификата

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_CERTIFICATECA-сертификат (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Максимальный размер очереди
OTEL_BSP_SCHEDULE_DELAYotel.bsp.schedule.delay5000Интервал запуска экспорта (мс)
OTEL_BSP_MAX_EXPORT_BATCH_SIZEotel.bsp.max.export.batch.size512Максимальный размер пакета
OTEL_BSP_EXPORT_TIMEOUTotel.bsp.export.timeout30000Таймаут экспорта (мс)

Пакетный процессор логов использует те же параметры, но со значением по умолчанию OTEL_BSP_SCHEDULE_DELAY = 1000 мс.

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

ПеременнаяКлюч configorПо умолчаниюОписание
OTEL_METRIC_EXPORT_INTERVALotel.metric.export.interval60000Интервал экспорта метрик (мс)
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Отключить все пропагаторы

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

ПеременнаяПо умолчаниюОписание
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Переопределение для записей лога

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