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

Опції конфігурації для OpenTelemetry PHP Distro.

OpenTelemetry PHP Distro підтримує стандартну конфігурацію OpenTelemetry PHP SDK та специфічні для distro опції.

Метод конфігурації

Налаштуйте через змінні середовища, доступні для PHP-процесів:

  • OTEL_* для стандартних опцій OpenTelemetry
  • OTEL_PHP_* для специфічних для distro опцій

Приклад:

export OTEL_EXPORTER_OTLP_ENDPOINT="https://your-endpoint:443/"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <token>"
export OTEL_PHP_LOG_LEVEL_STDERR="INFO"

Опції OpenTelemetry

Distro підтримує стандартні опції OpenTelemetry PHP SDK.

ОпціяСтандартноДопустимі значенняОпис
OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4318URLURL точки доступу OTLP
OTEL_EXPORTER_OTLP_HEADERS(порожньо)key=value,key2=value2Заголовки OTLP запиту
OTEL_EXPORTER_OTLP_INSECUREfalsetrue or falseВимкнути TLS перевірку (тільки для тестування)
OTEL_EXPORTER_OTLP_CERTIFICATE(порожньо)Шлях у файловій системі (PEM)Шлях до CA сертифіката для OTLP TLS
OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE(порожньо)Шлях у файловій системі (PEM)Клієнтський сертифікат для OTLP mTLS
OTEL_EXPORTER_OTLP_CLIENT_KEY(порожньо)Шлях у файловій системі (PEM)Клієнтський ключ для OTLP mTLS
OTEL_EXPORTER_OTLP_CLIENT_KEYPASS(порожньо)StringПароль для зашифрованого клієнтського ключу OTLP
OTEL_SERVICE_NAMEunknown_serviceStringЗначення атрибуту ресурсу service.name
OTEL_RESOURCE_ATTRIBUTES(порожньо)key=value,key2=value2Атрибути ресурсу
OTEL_TRACES_SAMPLERparentbased_always_onІмʼя семплераСемплер трейсів
OTEL_TRACES_SAMPLER_ARG(порожньо)String/numberАргумент семплера
OTEL_LOG_LEVELinfoerror, warn, info, debugРівень внутрішнього логу SDK

Специфічні для Distro опції (OTEL_PHP_*)

Усі опції OTEL_PHP_* можна встановити як змінні середовища або в php.ini.

Для php.ini використовуйте префікс opentelemetry_distro. та імена опцій у нижньому регістрі.

Приклад:

export OTEL_PHP_ENABLED=true
opentelemetry_distro.enabled=true

Загальна конфігурація

ОпціяСтандартноДопустимі значенняОпис
OTEL_PHP_ENABLEDtruetrue or falseУвімкнути автоматичний bootstrap
OTEL_PHP_OPENTELEMETRY_EXTENSION_EMULATION_ENABLEDtruetrue or falseУвімкнути реєстрацію емульованих opentelemetry розширень, дозволяючи автоінструментації працювати без opentelemetry.so
OTEL_PHP_NATIVE_OTLP_SERIALIZER_ENABLEDtruetrue or falseУвімкнути нативний серіалізатор OTLP protobuf

Асинхронне надсилання даних

ОпціяСтандартноДопустимі значенняОпис
OTEL_PHP_ASYNC_TRANSPORTtruetrue or falseУвімкнути фонову передачу телеметрії
OTEL_PHP_ASYNC_TRANSPORT_SHUTDOWN_TIMEOUT30sТривалість (ms, s, m)Тайм-аут очищення при завершенні
OTEL_PHP_MAX_SEND_QUEUE_SIZE2MBInteger з опціональним B, MB, GBМакс. розмір асинхронного буфера на worker

Логування

ОпціяСтандартноДопустимі значенняОпис
OTEL_PHP_LOG_FILE(порожньо)Шлях у файловій системіШлях до файлу виводу логів
OTEL_PHP_LOG_LEVEL_FILEOFFOFF, CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACEРівень логу файлового sink
OTEL_PHP_LOG_LEVEL_STDERROFFOFF, CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACEРівень логу stderr sink
OTEL_PHP_LOG_LEVEL_SYSLOGOFFOFF, CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACEРівень логу syslog sink
OTEL_PHP_LOG_FEATURES(порожньо)FEATURE=LEVEL,...Рівні логу для окремих функцій

