配置选项

OpenTelemetry Collector 架构由五种主要组件类型组成,这些组件协同工作,在遥测数据的整个生命周期中对其进行处理:

  • Receivers:将遥测数据摄取到 Collector 中的组件
  • Processors:在数据通过 pipeline 流动时对其进行转换、过滤或增强的组件
  • Exporters:将处理后的数据发送到后端系统或目标的组件
  • Connectors:通过同时充当 exporter 和 receiver 来连接 pipeline 段的组件
  • Extensions:提供辅助功能但不直接处理遥测数据的可选组件

组件配置

你可以在自定义资源 YAML 文件中为每种组件类型定义多个实例。不过,组件必须通过 spec.config.service 部分中的 pipeline 定义显式启用后才会生效。

TIP

作为最佳实践,只启用你实际需要的组件。这样可以减少资源消耗,并简化故障排查。

配置示例

以下示例演示了一个基础的 OpenTelemetry Collector 配置,其中包含 OTLP receivers 和多个 exporters:

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: cluster-collector
  namespace: tracing-system
spec:
  mode: deployment
  replicas: 1
  observability:
    metrics:
      enableMetrics: true
  config:
    receivers:
      otlp:
        protocols:
          grpc: {}
          http: {}
    processors: {}
    exporters:
      otlp:
        endpoint: otel-collector-headless.tracing-system.svc:4317
        tls:
          ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
      prometheus:
        endpoint: 0.0.0.0:8889
        resource_to_telemetry_conversion:
          enabled: true # by default resource attributes are dropped
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: []
          exporters: [otlp]
        metrics:
          receivers: [otlp]
          processors: []
          exporters: [prometheus]
  1. 在配置中定义但未在 service.pipelines 部分引用的组件将保持非活动状态。组件必须至少添加到一个 pipeline 中才能发挥作用。

配置参数

下表描述了 Operator 用于定义 OpenTelemetry Collector 的主要配置参数:

ParameterDescriptionValuesDefault
receivers定义数据进入 Collector 的方式。要获得有效配置,pipeline 中至少必须启用一个 receiver。otlp, jaeger, prometheus, zipkin, kafkaNone
processors定义在接收和导出之间应用的数据转换操作。Processors 为可选项。batch, memory_limiter, resourcedetection, attributes, span, k8sattributes, filterNone
exporters定义处理后数据的目标位置。要获得有效配置,pipeline 中至少必须启用一个 exporter。otlp, otlphttp, debug, prometheus, kafkaNone
connectors定义通过作为 exporter 消费数据并作为 receiver 发出数据来连接 pipeline 对的组件。spanmetrics, count, routing, forwardNone
extensions定义用于辅助任务且不涉及遥测数据处理的可选组件。bearertokenauth, oauth2client, pprof, health_check, zpagesNone
service.pipelines通过将组件添加到 pipeline 中来启用组件。组件必须列在此处才会生效。N/ANone

Values 列仅列出代表性组件。有关支持的全部组件集,请参阅 ReceiversProcessorsExportersConnectorsExtensions

Pipeline 配置

Pipeline 定义在 service.pipelines 下,用于指定遥测数据在 Collector 中的流动方式。每种 pipeline 类型(traces、metrics、logs)都可以拥有自己的一组 receivers、processors 和 exporters。

Pipeline 配置示例:

service:
  pipelines:
    traces:
      receivers: [otlp, jaeger]
      processors: [batch, memory_limiter]
      exporters: [otlp, debug]
    metrics:
      receivers: [otlp, prometheus]
      processors: [batch]
      exporters: [prometheus]
    logs:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp]

每个 pipeline 都会独立处理其对应的遥测类型,因此你可以根据可观测性需求,为 traces、metrics 和 logs 配置不同的处理逻辑。