Recursos

Introducción

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.

Si utilizas Jaeger como tu backend de observabilidad, los atributos de recurso se agrupan en la pestaña Process:

Una captura de pantalla de Jaeger que muestra un ejemplo de los atributos de recursos asociados a una traza

Un recurso se añade al TracerProvider o MetricProvider cuando son creados durante la inicialización. Esta asociación no se puede cambiar posteriormente. Una vez que se añade un recurso, todos los spans y métricas producidos por un Tracer o Meter del proveedor tendrán el recurso asociado a ellos.

Atributos semánticos con valor predeterminado proporcionado por el SDK

Existen atributos proporcionados por el SDK de OpenTelemetry. Uno de ellos es service.name, que representa el nombre lógico del servicio. De forma predeterminada, los SDK asignarán el valor unknown_service para este atributo, por lo que se recomienda establecerlo explícitamente, ya sea en el código o configurando la variable de entorno OTEL_SERVICE_NAME.

Además, el SDK también proporciona los siguientes atributos de recurso para identificarse: telemetry.sdk.name, telemetry.sdk.language y telemetry.sdk.version.

Detectores de recursos

La mayoría de los SDK específicos de cada lenguaje proporcionan un conjunto de detectores de recursos que pueden usarse para detectar automáticamente información de recursos desde el entorno. Algunos detectores de recursos comunes incluyen:

Recursos personalizados

También puedes proporcionar tus propios atributos de recurso. Puedes hacerlo en el código o configurando la variable de entorno OTEL_RESOURCE_ATTRIBUTES. Si corresponde, utiliza las convenciones semánticas para tus atributos de recurso. Por ejemplo, puedes proporcionar el nombre de tu entorno de despliegue utilizando deployment.environment.name:

env OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=production yourApp