You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Prometheus联邦采集指标时出现重复指标该如何解决?

解决方案

根因说明

你遇到的重复指标分别来自两个数据源:主Prometheus本地kube-prometheus栈生成的聚合指标、联邦拉取的子集群同名指标。当前配置存在两个核心问题:

  1. 主、子集群的cluster标签配置重复,均为sample-eks,无法通过集群标签区分不同集群的指标,逻辑上判定为同集群的重复数据
  2. 联邦拉取时如果子集群指标本身不携带job/prometheus/prometheus_replica标签,主集群的联邦抓取作业会自动附加这些标签,导致同名称指标出现两套标签集,触发同时间戳数值冲突告警。

调整步骤

1. 配置唯一集群标识

首先分别修改主、子集群的kube-prometheus配置,保证每个集群的全局外部标签cluster取值唯一,比如子集群改为sample-eks-child,主集群保留sample-eks,从根源上区分不同集群的指标,避免逻辑重复。
kube-prometheus的全局外部标签可以在Prometheus自定义资源的spec.externalLabels字段配置,示例:

spec:
  externalLabels:
    cluster: sample-eks # 主集群填主集群标识,子集群填子集群唯一标识

2. 优化联邦抓取配置

如果不需要保留主集群抓取作业附加的多余标签,可以在联邦作业配置中添加metric_relabel_configs删除指定标签,保证拉取到的子集群指标和子集群原生标签完全一致:

- job_name: 'federate'
  scrape_interval: 15s
  honor_labels: true
  metrics_path: '/federate'
  params:
    'match[]':
      - '{job=~".*"}'      
  static_configs:
  - targets:
    - 'prometheus-sample.dev.xyz.com'
  # 新增以下relabel配置删除多余标签
  metric_relabel_configs:
  - action: labeldrop
    regex: '(job|prometheus|prometheus_replica)'

3. 可选:过滤联邦拉取的指标

如果主集群本身已经生成了对应聚合指标,不需要重复拉取子集群的聚合指标,可以修改联邦的match[]规则,只拉取原始指标不拉取聚合指标,避免重复:

params:
  'match[]':
    # 只拉取原始指标,忽略冒号分隔的聚合规则指标
    - '{job=~".+", __name__!~".*:.*"}'

验证方式

调整配置重载Prometheus后,查询namespace_workload_pod:kube_pod_owner:relabel指标,只会出现对应不同cluster标签的指标,没有同集群下标签不一致的重复指标,同时日志中的Error on ingesting samples with different value but same timestamp告警消失。

内容的提问来源于stack exchange,提问作者malcolm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:54:05