Recursos

Introdução

Um recurso representa a entidade que está gerando telemetria como atributos do recurso. Por exemplo, um processo que está gerando telemetria e que está sendo executado em um container no Kubernetes tem o nome de um processo, um nome de pod, um namespace e possivelmente um nome de deployment. Todos esses quatro atributos podem ser incluídos em um recurso.

No seu backend de observabilidade, você pode usar as informações de um recurso para refinar a investigação de comportamentos relevantes. Por exemplo, se seus dados de rastros ou métricas indicarem latência no seu sistema, você pode restringir a investigação para um determinado container, pod ou deployment do Kubernetes.

Se você usar Jaeger como seu backend de observabilidade, os atributos do recurso são agrupados na guia Process:

Uma captura de tela do Jaeger mostrando um exemplo de saída de atributos do recurso associados a um rastro.

Um recurso é adicionado ao TraceProvider ou MetricProvider quando eles são criados durante a inicialização. Esta associação não pode ser alterada posteriormente. Após um recurso ser adicionado, todos os trechos e métricas produzidos a partir de um Tracer ou Meter do provider terão o recurso associado a eles.

Atributos semânticos com valores padrões fornecidos pelo SDK

Existem atributos fornecidos pelo SDK do OpenTelemetry. Um deles é o service.name, que representa o nome lógico do serviço. Por padrão, os SDKs atribuirão o valor unknown_service para este valor, então é recomendado defini-lo explicitamente, seja no código ou definindo um valor para a variável de ambiente OTEL_SERVICE_NAME.

Além disso, o SDK também fornecerá os seguintes atributos do recurso para se autoidentificar: telemetry.sdk.name, telemetry.sdk.language e telemetry.sdk.version.

Detectores de recursos

A maioria dos SDKs específicos de linguagem fornece um conjunto de detectores de recursos que podem ser usados para detectar automaticamente informações de recursos do ambiente. Os detectores de recursos mais comuns incluem:

Recursos personalizados

Você também pode fornecer seus próprios atributos do recurso. Você pode fornecê-los em código ou definindo um valor para a variável de ambiente OTEL_RESOURCE_ATTRIBUTES. Se aplicável, utilize convenções semânticas para seus atributos do recurso. Por exemplo, você pode fornecer o nome do seu ambiente de execução usando deployment.environment:

env OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production yourApp