Target Allocator
用于将 PrometheusReceiver 的目标分配到所有已部署的 Collector 实例的工具
OpenTelemetry Operator 包含一个可选组件,即 Target Allocator (TA)。简而言之,TA 是一种机制,用于解耦 Prometheus 的服务发现和指标收集功能,以便它们可以独立扩展。Collector 管理 Prometheus 指标,而无需安装 Prometheus。TA 管理 Collector 的 Prometheus Receiver 的配置。
TA 提供两种功能
- 将 Prometheus 目标均匀分配给 Collector 池
- 发现 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_configs、file_sd_configs 等),并添加一个指向其配置的 Target Allocator 实例的 http_sd_configs 配置。
有关 TargetAllocator 的更详细信息,请参阅 TargetAllocator。