资源
介绍
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.
如果您使用 Jaeger 作为您的可观测性后端,资源属性将会分组在 Process 选项卡下:
当 TraceProvider
或 MetricProvider
在初始化期间创建时,将会添加一个资源。此关联无法稍后更改。添加资源后,Tracer
或 Meter
提供程序生成的所有 span 和指标都会与此资源相关联。
带有 SDK 提供的默认值的语义属性
OpenTelemetry SDK 提供了一些属性。其中之一是 service.name
,它表示服务的逻辑名称。默认情况下,SDK 会将值 unknown_service
分配给此属性,因此建议显式设置它,可以在代码中设置,也可以通过设置环境变量 OTEL_SERVICE_NAME
设置。
此外,SDK 还会提供以下资源属性来标识自身:telemetry.sdk.name
、telemetry.sdk.language
和 telemetry.sdk.version
。
资源检测器
大多数特定于语言的 SDK 提供了一组资源检测器,可以用于自动从环境中检测资源信息。常见的资源检测器包括:
自定义资源
您还可以提供自己的资源属性。您可以在代码中提供它们,也可以通过填充环境变量 OTEL_RESOURCE_ATTRIBUTES
来提供。如果适用,请使用您资源属性的语义约定。例如,您可以使用 deployment.environment
来提供部署环境的名称:
env OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production yourApp