正在加载

属性和标签

Elastic Stack Serverless

在 OpenTelemetry 中,属性是一个键值对。属性类似于标签,它们将元数据添加到事务、Span 和其他实体。

资源属性是一种属性,包含有关生成遥测数据的实体的信息。资源属性映射到 Elastic Common Schema (ECS) 字段,例如 service.*cloud.*process.* 等等。这些字段描述了服务及其环境。

例如,Elastic APM 在摄取时将 OpenTelemetry deployment.environment 字段映射到 ECS service.environment 字段。

您可以通过环境变量或编辑 OpenTelemetry Collector 的资源处理器配置来设置资源属性。

使用 OTEL_RESOURCE_ATTRIBUTES 环境变量在进程调用时传递资源属性。例如

export OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production

使用资源处理器在使用 OTel Collector 时设置或应用对资源属性的更改。

...
processors:
  resource:
    attributes:
    - key: deployment.environment
      action: insert
      value: production
...

当将遥测数据发送到 Elastic APM 时,只有一部分 OpenTelemetry 属性直接映射到 Elastic APM 文档字段,例如 ECS 字段。如果一个属性没有预定义的映射,系统会将其存储在 labels.* 下,并将点替换为下划线。

未映射的资源属性在 Elastic APM 中被视为全局标签,这意味着它们适用于来自资源的所有遥测数据。相反,未映射的记录级属性,例如特定于日志记录、Span 或数据点的属性,将存储为仅与该特定记录关联的普通标签。

例如,如果 OpenTelemetry 资源包含

{
  "service.name": "user-service",
  "deployment.environment": "production",
  "otel.library.name": "my-lib",
  "custom.attribute.with.dots": "value"
}

Elastic APM 存储以下内容

{
  "service.name": "user-service",
  "service.environment": "production",
  "labels": {
    "otel_library_name": "my-lib",
    "custom_attribute_with_dots": "value"
  }
}

范围属性的转换方式如下

OpenTelemetry 属性 Elastic APM 字段
scope.name service.framework.name
scope.version service.framework.version

未映射的范围属性将被忽略。

© . All rights reserved.