×

目标分配器是 OpenTelemetry 运算符的一个可选组件,它可以跨已部署的 OpenTelemetry 收集器实例集群分片抓取目标。目标分配器与 Prometheus 的PodMonitorServiceMonitor自定义资源 (CR) 集成。启用目标分配器后,OpenTelemetry 运算符会将http_sd_config字段添加到启用的prometheus接收器,该接收器连接到目标分配器服务。

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

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

启用了目标分配器的 OpenTelemetryCollector CR 示例
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: otel
  namespace: observability
spec:
  mode: statefulset (1)
  targetAllocator:
    enabled: true (2)
    serviceAccount: (3)
    prometheusCR:
      enabled: true (4)
      scrapeInterval: 10s
      serviceMonitorSelector: (5)
        name: app1
      podMonitorSelector: (6)
        name: app2
  config: |
    receivers:
      prometheus: (7)
        config:
          scrape_configs: []
    processors:
    exporters:
      debug: {}
    service:
      pipelines:
        metrics:
          receivers: [prometheus]
          processors: []
          exporters: [debug]
# ...
1 启用目标分配器后,部署模式必须设置为statefulset
2 启用目标分配器。默认为false
3 目标分配器部署的服务帐户名称。服务帐户需要具有 RBAC 权限才能从集群获取ServiceMonitorPodMonitor自定义资源和其他对象,以便正确设置抓取指标上的标签。默认服务名称为<collector_name>-targetallocator
4 启用与 Prometheus 的PodMonitorServiceMonitor自定义资源的集成。
5 Prometheus 的ServiceMonitor自定义资源的标签选择器。如果留空,则启用所有服务监控器。
6 Prometheus 的PodMonitor自定义资源的标签选择器。如果留空,则启用所有 Pod 监控器。
7 具有最小空scrape_config: []配置选项的 Prometheus 接收器。

目标分配器部署使用 Kubernetes API 从集群获取相关对象,因此它需要自定义 RBAC 配置。

目标分配器服务帐户的 RBAC 配置
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otel-targetallocator
rules:
  - apiGroups: [""]
    resources:
      - services
      - pods
    verbs: ["get", "list", "watch"]
  - apiGroups: ["monitoring.coreos.com"]
    resources:
      - servicemonitors
      - podmonitors
    verbs: ["get", "list", "watch"]
  - apiGroups: ["discovery.k8s.io"]
    resources:
      - endpointslices
    verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: otel-targetallocator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: otel-targetallocator
subjects:
  - kind: ServiceAccount
    name: otel-targetallocator (1)
    namespace: observability (2)
# ...
1 目标分配器服务帐户名称。
2 目标分配器服务帐户的命名空间。