Відрізок транзакції

ОпціяСтандартноДопустимі значенняОпис
OTEL_PHP_TRANSACTION_SPAN_ENABLEDtruetrue or falseАвто кореневий відрізок для web SAPI
OTEL_PHP_TRANSACTION_SPAN_ENABLED_CLItruetrue or falseАвто кореневий відрізок для CLI
OTEL_PHP_TRANSACTION_URL_GROUPS(порожньо)Comma-separated wildcardsПатерни групування URL

Інструментування на основі атрибутів

ОпціяСтандартноДопустимі значенняОпис
OTEL_PHP_ATTR_HOOKS_ENABLEDfalsetrue or falseВмикає створення відрізків на основі атрибутів #[WithSpan] / #[SpanAttribute]. Див. Інструментування на основі атрибутів.

Міст залежностей з областями видимості

ОпціяСтандартноДопустимі значенняОпис
OTEL_PHP_SCOPED_DEPS_BRIDGE_ENABLEDfalsetrue or falseДозволяє власному використанню OpenTelemetry застосунком спільно використовувати runtime distro (провайдер трейсерів, контекст) так, щоб його відрізки приєднувалися до трейсів distro. Див. нотатку нижче.

Виведені відрізки

ОпціяСтандартноДопустимі значенняОпис
OTEL_PHP_INFERRED_SPANS_ENABLEDfalsetrue or falseУвімкнути виведені відрізки
OTEL_PHP_INFERRED_SPANS_REDUCTION_ENABLEDtruetrue or falseЗменшує послідовні дубльовані фрейми
OTEL_PHP_INFERRED_SPANS_STACKTRACE_ENABLEDtruetrue or falseДодає stacktrace до виведених відрізків
OTEL_PHP_INFERRED_SPANS_SAMPLING_INTERVAL50msТривалість (ms, s, m)Інтервал вибірки stacktrace
OTEL_PHP_INFERRED_SPANS_MIN_DURATION0Тривалість (ms, s, m)Мін. тривалість виведеного відрізка

Централізована конфігурація (OpAMP)

ОпціяСтандартноДопустимі значенняОпис
OTEL_PHP_OPAMP_ENDPOINT(порожньо)HTTP/HTTPS URL, що закінчується на /v1/opampТочка доступу OpAMP
OTEL_PHP_OPAMP_HEADERS(порожньо)key=value,key2=value2OpAMP заголовки запиту
OTEL_PHP_OPAMP_HEARTBEAT_INTERVAL30sТривалість (ms, s, m)Інтервал між повідомленнями heartbeat, відправленими на OpAMP сервер.
OTEL_PHP_OPAMP_POLLING_INTERVAL30sТривалість (ms, s, m)Інтервал, за яким агент опитує OpAMP сервер на наявність оновленої конфігурації. Незалежно від heartbeat інтервалу.
OTEL_PHP_OPAMP_SEND_TIMEOUT10sТривалість (ms, s, m)OpAMP тайм-аут надсилання
OTEL_PHP_OPAMP_SEND_MAX_RETRIES3Integer >= 0Кількість повторних спроб
OTEL_PHP_OPAMP_SEND_RETRY_DELAY10sТривалість (ms, s, m)Затримка повторної спроби
OTEL_PHP_OPAMP_INSECUREfalsetrue or falseВимкнути TLS перевірку (тільки для тестування)
OTEL_PHP_OPAMP_CERTIFICATE(порожньо)Шлях у файловій системі (PEM)Шлях до CA сертифіката для OpAMP TLS
OTEL_PHP_OPAMP_CLIENT_CERTIFICATE(порожньо)Шлях у файловій системі (PEM)Шлях до клієнтського сертифіката для OpAMP mTLS
OTEL_PHP_OPAMP_CLIENT_KEY(порожньо)Шлях у файловій системі (PEM)Шлях до клієнтського ключа для OpAMP mTLS
OTEL_PHP_OPAMP_CLIENT_KEYPASS(порожньо)StringПароль для зашифрованого клієнтського ключа

Можливість підтримки

ОпціяСтандартноДопустимі значенняОпис
OTEL_PHP_SCOPED_DEPS_ENABLEDtruetrue or falseКерує тим, чи використовує distro scoped (namespace-prefixed) або оригінальні залежності. Див. нотатку нижче.

Нотатки

  • Фонова передача працює з режимом OTLP HTTP/protobuf.
  • OTEL_PHP_AUTOLOAD_ENABLED примусово увімкнено distro runtime.
  • Пакунок distro включає множинні залежності (OpenTelemetry SDK, різні автоінструментаційні пакунки та їх транзитивні залежності). Щоб уникнути конфліктів простору імен з власними залежностями застосунку, distro зазвичай використовує scoped (namespace-prefixed) залежності. Щоб повернутися до unscoped залежностей, встановіть OTEL_PHP_SCOPED_DEPS_ENABLED=false.

Залежності з обмеженим обсягом взаємодії

Стандартно OpenTelemetry runtime distro є scoped: його класи живуть під унікальним префіксом простору імен, окремого від стандартних класів OpenTelemetry\*, які застосунок встановив би через Composer. Як результат, власне використання OpenTelemetry застосунком виконується для окремого runtime і його відрізки а ні експортуються, а ні підключені до трейсів distro.

Встановлення OTEL_PHP_SCOPED_DEPS_BRIDGE_ENABLED=true створює міст між двома: до того, як автозавантажувач Composer застосунку запуститься, distro реєструє псевдоніми класів, що зіставляють unscoped OpenTelemetry\* API зі своєю scoped реалізацією. Власне використання OpenTelemetry додатком тоді прозоро використовує tracer provider та контекст distro, тому його відрізки експортуються та коректно батьківські в межах трейсів distro.

Ця опція не має ефекту, коли scoping вимкнено (OTEL_PHP_SCOPED_DEPS_ENABLED=false): без scoping distro вже використовує unscoped OpenTelemetry\* класи, тому спільне використання відбувається без якогось мосту.

Файлова конфігурація (декларативна)

Як альтернативу змінним середовища, ви можете налаштувати SDK, використовуючи YAML файл конфігурації, встановивши змінну середовища OTEL_CONFIG_FILE:

export OTEL_CONFIG_FILE=/path/to/otel-config.yaml

Коли OTEL_CONFIG_FILE встановлено:

  • SDK читає всю конфігурацію з YAML файлу замість окремих змінних середовища OTEL_*.
  • Підставлення змінних середовища (${MY_VAR:-default}) підтримується всередині YAML файлу.
  • Централізована конфігурація (OpAMP) автоматично вимкнена — конфігурація на основі файлів та віддалена конфігурація є взаємовиключними.
  • Специфічні для distro опції (OTEL_PHP_*) продовжують працювати, оскільки вони є нативними опціями розширення, незалежними від SDK.

Distro ресурс-детектор

Distro надає distro ресурс-детектор, що додає telemetry.distro.name та telemetry.distro.version атрибути ресурсу. Щоб активувати його у файловій конфігурації, додайте його до секції resource.detection/development.detectors:

file_format: '1.0-rc.2'

resource:
  attributes:
    - name: service.name
      value: my-service
  detection/development:
    detectors:
      - distro: {}

propagator:
  composite:
    - tracecontext:
    - baggage:

tracer_provider:
  processors:
    - batch:
        exporter:
          otlp_http:
            endpoint: http://localhost:4318/v1/traces

meter_provider:
  readers:
    - periodic:
        exporter:
          otlp_http:
            endpoint: http://localhost:4318/v1/metrics

logger_provider:
  processors:
    - batch:
        exporter:
          otlp_http:
            endpoint: http://localhost:4318/v1/logs

Для повної YAML схеми див. OpenTelemetry Configuration Schema.

Обмеження

  • Центральна конфігурація (OpAMP) недоступна, якщо активна конфігурація на основі файлів.
  • Ресурс-детектори, зареєстровані через Registry::registerResourceDetector() (наприклад, хмарні провайдери детекторів з opentelemetry-php-contrib) не активуються автоматично. Вони мають надавати ComponentProvider і бути явно перелічені у секції YAML resource.detection/development.detectors.

Востаннє змінено July 12, 2026: [uk] Ukrainian documentation for OpenTelemetry (83a19542)