3. 管线(Pipeline)的定义与组成:Receivers、Processors、Exporters、Connectors

在 OpenTelemetry 架构中,Pipeline(管线)是数据采集、处理与导出的核心执行单元。一个 Pipeline 定义了“从哪收 → 怎么改 → 发到哪”的完整链路。平台工程团队通过自助目录将 Pipeline 抽象为可组合的配置单元,让应用团队无需理解底层 Collector 细节即可完成观测数据接入。

3.1 Pipeline 的基本定义

Pipeline 是 OpenTelemetry Collector 中串联 Receivers、Processors、Exporters 的有向数据流。数据从 Receiver 进入,经过零个或多个 Processor 处理,最终由 Exporter 发送到后端。Connectors 则用于在多个 Pipeline 之间桥接数据,实现跨管线通信。

核心原则:每个 Pipeline 只能处理一种信号类型(traces / metrics / logs),但可以包含多个同类型组件实例。

3.2 四大组件的职责与对比

组件 职责 输入 输出 典型场景
Receiver 数据接入入口 外部系统(应用 SDK、其他 Collector、Prometheus 等) 内部 pdata 格式 OTLP gRPC/HTTP、Jaeger、K8s 集群指标
Processor 数据处理与转换 pdata 格式 处理后的 pdata 格式 采样、过滤、属性修改、批处理
Exporter 数据导出到后端 pdata 格式 外部系统(存储、分析平台) OTLP、Prometheus Remote Write、S3、Datadog
Connector 管线间数据桥接 上游 Pipeline 输出 下游 Pipeline 输入 Trace → Metrics 衍生、Logs → Metrics 聚合

3.3 Pipeline 的典型拓扑结构

下图展示了一个包含两个 Pipeline 的典型部署:Trace Pipeline 负责链路数据采集与采样,Metrics Pipeline 负责指标聚合与导出,两者通过 Connector 实现数据衍生。

OpenTelemetry Pipeline 拓扑结构 Pipeline 拓扑结构:双管线 + Connector 桥接 应用 SDK K8s 集群 Pipeline 1: Traces otlp Receiver batch Processor otlp Exporter Jaeger span-metrics Connector Pipeline 2: Metrics prometheus Receiver filter Processor prometheus Exporter Prometheus 衍生指标 图例 Receiver Processor Exporter Connector 后端存储

3.4 组件详解

3.4.1 Receiver:数据接入入口

Receiver 负责从外部系统接收观测数据,并将其转换为 Collector 内部统一的 pdata(Pipeline Data)格式。平台工程团队在自助目录中预置常用 Receiver 模板,应用团队只需选择数据源类型即可。

最佳实践:在自助目录中为每种 Receiver 提供“快速配置”和“高级配置”两档。快速配置仅暴露 endpoint 和 insecure 参数,高级配置开放 TLS、认证、压缩等选项。

常用 Receiver 清单:

  • OTLP Receiver:接收 OTLP 协议数据(gRPC/HTTP),是应用 SDK 的首选接入方式
  • Jaeger Receiver:兼容 Jaeger 协议,用于迁移场景
  • Prometheus Receiver:从 Prometheus 端点抓取指标
  • Kubernetes Cluster Receiver:采集 K8s 集群状态指标
  • Filelog Receiver:从日志文件采集,支持多行合并

3.4.2 Processor:数据处理与转换

Processor 是 Pipeline 中最灵活的组件,负责对数据进行过滤、增强、聚合、采样等操作。Processor 的执行顺序决定了最终数据质量。

注意:Processor 的顺序敏感。例如,batch 应放在 filter 之后,否则过滤后的空批次仍会占用资源。自助目录应提供“推荐顺序”校验。

Processor 分类与典型用途:

类别 Processor 名称 核心功能 性能影响
采样 tail_sampling / probabilistic_sampler 按策略保留部分 Trace,降低存储成本 中
批处理 batch 合并数据为批次,提升导出效率 低(推荐始终启用)
过滤 filter / attributes 按条件丢弃或保留数据 低
属性修改 attributes / resource / span 添加、删除、修改属性或资源标签 低
衍生 span_metrics / servicegraph 从 Trace 生成指标或服务拓扑 高(建议单独 Pipeline)

