SDK

SDK OpenTelemetry надає робочу реалізацію API, яку можна налаштувати різними способами.

Ручне налаштування

Ручне налаштування SDK дає вам найбільший контроль над конфігурацією SDK:

<?php
$exporter = new InMemoryExporter();
$meterProvider = new NoopMeterProvider();
$tracerProvider =  new TracerProvider(
    new BatchSpanProcessor(
        $exporter,
        Clock::getDefault(),
        2048, //максимальний розмір черги
        5000, //запланована затримка в мілісекундах
        5000, //тайм-аут експорту
        1024, //максимальний розмір пакету
        true, //автоматичне очищення
        $meterProvider
    )
);

SDK Builder

SDK Builder надає зручний інтерфейс для налаштування частин SDK. Однак він не підтримує всі функції, які доступні при ручному налаштуванні.

<?php

$spanExporter = new InMemoryExporter(); //демо експортер для демонстраційних цілей

$meterProvider = MeterProvider::builder()
    ->addReader(
        new ExportingReader(new MetricExporter((new StreamTransportFactory())->create(STDOUT, 'application/x-ndjson'), /*Temporality::CUMULATIVE*/))
    )
    ->build();

$tracerProvider = TracerProvider::builder()
    ->addSpanProcessor(
        (new BatchSpanProcessorBuilder($spanExporter))
            ->setMeterProvider($meterProvider)
            ->build()
    )
    ->build();

$loggerProvider = LoggerProvider::builder()
    ->addLogRecordProcessor(
        new SimpleLogsProcessor(
            (new ConsoleExporterFactory())->create()
        )
    )
    ->setResource(ResourceInfo::create(Attributes::create(['foo' => 'bar'])))
    ->build();

Sdk::builder()
    ->setTracerProvider($tracerProvider)
    ->setLoggerProvider($loggerProvider)
    ->setMeterProvider($meterProvider)
    ->setPropagator(TraceContextPropagator::getInstance())
    ->setAutoShutdown(true)
    ->buildAndRegisterGlobal();

Автозавантаження

SDK можна автоматично налаштувати та глобально зареєструвати як частину автозавантаження композитора. Єдина вимога для цього — встановити OTEL_PHP_AUTOLOAD_ENABLED=true. Конфігурація може бути надана різними способами:

Конфігурація середовища

Змінні середовища (або відповідні налаштування php.ini) можуть надати будь-яку необхідну/нестандартну конфігурацію, як зазначено в конфігурації SDK.

Наприклад:

OTEL_PHP_AUTOLOAD_ENABLED=true \
OTEL_EXPORTER_OTLP_PROTOCOL=grpc \
OTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4317 \
php example.php
<?php
require 'vendor/autoload.php'; //автозавантаження sdk відбувається як частина ініціалізації composer

$tracer = OpenTelemetry\API\Globals::tracerProvider()->getTracer('name', 'version', 'schema.url', [/*атрибути*/]);
$meter = OpenTelemetry\API\Globals::meterProvider()->getMeter('name', 'version', 'schema.url', [/*атрибути*/]);

Декларативна конфігурація

PHP підтримує експериментальну Декларативну конфігурацію OpenTelemetry, де SDK можна налаштувати за допомогою YAML-файлу.

Щоб увімкнути це, встановіть OTEL_EXPERIMENTAL_CONFIG_FILE=/path/to/config.yaml, де config.yaml — це файл, який відповідає схемі декларативної конфігурації, наприклад:

config.yaml:

file_format: '0.4'
tracer_provider:
  processors:
    - batch:
        exporter:
          otlp_http:
            endpoint: http://localhost:4318/v1/traces
resource:
  attributes:
    - name: service.name
      value: ${OTEL_SERVICE_NAME}
    - name: service.namespace
      value: my_service_namespace
OTEL_PHP_AUTOLOAD_ENABLED=true \
OTEL_EXPERIMENTAL_CONFIG_FILE=/path/to/config.yaml
php example.php

Наявність OTEL_EXPERIMENTAL_CONFIG_FILE призведе до того, що автозавантажувач спробує налаштуватись за допомогою наданого конфігураційного файлу, а інші змінні оточення буде проігноровано.

Виключені URL

Ви можете вимкнути автозавантаження SDK, якщо URL запиту відповідає регулярному виразу. Відповідність виключеному URL запобігає генерації або експорту будь-якої телеметрії. Ви можете використовувати цю функцію в середовищі PHP з розподіленою памʼяттю, як-от Apache або NGINX, для запитів, таких як перевірка стану.

Наприклад, наступна конфігурація вимикає телеметрію для запитів, таких як https://site/client/123/info і https://site/xyz/healthcheck:

OTEL_PHP_EXCLUDED_URLS="client/.*/info,healthcheck"

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

PHP SDK підтримує більшість доступних опцій конфігурації. Для деталей відповідності дивіться матрицю відповідності.

Існує також ряд специфічних для PHP конфігурацій:

НазваСтандартні значенняЗначенняПрикладОпис
OTEL_PHP_TRACES_PROCESSORbatchbatch, simplesimpleВибір процесора трасування
OTEL_PHP_DETECTORSallenv, host, os, process, process_runtime, sdk, sdk_provided, containerenv,os,processВибір детектора ресурсів
OTEL_PHP_AUTOLOAD_ENABLEDfalsetrue, falsetrueУвімкнути/вимкнути автозавантаження SDK
OTEL_PHP_LOG_DESTINATIONdefaulterror_log, stderr, stdout, psr3, nonestderrКуди будуть надсилатися внутрішні помилки та попередження
OTEL_PHP_INTERNAL_METRICS_ENABLEDfalsetrue, falsetrueЧи повинен SDK генерувати метрики про свій внутрішній стан (наприклад, процесори пакетів)
OTEL_PHP_DISABLED_INSTRUMENTATIONS[]Імена інструментів або allpsr15,psr18Вимкнути один або кілька встановлених автоінструментів
OTEL_PHP_EXCLUDED_URLS``Розділені комами шаблони регулярних виразівclient/.*/info,healthcheckНе завантажувати SDK, якщо URL запиту відповідає одному з наданих регулярних виразів
OTEL_PHP_DEBUG_SCOPES_DISABLEDfalsetrue, falsetrueУвімкнути або вимкнути налагодження відʼєднання областей дії.
OTEL_PHP_EXPERIMENTAL_AUTO_ROOT_SPANfalsetrue, falsetrueЗапустити кореневий відрізок під час автозавантаження композитора.

Конфігурації можуть бути надані як змінні середовища або через php.ini (або файл, включений у php.ini)

OTEL_PHP_AUTOLOAD_ENABLED="true"
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4317

Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (2a3c5648)