资源
简介
一个 资源 代表生成遥测数据的实体及其资源属性。例如,一个正在 Kubernetes 容器中运行并生成遥测数据的进程具有进程名、Pod 名、命名空间以及可能的部署名。所有这四个属性都可以包含在资源中。
在您的可观测性后端,您可以使用资源信息更好地调查有趣的现象。例如,如果您的跟踪或指标数据表明系统中存在延迟,您可以将其缩小到特定的容器、Pod 或 Kubernetes 部署。
如果您将 Jaeger 用作您的可观测性后端,资源属性会分组在 Process 选项卡下。

在创建 TracerProvider 或 MetricProvider 时,资源会与之关联,此后无法更改。一旦关联了资源,由该提供程序产生的 Tracer 或 Meter 所产生的的所有 span 和 metric 都将与其关联的资源一起产生。
具有 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.name 来提供您的 部署环境 的名称。
env OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=production yourApp