3.4.3 Exporter:数据导出到后端

Exporter 将处理后的数据发送到外部存储或分析平台。平台工程团队应在自助目录中封装后端连接信息,应用团队只需选择“目标环境”即可。

典型 Exporter 配置示例(OTLP):

exporters:
  otlp:
    endpoint: "https://otel-backend.example.com:4318"
    headers:
      "Authorization": "Bearer ${env:OTEL_AUTH_}"
    compression: gzip
    tls:
      insecure: false
      ca_file: "/etc/ssl/certs/ca-certificates.crt"

3.4.4 Connector:管线间数据桥接

Connector 是 OpenTelemetry Collector v0.55+ 引入的组件,允许一个 Pipeline 的输出直接作为另一个 Pipeline 的输入,无需经过 Exporter/Receiver 网络传输。这在以下场景中极为有用:

  • Trace → Metrics:使用 span_metrics Connector 从 Trace 数据中生成 RED 指标
  • Logs → Metrics:从日志中提取错误率等指标
  • Metrics → Metrics:对指标进行二次聚合或降采样
架构优势:Connector 避免了数据在 Pipeline 之间序列化/反序列化的开销,延迟降低 40-60%,适合高吞吐场景。

3.5 Pipeline 配置的完整示例

以下是一个生产级 Pipeline 配置,包含 Trace 和 Metrics 两条管线,并通过 Connector 桥接:

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch:
    timeout: 1s
    send_batch_size: 1024
  memory_limiter:
    check_interval: 1s
    limit_mib: 512
  attributes:
    actions:
      - key: environment
        value: production
        action: upsert

exporters:
  otlp:
    endpoint: "https://backend.example.com:4318"
    tls:
      insecure: false
  prometheus:
    endpoint: "0.0.0.0:8889"

connectors:
  span_metrics:
    histogram:
      explicit:
        buckets: [0.1, 0.5, 1, 2, 5, 10]

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [memory_limiter, attributes, batch]
      exporters: [otlp, span_metrics]
    metrics:
      receivers: [span_metrics]
      processors: [batch]
      exporters: [prometheus]

3.6 自助目录中的 Pipeline 抽象

在平台工程自助目录中,Pipeline 被抽象为以下层级:

  1. 信号类型:Traces / Metrics / Logs(用户选择)
  2. 数据源:预置 Receiver 模板(用户选择数据源类型)
  3. 处理策略:预置 Processor 组合(用户选择采样率、过滤规则等)
  4. 目标后端:预置 Exporter 模板(用户选择环境)
  5. 衍生需求:是否启用 Connector 桥接(可选)
自助目录价值:应用团队无需理解 Collector 配置语法,通过表单选择即可生成完整的 Pipeline 配置。平台团队通过目录模板保证所有 Pipeline 符合安全、成本、性能基线。

3.7 组件选型决策矩阵

下表帮助平台团队在自助目录中为不同场景推荐合适的组件组合:

场景 推荐 Receiver 推荐 Processor 推荐 Exporter 是否需要 Connector
微服务 Trace 采集 otlp batch + tail_sampling otlp 可选(span_metrics)
K8s 集群指标 k8s_cluster + prometheus filter + batch prometheus 否
日志文件采集 filelog batch + attributes otlp / elasticsearch 否
Trace 衍生指标 otlp batch otlp 是(span_metrics → metrics Pipeline)
边缘节点聚合 otlp memory_limiter + batch otlp(压缩) 否

3.8 本章小结

Pipeline 是 OpenTelemetry 数据流的骨架,Receivers 定义数据入口,Processors 定义数据变换,Exporters 定义数据出口,Connectors 实现管线间高效桥接。平台工程团队通过自助目录将这四类组件封装为可组合的配置单元,使应用团队能够以“搭积木”的方式快速构建符合平台标准的观测管线。