×

扩展为 Collector 添加功能。例如,可以自动向接收器和导出器添加身份验证。

BearerTokenAuth 扩展

BearerTokenAuth 扩展是基于 HTTP 和 gRPC 协议的接收器和导出器的身份验证器。您可以使用 OpenTelemetry Collector 自定义资源来配置接收器和导出器端的 BearerTokenAuth 扩展的客户端身份验证和服务器身份验证。此扩展支持跟踪、指标和日志。

为 BearerTokenAuth 扩展配置客户端和服务器身份验证的 OpenTelemetry Collector 自定义资源
# ...
  config: |
    extensions:
      bearertokenauth:
        scheme: "Bearer" (1)
        token: "<token>" (2)
        filename: "<token_file>" (3)

    receivers:
      otlp:
        protocols:
          http:
            auth:
              authenticator: bearertokenauth (4)
    exporters:
      otlp:
        auth:
          authenticator: bearertokenauth (5)

    service:
      extensions: [bearertokenauth]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
# ...
1 您可以配置 BearerTokenAuth 扩展以发送自定义scheme。默认为Bearer
2 您可以将 BearerTokenAuth 扩展令牌作为元数据添加以标识消息。
3 包含随每条消息一起传输的授权令牌的文件的路径。
4 您可以将身份验证器配置分配给 OTLP 接收器。
5 您可以将身份验证器配置分配给 OTLP 导出器。

OAuth2Client 扩展

OAuth2Client 扩展是基于 HTTP 和 gRPC 协议的导出器的身份验证器。OAuth2Client 扩展的客户端身份验证在 OpenTelemetry Collector 自定义资源中的单独部分配置。此扩展支持跟踪、指标和日志。

OAuth2Client 扩展仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您提前访问即将推出的产品功能,从而使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

为 OAuth2Client 扩展配置客户端身份验证的 OpenTelemetry Collector 自定义资源
# ...
  config: |
    extensions:
      oauth2client:
        client_id: <client_id> (1)
        client_secret: <client_secret> (2)
        endpoint_params: (3)
          audience: <audience>
        token_url: https://example.com/oauth2/default/v1/token (4)
        scopes: ["api.metrics"] (5)
        # tls settings for the token client
        tls: (6)
          insecure: true (7)
          ca_file: /var/lib/mycert.pem (8)
          cert_file: <cert_file> (9)
          key_file: <key_file> (10)
        timeout: 2s (11)

    receivers:
      otlp:
        protocols:
          http: {}

    exporters:
      otlp:
        auth:
          authenticator: oauth2client (12)

    service:
      extensions: [oauth2client]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
# ...
1 客户端标识符,由身份提供者提供。
2 用于向身份提供者验证客户端的机密密钥。
3 其他元数据(键值对格式),在身份验证期间传输。例如,audience 指定访问令牌的目标受众,指示令牌的接收者。
4 OAuth2 令牌端点的 URL,Collector 在此处请求访问令牌。
5 范围定义客户端请求的特定权限或访问级别。
6 令牌客户端的传输层安全 (TLS) 设置,用于在请求令牌时建立安全连接。
7 设置为true时,配置 Collector 使用不安全或未经验证的 TLS 连接来调用配置的令牌端点。
8 用于在 TLS 握手期间验证服务器证书的证书颁发机构 (CA) 文件的路径。
9 客户端必须用于向 OAuth2 服务器进行身份验证的客户端证书文件的路径(如果需要)。
10 如果需要进行身份验证,则与客户端证书一起使用的客户端私钥文件的路径。
11 设置令牌客户端请求的超时。
12 您可以将身份验证器配置分配给 OTLP 导出器。

文件存储扩展

文件存储扩展支持追踪、指标和日志。此扩展可以将状态持久化到本地文件系统。此扩展会持久化基于 HTTP 和 gRPC 协议的 OpenTelemetry 协议 (OTLP) 导出器的发送队列。此扩展需要对目录的读写访问权限。此扩展可以使用默认目录,但默认目录必须已存在。

文件存储扩展仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让客户提前访问即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

