Recursos
A resource represents the entity producing telemetry as resource attributes. For example, a process producing telemetry that is running in a container on Kubernetes has a process name, a pod name, a namespace, and possibly a deployment name. All four of these attributes can be included in the resource.
In your observability backend, you can use resource information to better investigate interesting behavior. For example, if your trace or metrics data indicate latency in your system, you can narrow it down to a specific container, pod, or Kubernetes deployment.
Recursos devem ser adicionados a um TracerProvider
, MeterProvider
e
LoggerProvider
durante a sua inicialização, e são criados de maneira
semelhante aos atributos:
res := resource.NewWithAttributes(
semconv.SchemaURL,
semconv.ServiceNameKey.String("meuServico"),
semconv.ServiceVersionKey.String("1.0.0"),
semconv.ServiceInstanceIDKey.String("abcdef12345"),
)
provider := sdktrace.NewTracerProvider(
...
sdktrace.WithResource(res),
)
Observe o uso do pacote semconv
para fornecer
nomes convencionais para os atributos do
recurso. Isso ajuda a garantir que os consumidores da telemetria produzida
utilizando as convenções semânticas possam identificar facilmente os atributos
relevantes e entender seu significado.
Os recursos também podem ser detectados automaticamente por meio das
implementações de resource.Detector
. Esses Detector
s podem descobrir
informações sobre o processo em execução, o sistema operacional em que ele está
sendo executado, o provedor de nuvem que hospeda a instância do sistema
operacional ou qualquer número de outros atributos de recurso.
res, err := resource.New(
context.Background(),
resource.WithFromEnv(), // Descobre e fornece atributos das variáveis de ambiente OTEL_RESOURCE_ATTRIBUTES e OTEL_SERVICE_NAME.
resource.WithTelemetrySDK(), // Descobre e fornece informações sobre o SDK do OpenTelemetry que está sendo utilizado.
resource.WithProcess(), // Descobre e fornece informações do processo.
resource.WithOS(), // Descobre e fornece informações do Sistema Operacional.
resource.WithContainer(), // Descobre e fornece informações do contêiner.
resource.WithHost(), // Descobre e fornece informações da hospedagem.
resource.WithAttributes(attribute.String("foo", "bar")), // Adicionar atributos de recurso personalizados.
// resource.WithDetectors(thirdparty.Detector{}), // Inclua a sua própria implementação externa do Detector.
)
if errors.Is(err, resource.ErrPartialResource) || errors.Is(err, resource.ErrSchemaURLConflict) {
log.Println(err) // Registre problemas não-fatais.
} else if err != nil {
log.Fatalln(err) // O erro pode ser fatal.
}
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!