OpenTelemetry to non-OTLP 格式的转换

状态: 稳定

使用 OpenTelemetry API 记录的所有 OpenTelemetry 概念和数据都可以直接且精确地使用 OTLP 格式的相应消息和字段来表示。然而,对于其他格式,情况并非总是如此。有时,一种格式没有原生方法来表示特定的 OpenTelemetry 概念或概念的字段。

本文档定义了 OpenTelemetry 与 OTLP 格式以外的其他格式之间的转换,适用于在这些其他格式中没有直接语义等价物的 OpenTelemetry 字段和概念。

注意:当一种格式对某个特定字段或概念具有直接的语义等价物时,则应忽略本文档中的建议。

另请参阅 PrometheusZipkin 的其他特定转换规则。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 相关联,除非 StatusUNSET。后一种情况则不应报告。

下表定义了 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 的等价物。