Resources

Estás viendo la versión en inglés de está página porque aún no ha sido traducida. ¿Te interesa ayudar? Mira en Contribuir.

Un recurso representa la entidad que produce telemetría como atributos de recurso. Por ejemplo, un proceso que produce telemetría y que se está ejecutando en un contenedor en Kubernetes tiene un nombre de un proceso, un nombre de pod, un namespace y, posiblemente, un nombre de despliegue. Los cuatro atributos pueden incluirse en el recurso.

En tu backend de observabilidad, puedes usar la información del recurso para investigar mejor un comportamiento interesante. Por ejemplo, si tus datos de trazas o métricas indican latencia en tu sistema, puedes reducirla a un contenedor, pod o despliegue de Kubernetes específico.

Resource Detection

The PHP SDK detects resources from a variety of sources, and by default will use all available resource detectors:

  • environment (OTEL_RESOURCE_ATTRIBUTES, OTEL_SERVICE_NAME)
  • host information
  • host operating system
  • current process
  • runtime

Disabling resource detection

By default, all SDK resource detectors are used, but you can use the environment variable OTEL_PHP_DETECTORS to enable only certain detectors, or completely disable them:

  • env
  • host
  • os
  • process
  • process_runtime
  • sdk
  • sdk_provided
  • all - enable all resource detectors
  • none - disable resource detection

For example, to enable only the env, host and sdk detectors:

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

Custom resource detectors

Resource detectors for generic platforms or vendor-specific environments can be installed as composer packages.

For example, to install and enable the container resource detector:

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

Note that installed detectors are automatically included in the default all resource detector list.

Adding resources with environment variables

If there is not an SDK detector for the resource you need, you can add arbitrary resources via the OTEL_RESOURCE_ATTRIBUTES environment variable, which is interpreted by the env detector. This variable takes a comma-separated list of key=value pairs, for example:

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

Adding resources in code

Custom resources can also be configured in your code. Here, the default resources (detected as described above) are merged with custom resources. The resources are then passed to the tracer provider, where they will be associated with all generated spans.

$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
);

Última modificación June 2, 2025: Fixes #7026 (#7027) (86cff3e5)