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

升级kube-state-metrics后,如何在Grafana全局替换指标名?

全局兼容kube-state-metrics HPA指标名称的方案

方法1:用Prometheus metric_relabel_configs重命名指标

metric_relabel_configs是专门用于修改指标名称的配置(和仅处理标签的relabel_configs不同),可以直接在kube-state-metrics的抓取任务中配置,实现新旧指标的映射。

将新指标重命名为旧名称(直接兼容原有Grafana图表)

在Prometheus的scrape_configs中找到kube-state-metrics的job,添加以下配置:

scrape_configs:
  - job_name: 'kube-state-metrics'
    # 保留原有targets、relabel_configs等配置
    metric_relabel_configs:
      - source_labels: [__name__]
        regex: 'kube_horizontalpodautoscaler_(.*)'
        target_label: __name__
        replacement: 'kube_hpa_$1'

配置生效后,所有kube_horizontalpodautoscaler_*指标都会被替换为kube_hpa_*,Grafana原有图表无需任何修改就能正常查询数据。

同时保留新旧指标(过渡场景)

如果需要在过渡期间同时支持两种指标名称,可配置如下:

metric_relabel_configs:
  # 先保留原始的新指标
  - action: keep
    source_labels: [__name__]
    regex: 'kube_horizontalpodautoscaler_.*'
  # 复制新指标并命名为旧指标名称
  - source_labels: [__name__]
    regex: 'kube_horizontalpodautoscaler_(.*)'
    target_label: __name__
    replacement: 'kube_hpa_$1'
    action: replace

这样TSDB中会同时存在kube_horizontalpodautoscaler_*和kube_hpa_*两类指标,方便逐步切换Grafana图表。

方法2:用Prometheus录制规则生成别名指标

如果不想修改抓取配置,可通过录制规则生成旧名称的指标副本:

规则文件示例

创建hpa_alias_rules.yaml文件,内容如下:

groups:
- name: hpa_metric_aliases
  rules:
  - record: kube_hpa_$1
    expr: kube_horizontalpodautoscaler_$1
    labels:
      alias_source: "kube_horizontalpodautoscaler"

然后在Prometheus配置中加载该规则文件:

rule_files:
  - "hpa_alias_rules.yaml"

Prometheus会定期计算生成kube_hpa_*指标,与原指标数据完全一致,原有Grafana图表可直接使用。

选型建议

  • 优先使用metric_relabel_configs:它在指标抓取后、存储前处理,性能开销更低,数据一致性更好。
  • 使用Thanos集群时,需确保所有Prometheus实例配置相同的重命名规则,避免跨实例数据不一致。
  • 过渡完成后,建议逐步将Grafana图表切换到新指标名称,再移除兼容配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:05:23