Target Allocator

用于将 PrometheusReceiver 的目标分配到所有已部署的 Collector 实例的工具

OpenTelemetry Operator 包含一个可选组件,即 Target Allocator (TA)。简而言之,TA 是一种机制,用于解耦 Prometheus 的服务发现和指标收集功能,以便它们可以独立扩展。Collector 管理 Prometheus 指标,而无需安装 Prometheus。TA 管理 Collector 的 Prometheus Receiver 的配置。

TA 提供两种功能

  1. 将 Prometheus 目标均匀分配给 Collector 池
  2. 发现 Prometheus 自定义资源

入门

当创建 OpenTelemetryCollector 自定义资源 (CR) 并启用 TA 时,Operator 将创建一个新的部署和服务,为 CR 的每个 Collector pod 提供特定的 http_sd_config 指令。它还将更改 CR 中的 Prometheus 接收器配置,使其使用来自 TA 的 http_sd_config。以下示例展示了如何开始使用 Target Allocator

apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: collector-with-ta
spec:
  mode: statefulset
  targetAllocator:
    enabled: true
  config: |
    receivers:
      prometheus:
        config:
          scrape_configs:
          - job_name: 'otel-collector'
            scrape_interval: 10s
            static_configs:
            - targets: [ '0.0.0.0:8888' ]
            metric_relabel_configs:
            - action: labeldrop
              regex: (id|name)
              replacement: $$1
            - action: labelmap
              regex: label_(.+)
              replacement: $$1

    exporters:
      # NOTE: Prior to v0.86.0 use `logging` instead of `debug`.
      debug:

    service:
      pipelines:
        metrics:
          receivers: [prometheus]
          processors: []
          exporters: [debug]

在后台,OpenTelemetry Operator 将在协调后将 Collector 的配置转换为以下内容

receivers:
  prometheus:
    config:
      scrape_configs:
        - job_name: otel-collector
          scrape_interval: 10s
          http_sd_configs:
            - url: http://collector-with-ta-targetallocator:80/jobs/otel-collector/targets?collector_id=$POD_NAME
          metric_relabel_configs:
            - action: labeldrop
              regex: (id|name)
              replacement: $$1
            - action: labelmap
              regex: label_(.+)
              replacement: $$1

exporters:
  debug:

service:
  pipelines:
    metrics:
      receivers: [prometheus]
      processors: []
      exporters: [debug]

请注意,Operator 如何从 scrape_configs 部分删除任何现有的服务发现配置(例如 static_configsfile_sd_configs 等),并添加一个指向其配置的 Target Allocator 实例的 http_sd_configs 配置。

有关 TargetAllocator 的更详细信息,请参阅 TargetAllocator