配置选项

OpenTelemetry Collector 架构由五种主要组件类型组成,它们协同工作,以在整个生命周期中处理 telemetry 数据:

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

组件配置

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

TIP

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

配置示例

以下示例展示了一个使用 OTLP receivers 和多个 exporters 的基本 OpenTelemetry Collector 配置:

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 的主要配置参数:

参数描述默认值
receivers定义数据如何进入 Collector。要使配置有效,必须在 pipeline 中启用至少一个 receiver。otlp, jaeger, prometheus, zipkin, kafka
processors定义在接收和导出之间应用的数据转换操作。Processors 是可选的。batch, memory_limiter, resourcedetection, attributes, span, k8sattributes, filter, routing
exporters定义处理后数据的目标位置。要使配置有效,必须在 pipeline 中启用至少一个 exporter。otlp, otlphttp, debug, prometheus, kafka
connectors定义通过作为 exporter 消费数据并作为 receiver 发出数据来连接 pipeline 对的组件。spanmetrics, count, routing, forward
extensions定义用于辅助任务且不涉及 telemetry 数据处理的可选组件。bearertokenauth, oauth2client, pprof, health_check, memory_ballast, zpages
service.pipelines通过将组件添加到 pipeline 中来启用它们。组件必须列在此处才能生效。N/A

Pipeline 配置

Pipelines 在 service.pipelines 下定义,用于指定 telemetry 数据在 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 都会独立处理其 telemetry 类型,因此你可以根据可观测性需求,为 traces、metrics 和 logs 配置不同的处理逻辑。