Ресурси

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

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

Виявлення ресурсів

PHP SDK виявляє ресурси з різних джерел і стандартно використовує всі доступні детектори ресурсів:

  • середовище (OTEL_RESOURCE_ATTRIBUTES, OTEL_SERVICE_NAME)
  • інформація про хост
  • операційна система хосту
  • поточний процес
  • середовище виконання

Вимкнення виявлення ресурсів

Стандартно використовуються всі детектори ресурсів SDK, але ви можете використовувати змінну середовища OTEL_PHP_DETECTORS, щоб увімкнути лише певні детектори або повністю вимкнути їх:

  • env
  • host
  • os
  • process
  • process_runtime
  • sdk
  • sdk_provided
  • all - увімкнути всі детектори ресурсів
  • none - вимкнути виявлення ресурсів

Наприклад, щоб увімкнути лише детектори env, host та sdk:

env OTEL_PHP_DETECTORS=env,host,sdk \
php example.php

Власні детектори ресурсів

Детектори ресурсів для загальних платформ або специфічних для постачальників середовищ можуть бути встановлені як пакунки composer.

Наприклад, щоб встановити та увімкнути детектор ресурсів container:

composer require open-telemetry/detector-container
env OTEL_PHP_RESOURCE_DETECTORS=container \
php example.php

Зверніть увагу, що встановлені детектори автоматично включаються до стандартного списку детекторів ресурсів all.

Додавання ресурсів за допомогою змінних середовища

Якщо для потрібного вам ресурсу немає детектора SDK, ви можете додати довільні ресурси через змінну середовища OTEL_RESOURCE_ATTRIBUTES, яка інтерпретується детектором env. Ця змінна приймає список пар ключ=значення, розділених комами, наприклад:

env OTEL_RESOURCE_ATTRIBUTES="service.name=my_service,service.namespace=demo,service.version=1.0,deployment.environment=development" \
php example.php

Додавання ресурсів у коді

Власні ресурси також можуть бути налаштовані у вашому коді. Тут стандартні ресурси (виявлені, як описано вище) обʼєднуються з власними ресурсами. Ресурси потім передаються провайдеру трасувальника, де вони будуть асоціюватися з усіма створеними відрізками.

$resource = ResourceInfoFactory::defaultResource()->merge(ResourceInfo::create(Attributes::create([
    ResourceAttributes::SERVICE_NAMESPACE => 'foo',
    ResourceAttributes::SERVICE_NAME => 'bar',
    ResourceAttributes::SERVICE_INSTANCE_ID => 1,
    ResourceAttributes::SERVICE_VERSION => '0.1',
    ResourceAttributes::DEPLOYMENT_ENVIRONMENT_NAME => 'development',
])));

$tracerProvider =  new TracerProvider(
    new SimpleSpanProcessor(
        (new ConsoleSpanExporterFactory())->create()
    ),
    null,
    $resource
);

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