术语表

本文档定义了在本规范中用到的一些术语。

其他一些基本术语记录在 概述文档 中。

用户角色

应用程序所有者

应用程序或服务的维护者,负责配置和管理 OpenTelemetry SDK 的生命周期。

库作者

被许多应用程序依赖、并是 OpenTelemetry 仪器目标的基础库的维护者。

仪器作者

针对 OpenTelemetry API 编写的 OpenTelemetry 仪器(instrumentation)的维护者。这可能包括在应用程序代码中、在基础库中或在仪器库中编写的仪器。

插件作者

OpenTelemetry SDK 插件的维护者,针对 OpenTelemetry SDK 插件接口编写。

通用

信号

OpenTelemetry 围绕信号或遥测类别进行构建。指标、日志、跟踪、剖析和 baggage 是信号的例子。每个信号代表一个连贯的、独立的 funkcionality 集合。每个信号遵循不同的生命周期,定义其当前的稳定性级别。

软件包

在本规范中,术语 **package** (软件包) 描述了一组代码,它代表一个独立的依赖项,该依赖项可以独立于其他软件包被导入到程序中。在某些语言中,这个概念可能映射到不同的术语,例如“module”(模块)。请注意,在某些语言中,“package”一词指的是不同的概念。

ABI 兼容性

ABI (应用程序二进制接口) 是一个定义软件组件之间在机器代码级别交互的接口,例如在应用程序可执行文件和共享对象库的编译二进制文件之间。ABI 兼容性意味着库的新编译版本可以与目标可执行文件正确链接,而无需重新编译该可执行文件。

ABI 兼容性对于某些语言很重要,尤其是那些提供机器代码形式的语言。对于其他语言,ABI 兼容性可能不是一个相关的要求。

带内和带外数据

在电信领域,**带内信令**(in-band signaling)是指在用于语音或视频等数据传输的同一频带或信道内发送控制信息。这与**带外信令**(out-of-band signaling)形成对比,后者通过不同的信道,甚至通过单独的网络发送(Wikipedia)。

在 OpenTelemetry 中,我们称**带内数据**为在分布式系统的组件之间作为业务消息一部分传递的数据,例如,当跟踪或 baggage 以 HTTP 头部的形式包含在 HTTP 请求中时。此类数据通常不包含遥测数据,而是用于关联和连接由各个组件生成的遥测数据。遥测数据本身被称为**带外数据**:它通过专用消息从应用程序传输,通常由后台例程异步传输,而不是从业务逻辑的关键路径传输。导出到遥测后端的数据、日志和跟踪是带外数据的例子。

手动仪器

针对 OpenTelemetry API 进行编码,例如 Tracing APIMetrics API 或其他 API,以从最终用户代码或共享框架(例如 MongoDB、Redis 等)收集遥测数据。

自动仪器

指不需要最终用户修改应用程序源代码的遥测收集方法。方法因编程语言而异,例如代码操作(在编译期间或运行时)、猴子补丁或运行 eBPF 程序。

同义词:Auto-instrumentation

原生仪器

表示一个库或应用程序直接使用 OpenTelemetry API 提供内置仪器,因此仪器库(instrumented library)和仪器库(instrumentation library)是同一个库。

如果需要一个单独的仪器库(instrumentation library)或插件来仪器化(instrument)一个库或应用程序,则该被仪器化的库(instrumented library)或应用程序不应被称为原生仪器(natively instrumented),即使仪器库(instrumentation library)或插件由同一作者提供,或者它是一个适合给定软件生态系统的插件。

遥测 SDK

表示实现了OpenTelemetry API的库。

参见 库指南库资源语义约定

构造函数

构造函数是应用程序所有者用来初始化和配置 OpenTelemetry SDK 和 contrib 包的公共代码。构造函数的例子包括配置对象、环境变量和构建器。

SDK 插件

插件是扩展 OpenTelemetry SDK 的库。插件接口的例子是 SpanProcessorExporterSampler 接口。

导出库

导出器是实现了 Exporter 接口的 SDK 插件,并将遥测数据发送给消费者。

仪器库

表示收集遥测信号(跟踪、指标、日志)的库。

对 OpenTelemetry API 的调用可以由仪器库本身完成,也可以由另一个 仪器库 完成。

示例:org.mongodb.client

仪器库

表示为给定的 仪器库 提供仪器的库。仪器库(Instrumented Library)和仪器库(Instrumentation Library)可能是同一个库,如果它具有内置的 OpenTelemetry 仪器。

有关更详细的定义和命名指南,请参阅 概述

示例:io.opentelemetry.contrib.mongodb

同义词:Instrumenting Library

Tracer 名称 / Meter 名称 / Logger 名称

这指的是创建新的 TracerMeter 时指定的 name 和(可选的)version 参数(参见 获取 Tracer/获取 Meter)/获取 Logger。名称/版本对标识 仪器范围,例如在其中发出遥测的范围内的 仪器库 或其他应用程序单元。

执行单元

用于多任务处理中不同概念的最小顺序代码执行单元的总称。例如线程、协程或纤程。

日志

日志记录

事件的记录。通常记录包括表示事件发生时间的 timestamp 以及描述事件发生什么、在哪里发生等其他数据。

同义词:Log Entry

日志

有时用于指代 Log Records 的集合。可能是模棱两可的,因为人们有时也使用 Log 来指代单个 Log Record,因此此术语应谨慎使用,在可能产生歧义的情况下应使用额外的限定词(例如 Log Record)。

嵌入式日志

嵌入在 Span 对象中、位于 Events 列表中的 Log Records

独立日志

未嵌入在 Span 中并在其他地方记录的 Log Records

日志属性

包含在 Log Record 中的键/值对。

结构化日志

以一种格式记录的日志,该格式具有明确定义的结构,允许区分 Log Record 的不同元素(例如 Timestamp、Attributes 等)。例如,Syslog 协议RFC 5424)定义了一种 structured-data 格式。

平面文件日志

记录在文本文件中的日志,通常每行一个日志记录(尽管也可以是多行记录)。行业内对于写入更结构化格式(例如 JSON 文件)的文本文件的日志是否被视为平面文件日志没有达成一致。在这些区别很重要的情况下,建议特别指出。

日志附加器/桥接器

日志附加器或桥接器是一个组件,它使用 Log API 将来自现有日志库的日志桥接到 OpenTelemetry 中。“Log bridge”和“log appender”这两个术语可以互换使用,这反映了这些组件将数据桥接到 OpenTelemetry 中,但在日志领域通常被称为附加器。

剖析

Profiles (剖析) 描述了 OpenTelemetry 信号。

Profile

在 Profiles 信号的上下文中,profile 包含一个或多个 OpenTelemetry 仪器范围的采样(带有相关元数据的堆栈跟踪)。

Profiling

Profiling 描述了收集将通过 Profiles 信号报告的数据的过程。