1.5. Target Allocator
Target Allocator は、OpenTelemetry Operator のオプションのコンポーネントです。デプロイされた OpenTelemetry Collector インスタンスのフリート全体のスクレイプターゲットをシャード化します。Target Allocator は、Prometheus PodMonitor および ServiceMonitor カスタムリソース (CR) と統合します。Target Allocator が有効な場合、OpenTelemetry Operator が、Target Allocator サービスに接続する有効な Prometheus レシーバーに http_sd_config フィールドを追加します。
Target Allocator はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Target Allocator が有効な OpenTelemetryCollector CR の例
apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
name: otel
namespace: observability
spec:
mode: statefulset
targetAllocator:
enabled: true
serviceAccount:
prometheusCR:
enabled: true
scrapeInterval: 10s
serviceMonitorSelector:
name: app1
podMonitorSelector:
name: app2
config:
receivers:
prometheus:
config:
scrape_configs: []
processors:
exporters:
debug: {}
service:
pipelines:
metrics:
receivers: [prometheus]
processors: []
exporters: [debug]
# ...
- 1
- Target Allocator が有効な場合、デプロイメントモードを
statefulsetに設定する必要があります。 - 2
- Target Allocator を有効にします。デフォルトは
falseです。 - 3
- Target Allocator デプロイメントのサービスアカウント名。サービスアカウントには、収集されたメトリクスにラベルを適切に設定するために、
ServiceMonitor、PodMonitorカスタムリソース、およびその他のオブジェクトをクラスターから取得するための RBAC が必要です。デフォルトのサービス名は<collector_name>-targetallocatorです。 - 4
- Prometheus
PodMonitorおよびServiceMonitorカスタムリソースとの統合を有効にします。 - 5
- Prometheus
ServiceMonitorカスタムリソースのラベルセレクター。空のままにすると、すべてのサービスモニターが有効になります。 - 6
- Prometheus
PodMonitorカスタムリソースのラベルセレクター。空のままにすると、すべての Pod モニターが有効になります。 - 7
- 最小限の空の
scrape_config: []設定オプションを指定した Prometheus Receiver。
Target Allocator デプロイメントは、Kubernetes API を使用してクラスターから関連オブジェクトを取得します。そのため、カスタム RBAC 設定が必要です。
Target Allocator のサービスアカウントの RBAC 設定
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: otel-targetallocator
rules:
- apiGroups: [""]
resources:
- services
- pods
- namespaces
verbs: ["get", "list", "watch"]
- apiGroups: ["monitoring.coreos.com"]
resources:
- servicemonitors
- podmonitors
- scrapeconfigs
- probes
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
namespace: observability
# ...