属性和标签
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 |
未映射的范围属性将被忽略。