配置了持久化 OTLP 发送队列的文件存储扩展的 OpenTelemetry Collector 自定义资源
# ...
  config: |
    extensions:
      file_storage/all_settings:
        directory: /var/lib/otelcol/mydir (1)
        timeout: 1s (2)
        compaction:
          on_start: true (3)
          directory: /tmp/ (4)
          max_transaction_size: 65_536 (5)
        fsync: false (6)

    exporters:
      otlp:
        sending_queue:
          storage: file_storage/all_settings (7)

    service:
      extensions: [file_storage/all_settings] (8)
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
# ...
1 指定存储遥测数据的目录。
2 指定打开存储文件的超时时间间隔。
3 在 Collector 启动时启动压缩。如果省略,则默认为 false
4 指定压缩器存储遥测数据的目录。
5 定义压缩事务的最大大小。要忽略事务大小,请设置为零。如果省略,则默认为 65536 字节。
6 设置后,强制数据库在每次写入操作后执行 fsync 调用。这有助于确保数据库完整性,即使数据库进程中断,但会影响性能。
7 在本地文件系统上缓冲 OTLP 导出器数据。
8 由 Collector 启动文件存储扩展。

OIDC 身份验证扩展

OIDC 身份验证扩展使用 OpenID Connect (OIDC) 协议对接收器的传入请求进行身份验证。它会根据颁发者验证授权标头中的 ID 令牌,并更新传入请求的身份验证上下文。

OIDC 身份验证扩展仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让客户提前访问即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

配置了 OIDC 身份验证扩展的 OpenTelemetry Collector 自定义资源
# ...
  config: |
    extensions:
      oidc:
        attribute: authorization (1)
        issuer_url: https://example.com/auth/realms/opentelemetry (2)
        issuer_ca_path: /var/run/tls/issuer.pem (3)
        audience: otel-collector (4)
        username_claim: email (5)
    receivers:
      otlp:
        protocols:
          grpc:
            auth:
              authenticator: oidc
    exporters:
      otlp:
        endpoint: <endpoint>
    service:
      extensions: [oidc]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
# ...
1 包含 ID 令牌的标头名称。默认名称为 authorization
2 OIDC 提供程序的基 URL。
3 可选:颁发者 CA 证书的路径。
4 令牌的目标受众。
5 包含用户名声明的名称。默认名称为 sub

Jaeger 远程采样扩展

Jaeger 远程采样扩展允许在 Jaeger 的远程采样 API 后提供采样策略。您可以将此扩展配置为将请求代理到后台远程采样服务器(例如管道中的 Jaeger 收集器)或本地文件系统中的静态 JSON 文件。

Jaeger 远程采样扩展仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让客户提前访问即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

配置了 Jaeger 远程采样扩展的 OpenTelemetry Collector 自定义资源
# ...
  config: |
    extensions:
      jaegerremotesampling:
        source:
          reload_interval: 30s (1)
          remote:
            endpoint: jaeger-collector:14250 (2)
          file: /etc/otelcol/sampling_strategies.json (3)

    receivers:
      otlp:
        protocols:
          http: {}

    exporters:
      otlp:

    service:
      extensions: [jaegerremotesampling]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
# ...
1 更新采样配置的时间间隔。
2 用于访问 Jaeger 远程采样策略提供程序的端点。
3 包含 JSON 格式采样策略配置的本地文件的路径。
Jaeger 远程采样策略文件的示例
{
  "service_strategies": [
    {
      "service": "foo",
      "type": "probabilistic",
      "param": 0.8,
      "operation_strategies": [
        {
          "operation": "op1",
          "type": "probabilistic",
          "param": 0.2
        },
        {
          "operation": "op2",
          "type": "probabilistic",
          "param": 0.4
        }
      ]
    },
    {
      "service": "bar",
      "type": "ratelimiting",
      "param": 5
    }
  ],
  "default_strategy": {
    "type": "probabilistic",
    "param": 0.5,
    "operation_strategies": [
      {
        "operation": "/health",
        "type": "probabilistic",
        "param": 0.0
      },
      {
        "operation": "/metrics",
        "type": "probabilistic",
        "param": 0.0
      }
    ]
  }
}

性能分析器扩展

性能分析器扩展启用 Go net/http/pprof 端点。开发人员可以使用此扩展收集性能配置文件并调查服务的相关问题。

性能分析器扩展仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让客户提前访问即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

配置了性能分析器扩展的 OpenTelemetry Collector 自定义资源
# ...
  config: |
    extensions:
      pprof:
        endpoint: localhost:1777 (1)
        block_profile_fraction: 0 (2)
        mutex_profile_fraction: 0 (3)
        save_to_file: test.pprof (4)

    receivers:
      otlp:
        protocols:
          http: {}

    exporters:
      otlp:

    service:
      extensions: [pprof]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
# ...
1 此扩展监听的端点。使用 localhost: 使其仅在本地可用,或使用 ":" 使其在所有网络接口上可用。默认值为 localhost:1777
2 设置要分析的阻塞事件的分数。要禁用分析,请将其设置为 0 或负整数。请参阅 文档了解 runtime 包。默认值为 0
3 设置要分析的互斥锁竞争事件的分数。要禁用分析,请将其设置为 0 或负整数。请参阅 文档了解 runtime 包。默认值为 0
4 要将 CPU 配置文件保存到的文件的名称。在 Collector 启动时开始分析。在 Collector 终止时将分析保存到文件。

健康检查扩展

健康检查扩展提供一个 HTTP URL 用于检查 OpenTelemetry Collector 的状态。您可以在 OpenShift 上将此扩展用作存活性探针和就绪性探针。

健康检查扩展仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让客户提前访问即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

配置了健康检查扩展的 OpenTelemetry Collector 自定义资源
# ...
  config: |
    extensions:
      health_check:
        endpoint: "0.0.0.0:13133" (1)
        tls: (2)
          ca_file: "/path/to/ca.crt"
          cert_file: "/path/to/cert.crt"
          key_file: "/path/to/key.key"
        path: "/health/status" (3)
        check_collector_pipeline: (4)
          enabled: true (5)
          interval: "5m" (6)
          exporter_failure_threshold: 5 (7)

    receivers:
      otlp:
        protocols:
          http: {}

    exporters:
      otlp:

    service:
      extensions: [health_check]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
# ...
1 发布健康检查状态的目标 IP 地址。默认为 0.0.0.0:13133
2 TLS 服务器端配置。定义 TLS 证书的路径。如果省略,则禁用 TLS。
3 健康检查服务器的路径。默认为 /
4 Collector 管道健康检查的设置。
5 启用 Collector 管道健康检查。默认为 false
6 检查失败次数的时间间隔。默认为 5m
7 容器仍标记为健康的多个失败的阈值。默认为 5

zPages 扩展

zPages 扩展提供一个 HTTP 端点,用于实时提供用于调试已检测组件的实时数据。您可以使用此扩展来进行进程内诊断,并深入了解追踪和指标,而无需依赖外部后端。使用此扩展,您可以通过监视提供的端点处的诊断信息来监视和排查 OpenTelemetry Collector 和相关组件的行为。

zPages 扩展目前仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让客户提前访问即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

配置了 zPages 扩展的 OpenTelemetry Collector 自定义资源
# ...
  config: |
    extensions:
      zpages:
        endpoint: "localhost:55679" (1)

    receivers:
      otlp:
        protocols:
          http: {}
    exporters:
      debug:

    service:
      extensions: [zpages]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [debug]
# ...
1 指定用于提供 zPages 扩展的 HTTP 端点。默认值为localhost:55679

由于 Red Hat 版本的 OpenTelemetry Operator 没有公开此路由,因此访问 HTTP 端点需要端口转发。

您可以通过运行以下oc命令启用端口转发

$ oc port-forward pod/$(oc get pod -l app.kubernetes.io/name=instance-collector -o=jsonpath='{.items[0].metadata.name}') 55679

Collector 提供以下 zPages 用于诊断

ServiceZ

显示 Collector 服务概述以及指向以下 zPages 的链接:PipelineZExtensionZFeatureZ。此页面还显示有关构建版本和运行时的信息。此页面 URL 的示例为https://127.0.0.1:55679/debug/servicez

PipelineZ

显示 Collector 中活动管道的详细信息。此页面显示管道类型、是否修改了数据以及每个管道的关联接收器、处理器和导出器。此页面 URL 的示例为https://127.0.0.1:55679/debug/pipelinez

ExtensionZ

显示 Collector 中当前活动的扩展。此页面 URL 的示例为https://127.0.0.1:55679/debug/extensionz

FeatureZ

显示 Collector 中启用的功能网关及其状态和描述。此页面 URL 的示例为https://127.0.0.1:55679/debug/featurez

TraceZ

显示按延迟分类的跨度。可用时间范围包括 0 µs、10 µs、100 µs、1 ms、10 ms、100 ms、1 s、10 s、1 m。此页面还允许快速检查错误样本。此页面 URL 的示例为https://127.0.0.1:55679/debug/tracez