跳到主要内容

名词解释

OpenTelemetry的可观测体系中,名词较多,以下是一些常见的名词解释:

基础概念

  • Observability(可观测性): 通过外部输出推断系统内部状态的能力,常见信号包含 Traces、Metrics、Logs。
  • Telemetry(遥测数据): 应用或基础设施产生的观测数据的统称。
  • Signals(三大信号):
    • Traces: 分布式调用链数据。
    • Metrics: 时间序列度量数据(数值随时间变化)。
    • Logs: 离散事件记录(文本或结构化)。

Trace / Span 相关

  • Trace: 一次端到端请求的全链路,由若干 Span 构成。用全局唯一的 trace_id 标识,一次请求中的所有路径都会共用一个唯一的TraceID,这个TraceID一般由初始节点产生,然后传递到所有节点
  • Span: Trace 中的基本单位,表示一次操作(如一次 RPC/DB 调用)。包含名称、开始/结束时间、attributeseventslinksstatus 等信息,并由 span_id 标识,TraceID只能够串起所有节点,但节点之间的调用顺序需要由SpanID来产生
  • SpanContext: 跨进程传递的上下文载体,包含 trace_idspan_idtrace_flags(采样位)和可选 trace_state
  • SpanKind: Span 的角色类型:INTERNALSERVERCLIENTPRODUCERCONSUMER
  • Attributes: 键值对标签,为 Span/Metric/Log 添加维度信息,如 http.method=GETdb.system=mysql
  • Events: Span 内带时间戳的事件记录,常用于记录关键步骤或错误信息。
  • Links: 将当前 Span 与其他 Trace/Span 关联,用于扇入/扇出、异步队列等非父子关系场景。
  • Status: Span 的结果状态,常见取值:OKERRORUNSET
  • Baggage: 可跨进程传播的键值对(上下文),用于路由/策略等,但不会自动写入 Span 属性。

采样(Sampling)

  • Head-based sampling: 在请求入口(创建根 Span 时)决定是否采样,如概率采样、速率限制。
  • Tail-based sampling: 在 Collector 汇聚完整 Trace 后基于结果再决定采样,适合按错误率/延迟阈值等策略。
  • Sampler: 具体采样器实现,如 ParentBasedTraceIdRatioBasedAlwaysOn/AlwaysOff 等。

Metrics 相关

  • Meter: 指标创建入口(对应 Logger/Meter/Tracer 三兄弟之一)。
  • Instruments(仪表):
    • Counter: 只增的累计计数(同步)。
    • UpDownCounter: 可增可减的计数(同步)。
    • Histogram: 分布型度量,记录观测值用于计算分位数/桶分布(同步)。
    • ObservableGauge: 可观察的当前值(异步)。
    • ObservableCounter / ObservableUpDownCounter: 异步采集的计数型仪表。
  • Aggregation(聚合): 对数据进行求和、最后值、直方图、指数直方图等聚合方式。
  • Temporality(时间性): 指标导出时的累计/增量语义:CumulativeDelta
  • Attributes/Labels: 指标的维度标签(例如 service.name, http.status_code)。
  • View: 在 SDK 侧重写指标名称、描述、聚合方式或筛选标签。
  • Exemplar: 与 Trace 关联的代表性样本点,帮助将指标峰值与具体请求关联。

Logs 相关

  • LogRecord: 结构化日志记录,包含时间戳、severity(级别)、body(消息)与 attributes
  • Logger: 产生日志的实体,通常通过 SDK Provider 获取。

资源与语义约定

  • Resource: 描述产生遥测数据的实体(服务/主机/容器等)的元数据,如:
    • service.nameservice.namespaceservice.instance.idservice.version
    • telemetry.sdk.nametelemetry.sdk.version
  • Semantic Conventions(语义约定): 标准化属性命名与取值规范,如 http.methodhttp.status_codedb.systemmessaging.systemrpc.system 等,便于跨语言/组件统一分析。

OpenTelemetry 组件与术语

  • OTel API / SDK: API 定义观测数据的编程接口;SDK 提供默认实现(采样、导出、处理等)。
  • Instrumentation(自动注入/手动埋点): 框架/库的自动采集或业务代码的手动埋点。
  • Collector(采集器): 独立进程,用于接收、处理与转发遥测数据。
    • Receiver: 数据接收端,支持多种协议/格式(如 OTLP、HTTP、gRPC、各类日志/度量/跟踪格式)。
    • Processor: 处理链,如 batchmemory_limiterattributestransformtail_sampling 等。
    • Exporter: 数据导出端,通过 OTLP、HTTP、gRPC 等协议将数据发送到后端。
    • Connector: 在不同信号/管道之间桥接或派生转换(例如从 Trace 生成指标)。
    • Extension: Collector 的扩展能力,如认证、健康检查、外部管理等。
    • Pipeline: Collector 内部的数据流:receivers -> processors -> exporters
  • Provider: 各信号的提供者,用于创建相应的记录器:
    • TracerProvider / Tracer(跟踪)
    • MeterProvider / Meter(指标)
    • LoggerProvider / Logger(日志)
  • Instrumentation Scope(埋点作用域): 标识产生遥测数据的库/框架名称与版本(随数据一起上报)。
  • OTLP(OpenTelemetry Protocol): 标准传输协议,基于 Protobuf;常见端口:4317(gRPC)、4318(HTTP)。
  • Propagator(上下文传播器): 跨进程传递 Trace 上下文的实现,常见有 W3C traceparent/tracestatebaggage

上下文与传播

  • Context(上下文): 跨函数/线程/进程传递的携带信息容器,包含 SpanContextBaggage 等。
  • Context Propagation(上下文传播): 将上下文在边界间注入/提取以保持调用链连贯。
  • W3C Trace Context: 传播头部规范,核心字段 traceparenttracestate

部署模式(Collector)

  • Agent 模式: 以 DaemonSetSidecar 贴近工作负载本地接收数据,降低网络开销。
  • Gateway 模式: 以集中式网关汇聚全量数据,方便统一处理、尾采样与多路导出。
  • 实践中常见为 Agent + Gateway 组合:本地轻处理,网关重处理与转发。

其他相关术语

  • Service: 产生遥测数据的逻辑服务单元(由 service.name 标识)。
  • Endpoint: 服务的网络端点(HTTP/GRPC 等)。
  • SLA/SLO/SLI: 服务可用性目标/指标体系,常与 OTel 度量结合用于告警与报表。

常见术语对照

中文英文说明
采集器Collector接收/处理/导出遥测数据的独立组件
跟踪Trace一次请求的全链路
跨度SpanTrace 中的基本操作单元
属性Attributes键值对标签,描述上下文维度
事件EventsSpan 内部的时间戳事件
链接Links关联其他 Span/Trace
指标Metrics时间序列度量数据
日志Logs离散事件记录
资源Resource产生遥测的实体元数据
协议OTLPOTel 标准传输协议(gRPC/HTTP)
传播器Propagator跨进程上下文传播实现