• Русский
  • Переменные SDK

    Поведение OpenTelemetry SDK управляется через переменные среды, которые настраивают различные аспекты сбора, обработки и экспорта telemetry. Пользовательский ресурс Instrumentation позволяет задавать эти переменные, чтобы настраивать, как ваши инструментированные приложения создают и отправляют данные telemetry.

    Общие переменные среды SDK

    Следующие переменные среды обычно используются для настройки поведения OpenTelemetry SDK:

    Идентификация сервиса

    • OTEL_SERVICE_NAME — задает логическое имя сервиса
    • OTEL_RESOURCE_ATTRIBUTES — указывает дополнительные атрибуты ресурса в виде пар «ключ-значение»

    Настройка экспортера

    • OTEL_TRACES_EXPORTER — настраивает exporter для trace (например, otlp, jaeger, zipkin)
    • OTEL_METRICS_EXPORTER — настраивает exporter для metrics (например, otlp, prometheus)
    • OTEL_LOGS_EXPORTER — настраивает exporter для logs (например, otlp)

    Настройка OTLP endpoint

    • OTEL_EXPORTER_OTLP_ENDPOINT — задает OTLP endpoint для всех signals
    • OTEL_EXPORTER_OTLP_TRACES_ENDPOINT — задает OTLP endpoint специально для traces
    • OTEL_EXPORTER_OTLP_METRICS_ENDPOINT — задает OTLP endpoint специально для metrics
    • OTEL_EXPORTER_OTLP_LOGS_ENDPOINT — задает OTLP endpoint специально для logs

    Настройка протокола

    • OTEL_EXPORTER_OTLP_PROTOCOL — указывает OTLP protocol (grpc или http/protobuf)
    • OTEL_EXPORTER_OTLP_TRACES_PROTOCOL — protocol для traces
    • OTEL_EXPORTER_OTLP_METRICS_PROTOCOL — protocol для metrics

    Настройка переменных SDK в Instrumentation CR

    Вы можете задавать переменные среды SDK в пользовательском ресурсе Instrumentation:

    apiVersion: opentelemetry.io/v1alpha1
    kind: Instrumentation
    metadata:
      name: my-instrumentation
    spec:
      env:
        - name: OTEL_RESOURCE_ATTRIBUTES
          value: deployment.environment.name=production
        - name: OTEL_TRACES_EXPORTER
          value: otlp
        - name: OTEL_METRICS_EXPORTER
          value: otlp
        - name: OTEL_EXPORTER_OTLP_ENDPOINT
          value: http://otel-collector:4318
        - name: OTEL_EXPORTER_OTLP_PROTOCOL
          value: http/protobuf

    Эти переменные автоматически внедряются в контейнеры инструментированных приложений.

    Настройка семплирования

    Управляйте поведением семплирования trace с помощью следующих переменных:

    • OTEL_TRACES_SAMPLER — стратегия семплирования (например, always_on, always_off, traceidratio, parentbased_always_on)
    • OTEL_TRACES_SAMPLER_ARG — аргумент для sampler (например, коэффициент семплирования для traceidratio)

    Пример настройки:

    spec:
      env:
        - name: OTEL_TRACES_SAMPLER
          value: parentbased_traceidratio
        - name: OTEL_TRACES_SAMPLER_ARG
          value: "0.1"

    Эта конфигурация семплирует 10% trace, при этом учитывая решения о семплировании родительского span.

    Настройка propagation

    Настройте форматы распространения context:

    • OTEL_PROPAGATORS — список propagator, разделенный запятыми (например, tracecontext,baggage,b3)

    Пример:

    spec:
      env:
        - name: OTEL_PROPAGATORS
          value: tracecontext,baggage

    Настройка пакетной обработки

    Управляйте тем, как telemetry data пакетируется перед экспортом:

    • OTEL_BSP_SCHEDULE_DELAY — интервал задержки между пакетными экспортами (миллисекунды)
    • OTEL_BSP_EXPORT_TIMEOUT — максимальное время ожидания экспорта (миллисекунды)
    • OTEL_BSP_MAX_QUEUE_SIZE — максимальный размер очереди для пакетирования
    • OTEL_BSP_MAX_EXPORT_BATCH_SIZE — максимальный размер пакета для экспорта

    Настройка логирования

    Настройте поведение логирования SDK:

    • OTEL_LOG_LEVEL — уровень логирования SDK (например, debug, info, warn, error)
    NOTE

    Переменные среды SDK соответствуют спецификации OpenTelemetry. Полный список доступных переменных и их описания см. в OpenTelemetry Environment Variable Specification.

    Приоритет переменных

    Если одна и та же переменная определена в нескольких местах, применяется следующий порядок приоритета (от высшего к низшему):

    1. Переменные среды, заданные непосредственно в спецификации pod
    2. Переменные среды из Instrumentation CR
    3. Значения по умолчанию из библиотеки instrumentation
    TIP

    Используйте Instrumentation CR для задания общей конфигурации для нескольких приложений и при необходимости переопределяйте отдельные значения в спецификациях отдельных pod.