第 4 章 配置 Collector


4.1. 配置 Collector

红帽构建的 OpenTelemetry Operator 使用自定义资源定义(CRD)文件来定义创建和部署分布式追踪平台 (Tempo) 资源时要使用的架构和配置设置。您可以安装默认配置或修改该文件。

4.1.1. 部署模式

OpenTelemetryCollector 自定义资源允许您为 OpenTelemetry Collector 指定以下部署模式之一:

Deployment
默认值。
StatefulSet
如果您需要运行有状态工作负载,例如使用 Collector 的 File Storage Extension 或 Tail Sampling Processor 时,请使用 StatefulSet 部署模式。
DaemonSet
如果您需要从每个节点中提取遥测数据,例如使用 Collector 的 Filelog Receiver 来读取容器日志,请使用 DaemonSet 部署模式。
Sidecar

如果您需要访问容器内的日志文件,请将 Collector 注入 sidecar,并使用 Collector 的 Filelog Receiver 和共享卷,如 emptyDir

如果您需要将应用程序配置为通过 localhost 发送遥测数据,请将 Collector 注入 sidecar,并设置 Collector 通过加密和经过身份验证的连接将遥测数据转发到外部服务。当作为 sidecar 注入时,Collector 会与应用程序在同一 pod 中运行。

注意

如果选择 sidecar 部署模式,那么除了在 OpenTelemetryCollector 自定义资源 CR 中设置 spec.mode: sidecar 字段外,还必须将 sidecar.opentelemetry.io/inject 注解设置为 pod 注解或命名空间注解。如果在 pod 和命名空间上设置了此注解,如果 pod 注解被设置为 falseOpenTelemetryCollector CR 名称,则 pod 注解会优先使用。

作为 pod 注解,sidecar.opentelemetry.io/inject 注解支持几个值:

apiVersion: v1
kind: Pod
metadata:
  ...
  annotations:
    sidecar.opentelemetry.io/inject: "<supported_value>" 
1

...
Copy to Clipboard Toggle word wrap
1
支持的值:
false
不要注入 Collector。如果缺少注解,则这是默认设置。
true
使用同一命名空间中的 OpenTelemetryCollector CR 配置注入 Collector。
<collector_name>
使用同一命名空间中的 < collector_name > OpenTelemetryCollector CR 配置注入 Collector。
<namespace>/<collector_name>
使用 < namespace > 命名空间中的 <collector_name > OpenTelemetryCollector CR 配置注入 Collector。

4.1.2. OpenTelemetry Collector 配置选项

OpenTelemetry Collector 由访问遥测数据的一组组件组成:

  • Receivers
  • Processors
  • Exporters
  • 连接器
  • 扩展

您可以在自定义资源 YAML 文件中定义多个组件实例。配置后,必须通过 YAML 文件的 spec.config.service 部分中定义的管道启用这些组件。作为最佳实践,仅启用您需要的组件。

OpenTelemetry Collector 自定义资源文件示例

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: cluster-collector
  namespace: tracing-system
spec:
  mode: deployment
  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: 
1

      pipelines:
        traces:
          receivers: [otlp]
          processors: []
          exporters: [otlp]
        metrics:
          receivers: [otlp]
          processors: []
          exporters: [prometheus]
Copy to Clipboard Toggle word wrap

1
如果一个组件被配置但没有在 service 部分中定义,则组件不会被启用。
Expand
表 4.1. Operator 用来定义 OpenTelemetry Collector 的参数
参数描述default
receivers:
Copy to Clipboard Toggle word wrap

接收器用于控制数据如何进入 Collector。默认情况下,不会配置接收器。必须至少有一个启用的接收器才能使配置被视为有效。接收器通过添加到管道中来启用。

otlp, jaeger, prometheus, zipkin, kafka, opencensus

None

processors:
Copy to Clipboard Toggle word wrap

处理器在导出前会处理接收的数据。默认情况下,不启用处理器。

batch, memory_limiter, resourcedetection, attributes, span, k8sattributes, filter, routing

None

exporters:
Copy to Clipboard Toggle word wrap

导出器将数据发送到一个或多个后端或目的地。默认情况下,不会配置导出器。必须至少启用了一个 exporter 时,配置才被视为有效。将导出器添加到管道中即可启用。导出器可能会与其默认设置一起使用,但很多需要配置至少指定目标和安全设置。

otlp, otlphttp, debug, prometheus, kafka

None

connectors:
Copy to Clipboard Toggle word wrap

连接器通过将数据作为管道导出器来加入管道对,并将数据作为 Start-of-pipeline 接收器发送。连接器可用于总结、复制或路由消耗的数据。

spanmetrics

None

extensions:
Copy to Clipboard Toggle word wrap

不涉及处理遥测数据的任务的可选组件。

bearertokenauth, oauth2client, jaegerremotesampling, pprof, health_check, memory_ballast, zpages

None

service:
  pipelines:
Copy to Clipboard Toggle word wrap

组件通过将组件添加到 services.pipeline 下的管道中来启用。

  
service:
  pipelines:
    traces:
      receivers:
Copy to Clipboard Toggle word wrap

您可以通过在 service.pipelines.traces 下添加用于追踪的接收器。

 

None

service:
  pipelines:
    traces:
      processors:
Copy to Clipboard Toggle word wrap

您可以通过在 service.pipelines.traces 下添加处理器来启用追踪的处理器。

 

None

service:
  pipelines:
    traces:
      exporters:
Copy to Clipboard Toggle word wrap

您可以通过在 service.pipelines.traces 下添加用于追踪的导出器。

 

None

service:
  pipelines:
    metrics:
      receivers:
Copy to Clipboard Toggle word wrap

您可以通过在 service.pipelines.metrics 下添加指标来启用指标接收器。

 

None

service:
  pipelines:
    metrics:
      processors:
Copy to Clipboard Toggle word wrap

您可以通过在 service.pipelines.metrics 下添加 services.pipelines.metrics 来为 metircs 启用处理器。

 

None

service:
  pipelines:
    metrics:
      exporters:
Copy to Clipboard Toggle word wrap

您可以通过在 service.pipelines.metrics 下添加指标启用导出器。

 

None

4.1.3. 自动创建所需的 RBAC 资源

有些 Collector 组件需要配置 RBAC 资源。

流程

  • opentelemetry-operator-controller-manage 服务帐户中添加以下权限,以便红帽构建的 OpenTelemetry Operator 可以自动创建它们:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: generate-processors-rbac
    rules:
    - apiGroups:
      - rbac.authorization.k8s.io
      resources:
      - clusterrolebindings
      - clusterroles
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: generate-processors-rbac
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: generate-processors-rbac
    subjects:
    - kind: ServiceAccount
      name: opentelemetry-operator-controller-manager
      namespace: openshift-opentelemetry-operator
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat