3.3. 配置和部署分布式追踪数据收集

Red Hat OpenShift distributed tracing 数据收集 Operator 使用一个自定义资源定义(CRD)文件来定义创建和部署 Red Hat OpenShift distributed tracing 数据收集资源时要使用的架构和配置设置。您可以安装默认配置或修改该文件以更好地满足您的业务要求。

3.3.1. OpenTelemetry Collector 配置选项

重要

Red Hat OpenShift distributed tracing 数据收集 Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/

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

  • Receivers - 用于控制数据如何进入收集器的接收器,它基于推送或拉取。通常,接收器接受指定格式的数据,将其转换为内部格式,并将其传递给适用管道中定义的处理器和导出器。默认情况下,不会配置接收器。必须配置一个或多个接收器。接收器可以支持一个或多个数据源。
  • Processors -(可选)处理器在收到和导出的数据中运行。默认情况下,不启用处理器。每个数据源都必须启用处理器。不是所有处理器都支持所有数据源。根据数据源,建议启用多个处理器。此外,请务必注意处理器的顺序,这很重要。
  • Exporters - 用于控制数据如何发送到一个或多个后端/目的地的导出器,它基于推送或拉取。默认情况下,不会配置导出器。必须配置一个或多个导出器。导出器可能支持一个或多个数据源。导出器可能会附带默认设置,但一般还需要指定目标和安全设置。

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

OpenTelemetry 收集器自定义资源文件示例

apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: cluster-collector
  namespace: tracing-system
spec:
  mode: deployment
  config: |
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    processors:
    exporters:
      jaeger:
        endpoint: jaeger-production-collector-headless.tracing-system.svc:14250
        tls:
          ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: []
          exporters: [jaeger]

注意

如果一个组件已配置,但没有在 service 部分中定义,则不会启用它。

表 3.17. Operator 用来定义 OpenTelemetry Collector 的参数

参数描述default
receivers:

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

otlp, jaeger

receivers:
  otlp:

oltpjaeger 接收器附带默认设置,一般只需要再指定接收方的名称。

  
processors:

处理器在被接收和导出的数据上运行。默认情况下,不启用处理器。

 

exporters:

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

logging, jaeger

exporters:
 jaeger:
  endpoint:

jaeger exporter 的端点必须是 <name>-collector-headless.<namespace>.svc 的形式,其中包含 Jaeger 部署的名称和命名空间,以便建立安全连接。

  
exporters:
 jaeger:
  tls:
   ca_file:

CA 证书的路径。对于客户端,这将验证服务器证书。对于服务器,这会验证客户端证书。如果为空使用系统 root CA。

  
service:
  pipelines:

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

  
service:
  pipelines:
    traces:
      receivers:

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

 

service:
  pipelines:
    traces:
      processors:

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

 

service:
  pipelines:
    traces:
      exporters:

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