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

如何在采集时复制kube_namespace_labels指标并修改名称与标签前缀?

生成kube_namespace_labels指标副本的正确姿势

首先说结论:靠scrape_configs直接生成副本办不到,得用Prometheus的记录规则(Recording Rules);如果不在意原指标丢失,也能在scrape阶段修改标签,但这不符合你要保留原指标的需求。

推荐方法:用记录规则生成副本

记录规则是Prometheus基于已有指标生成新指标的功能,刚好适配你这种「复制+修改」的场景。

找个Prometheus的规则配置文件(比如自定义的namespace_rules.yaml),添加以下配置:

groups:
- name: namespace_labels_copy
  rules:
  - record: kube_namespace_labels_copy
    expr: kube_namespace_labels
    relabel_configs:
      # 给除namespace之外的所有标签添加prefix_前缀
      - action: labelmap
        regex: ^(?!namespace$)(.+)
        replacement: prefix_$1

配置完成后,把这个规则文件关联到Prometheus主配置文件里,重启Prometheus即可。这样原指标kube_namespace_labels会被保留,同时生成你需要的kube_namespace_labels_copy,所有非namespace的标签都会自动带上prefix_前缀。

为啥scrape_configs不行?

scrape_configs里的metric_relabel_configs只能修改采集到的指标本身,没法复制出一个全新的指标。如果硬用它修改,会直接把原指标替换成新名称和新标签,原指标就消失了,不符合你要保留副本的需求。

举个例子,要是用下面的scrape配置:

scrape_configs:
- job_name: 'kubernetes-namespaces'
  static_configs:
  - targets: ['kube-state-metrics:8080']
  metric_relabel_configs:
    - action: labelmap
      regex: ^(?!namespace$)(.+)
      replacement: prefix_$1
    - action: replace
      source_labels: [__name__]
      target_label: __name__
      replacement: kube_namespace_labels_copy

最终结果就是原来的kube_namespace_labels指标彻底消失,只剩修改后的副本,这显然不是你想要的效果。

所以还是用记录规则最靠谱,既能保住原指标,又能生成符合要求的副本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:27:12