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_PROCESSOR | batch | batch, simple | simple | Вибір процесора трасування |
OTEL_PHP_DETECTORS | all | env, host, os, process, process_runtime, sdk, sdk_provided, container | env,os,process | Вибір детектора ресурсів |
OTEL_PHP_AUTOLOAD_ENABLED | false | true, false | true | Увімкнути/вимкнути автозавантаження SDK |
OTEL_PHP_LOG_DESTINATION | default | error_log, stderr, stdout, psr3, none | stderr | Куди будуть надсилатися внутрішні помилки та попередження |
OTEL_PHP_INTERNAL_METRICS_ENABLED | false | true, false | true | Чи повинен SDK генерувати метрики про свій внутрішній стан (наприклад, процесори пакетів) |
OTEL_PHP_DISABLED_INSTRUMENTATIONS | [] | Імена інструментів або all | psr15,psr18 | Вимкнути один або кілька встановлених автоінструментів |
OTEL_PHP_EXCLUDED_URLS | `` | Розділені комами шаблони регулярних виразів | client/.*/info,healthcheck | Не завантажувати SDK, якщо URL запиту відповідає одному з наданих регулярних виразів |
OTEL_PHP_DEBUG_SCOPES_DISABLED | false | true, false | true | Увімкнути або вимкнути налагодження відʼєднання областей дії. |
OTEL_PHP_EXPERIMENTAL_AUTO_ROOT_SPAN | false | true, false | true | Запустити кореневий відрізок під час автозавантаження композитора. |
Конфігурації можуть бути надані як змінні середовища або через php.ini (або файл, включений у php.ini)
php.iniБулеві значення в php.ini повинні бути захищені подвійними лапками, наприклад "true" або "false", щоб PHP не перетворював їх на числа
OTEL_PHP_AUTOLOAD_ENABLED="true"
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4317
Відгук
Чи це було корисним?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!