OpenTelemetry to non-OTLP 格式的转换
状态: 稳定
使用 OpenTelemetry API 记录的所有 OpenTelemetry 概念和数据都可以直接且精确地使用 OTLP 格式的相应消息和字段来表示。然而,对于其他格式,情况并非总是如此。有时,一种格式没有原生方法来表示特定的 OpenTelemetry 概念或概念的字段。
本文档定义了 OpenTelemetry 与 OTLP 格式以外的其他格式之间的转换,适用于在这些其他格式中没有直接语义等价物的 OpenTelemetry 字段和概念。
注意:当一种格式对某个特定字段或概念具有直接的语义等价物时,则应忽略本文档中的建议。
另请参阅 Prometheus 和 Zipkin 的其他特定转换规则。Prometheus 和 Zipkin 的特定规则优先于本文档中定义的通用规则。
映射
InstrumentationScope
OpenTelemetry InstrumentationScope 的字段必须作为键值对报告,并使用以下映射与 Span、Metric Data Point 或 LogRecord 相关联。
| 属性 | 类型 | 描述 | 示例 | 需求级别 |
|---|---|---|---|---|
otel.scope.name | 字符串 | Instrumentation Scope 的名称 - (OTLP 中的 InstrumentationScope.Name)。 | io.opentelemetry.contrib.mongodb | 推荐 |
otel.scope.version | 字符串 | Instrumentation Scope 的版本 - (OTLP 中的 InstrumentationScope.Version)。 | 1.0.0 | 推荐 |
为向后兼容性,还必须报告以下已弃用的别名,并使用完全相同的值。
| 属性 | 类型 | 描述 | 示例 | 需求级别 |
|---|---|---|---|---|
otel.library.name | 字符串 | 已弃用,请使用 otel.scope.name 属性。 | io.opentelemetry.contrib.mongodb | 推荐 |
otel.library.version | 字符串 | 已弃用,请使用 otel.scope.version 属性。 | 1.0.0 | 推荐 |
Span Status
Span Status 必须作为键值对报告,并与 Span 相关联,除非 Status 是 UNSET。后一种情况则不应报告。
下表定义了 OpenTelemetry Status 到 Span 键值对的映射。
| 属性 | 类型 | 描述 | 示例 | 需求级别 |
|---|---|---|---|---|
otel.status_code | 字符串 | 状态码的名称,可以是“OK”或“ERROR”。如果状态码为 UNSET,则不得设置。 | OK | 推荐 |
otel.status_description | 字符串 | 如果状态有值,则为其描述,否则不设置。 | 资源未找到 | 推荐 |
otel.status_code 必须是以下之一:
| 值 | 描述 |
|---|---|
OK | 应用程序开发人员或操作员已验证操作成功完成。 |
ERROR | 操作包含错误。 |
丢弃的属性计数
OpenTelemetry 丢弃的属性计数必须作为键值对报告,并与相应的数据实体(例如 Span、Span Link、Span Event、Metric data point、LogRecord 等)相关联。键名必须是 otel.dropped_attributes_count。
此键值对仅在包含非零值时才应记录。
丢弃的事件计数
OpenTelemetry Span 的丢弃事件计数必须作为键值对报告,并与 Span 相关联。键名必须是 otel.dropped_events_count。
此键值对仅在包含非零值时才应记录。
丢弃的链路计数
OpenTelemetry Span 的丢弃链路计数必须作为键值对报告,并与 Span 相关联。键名必须是 otel.dropped_links_count。
此键值对仅在包含非零值时才应记录。
Instrumentation Scope 属性
导出到不包含等同于 Scope 概念的格式的导出器,应在其对应格式的最合适位置记录这些属性,通常是 Span、Metric 或 LogRecord 的等价物。