名词解释
在OpenTelemetry
的可观测体系中,名词较多,以下是一些常见的名词解释:
基础概念
- Observability(可观测性): 通过外部输出推断系统内部状态的能力,常见信号包含 Traces、Metrics、Logs。
- Telemetry(遥测数据): 应用或基础设施产生的观测数据的统称。
- Signals(三大信号):
- Traces: 分布式调用链数据。
- Metrics: 时间序列度量数据(数值随时间变化)。
- Logs: 离散事件记录(文本或结构化)。
Trace / Span 相关
- Trace: 一次端到端请求的全链路,由若干
Span
构成。用全局唯一的trace_id
标识,一次请求中的所有路径都会共用一个唯一的TraceID,这个TraceID一般由初始节点产生,然后传递到所有节点 - Span: Trace 中的基本单位,表示一次操作(如一次 RPC/DB 调用)。包含名称、开始/结束时间、
attributes
、events
、links
、status
等信息,并由span_id
标识,TraceID只能够串起所有节点,但节点之间的调用顺序需要由SpanID来产生 - SpanContext: 跨进程传递的上下文载体,包含
trace_id
、span_id
、trace_flags
(采样位)和可选trace_state
。 - SpanKind: Span 的角色类型:
INTERNAL
、SERVER
、CLIENT
、PRODUCER
、CONSUMER
。 - Attributes: 键值对标签,为 Span/Metric/Log 添加维度信息,如
http.method=GET
、db.system=mysql
。 - Events: Span 内带时间戳的事件记录,常用于记录关键步骤或错误信息。
- Links: 将当前 Span 与其他 Trace/Span 关联,用于扇入/扇出、异步队列等非父子关系场景。
- Status: Span 的结果状态,常见取值:
OK
、ERROR
、UNSET
。 - Baggage: 可跨进程传播的键值对(上下文),用于路由/策略等,但不会自动写入 Span 属性。
采样(Sampling)
- Head-based sampling: 在请求入口(创建根 Span 时)决定是否采样,如概率采样、速率限制。
- Tail-based sampling: 在 Collector 汇聚完整 Trace 后基于结果再决定采样,适合按错误率/延迟阈值等策略。
- Sampler: 具体采样器实现,如
ParentBased
、TraceIdRatioBased
、AlwaysOn/AlwaysOff
等。
Metrics 相关
- Meter: 指标创建入口(对应 Logger/Meter/Tracer 三兄弟之一)。
- Instruments(仪表):
- Counter: 只增的累计计数(同步)。
- UpDownCounter: 可增可减的计数(同步)。
- Histogram: 分布型度量,记录观测值用于计算分位数/桶分布(同步)。
- ObservableGauge: 可观察的当前值(异步)。
- ObservableCounter / ObservableUpDownCounter: 异步采集的计数型仪表。
- Aggregation(聚合): 对数据进行求和、最后值、直方图、指数直方图等聚合方式。
- Temporality(时间性): 指标导出时的累计/增量语义:
Cumulative
、Delta
。 - Attributes/Labels: 指标的维度标签(例如
service.name
,http.status_code
)。 - View: 在 SDK 侧重写指标名称、描述、聚合方式或筛选标签。
- Exemplar: 与 Trace 关联的代表性样本点,帮助将指标峰值与具体请求关联。
Logs 相关
- LogRecord: 结构化日志记录,包含时间戳、
severity
(级别)、body
(消息)与attributes
。 - Logger: 产生日志的实体,通常通过 SDK Provider 获取。
资源与语义约定
- Resource: 描述产生遥测数据的实体(服务/主机/容器等)的元数据,如:
service.name
、service.namespace
、service.instance.id
、service.version
telemetry.sdk.name
、telemetry.sdk.version
- Semantic Conventions(语义约定): 标准化属性命名与取值规范,如
http.method
、http.status_code
、db.system
、messaging.system
、rpc.system
等,便于跨语言/组件统一分析。
OpenTelemetry 组件与术语
- OTel API / SDK: API 定义观测数据的编程接口;SDK 提供默认实现(采样、导出、处理等)。
- Instrumentation(自动注入/手动埋点): 框架/库的自动采集或业务代码的手动埋点。
- Collector(采集器): 独立进程,用于接收、处理与转发遥测数据。
- Receiver: 数据接收端,支持多种协议/格式(如
OTLP
、HTTP、gRPC、各类日志/度量/跟踪格式)。 - Processor: 处理链,如
batch
、memory_limiter
、attributes
、transform
、tail_sampling
等。 - Exporter: 数据导出端,通过
OTLP
、HTTP、gRPC 等协议将数据发送到后端。 - Connector: 在不同信号/管道之间桥接或派生转换(例如从 Trace 生成指标)。
- Extension: Collector 的扩展能力,如认证、健康检查、外部管理等。
- Pipeline: Collector 内部的数据流:
receivers -> processors -> exporters
。
- Receiver: 数据接收端,支持多种协议/格式(如
- Provider: 各信号的提供者,用于创建相应的记录器:
- TracerProvider / Tracer(跟踪)
- MeterProvider / Meter(指标)
- LoggerProvider / Logger(日志)
- Instrumentation Scope(埋点作用域): 标识产生遥测数据的库/框架名称与版本(随数据一起上报)。
- OTLP(OpenTelemetry Protocol): 标准传输协议,基于 Protobuf;常见端口:
4317
(gRPC)、4318
(HTTP)。 - Propagator(上下文传播器): 跨进程传递 Trace 上下文的实现,常见有 W3C
traceparent
/tracestate
与baggage
。
上下文与传播
- Context(上下文): 跨函数/线程/进程传递的携带信息容器,包含
SpanContext
、Baggage
等。 - Context Propagation(上下文传播): 将上下文在边界间注入/提取以保持调用链连贯。
- W3C Trace Context: 传播头部规范,核心字段
traceparent
、tracestate
。
部署模式(Collector)
- Agent 模式: 以
DaemonSet
或Sidecar
贴近工作负载本地接收数据,降低网络开销。 - Gateway 模式: 以集中式网关汇聚全量数据,方便统一处理、尾采样与多路导出。
- 实践中常见为 Agent + Gateway 组合:本地轻处理,网关重处理与转发。
其 他相关术语
- Service: 产生遥测数据的逻辑服务单元(由
service.name
标识)。 - Endpoint: 服务的网络端点(HTTP/GRPC 等)。
- SLA/SLO/SLI: 服务可用性目标/指标体系,常与
OTel
度量结合用于告警与报表。
常见术语对照
中文 | 英文 | 说明 |
---|---|---|
采集器 | Collector | 接收/处理/导出遥测数据的独立组件 |
跟踪 | Trace | 一次请求的全链路 |
跨度 | Span | Trace 中的基本操作单元 |
属性 | Attributes | 键值对标签,描述上下文维度 |
事件 | Events | Span 内部的时间戳事件 |
链接 | Links | 关联其他 Span/Trace |
指标 | Metrics | 时间序列度量数据 |
日志 | Logs | 离散事件记录 |
资源 | Resource | 产生遥测的实体元数据 |
协议 | OTLP | OTel 标准传输协议(gRPC/HTTP) |
传播器 | Propagator | 跨进程上下文传播实现 |