如何在Prometheus Operator中用自定义指标分片并指定抓取指标
Prometheus Operator分片指定抓取指标配置方法
Prometheus Operator的分片默认是基于抓取目标的哈希值分配负载,每个shard负责一部分目标的抓取。如果要实现按指标维度分片,可以通过以下两种方式配置:
1. 用shardSelector绑定特定ServiceMonitor
通过给不同的ServiceMonitor打专属shard标签,让每个Prometheus shard只抓取对应标签的ServiceMonitor,从而实现不同shard处理不同指标集:
步骤:
- 拆分指标到不同的ServiceMonitor:比如把前端核心指标和前端日志指标分别定义为两个ServiceMonitor,各自配置
metricRelabelings过滤出目标指标。 - 给ServiceMonitor添加shard标签:比如给核心指标的ServiceMonitor加
shard: "0",日志指标的加shard: "1"。 - 修改Prometheus清单,添加
shardSelector字段,每个shard实例会自动匹配对应标签的ServiceMonitor:
apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: labels: prometheus: prometheus name: prometheus namespace: default spec: serviceAccountName: prometheus replicas: 2 shards: 2 # 每个shard会匹配对应标签的ServiceMonitor shardSelector: matchExpressions: - key: shard operator: In values: ["{{ .Shard }}"] serviceMonitorSelector: matchLabels: team: frontend
对应的ServiceMonitor示例(shard=0):
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: team: frontend shard: "0" name: frontend-core-metrics namespace: default spec: selector: matchLabels: app: frontend endpoints: - port: metrics metricRelabelings: # 只保留核心指标 - sourceLabels: [__name__] regex: 'frontend_requests_total|frontend_latency_seconds' action: keep
2. 基于指标哈希的动态分片过滤
如果不想拆分ServiceMonitor,可以利用Prometheus内置的__shard__和__num_shards__标签,在抓取阶段对指标做哈希取模,只保留当前shard负责的指标:
在ServiceMonitor的endpoints.relabelings中添加配置:
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: team: frontend name: frontend-all-metrics namespace: default spec: selector: matchLabels: app: frontend endpoints: - port: metrics relabelings: # 基于指标名称哈希,分配到对应shard - sourceLabels: [__name__, __shard__] action: keep regex: '.*;(\d+)' modulus: '{{ .NumShards }}' targetLabel: __tmp_shard - sourceLabels: [__tmp_shard] regex: '{{ .Shard }}' action: keep
这种方式会对每个指标名称做哈希,取模后等于当前shard编号的才会被保留,实现同一目标下的指标分片。
注意事项
shardSelector是Prometheus Operator v0.40+版本支持的特性,确保你的Operator版本符合要求。- 基于指标哈希的分片可能会导致指标分布不均,建议提前测试指标哈希后的分配情况。
内容的提问来源于stack exchange,提问作者odc
相关产品推荐
相关产品推荐

