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

如何在Prometheus查询中替换变量${mountpoint}的连字符为下划线?

可行方案

方案1:利用Grafana变量的内置替换语法(最直接)

如果你是在Grafana中使用这个变量,直接在变量引用时添加字符串替换规则,把所有连字符替换成下划线:

avg(increase(vault_route_create_${mountpoint/-/_/g}__count[5m]))

语法说明:${变量名/要替换的字符/替换后的字符/g} 里的g表示全局替换所有匹配的字符,确保变量里的所有连字符都被替换。

方案2:通过Prometheus Relabeling规则提前修正指标名

在Prometheus的抓取配置中添加relabel规则,将指标名里的连字符批量替换为下划线,从源头解决问题:

scrape_configs:
  - job_name: 'vault'
    # 其他抓取配置...
    relabel_configs:
      # 仅针对vault_route_create开头的指标替换连字符
      - source_labels: [__name__]
        regex: 'vault_route_create_(.*)-(.*)__count'
        replacement: 'vault_route_create_${1}_${2}__count'
        target_label: __name__
      # 如果需要全局替换所有指标名里的连字符,用下面的规则
      # - source_labels: [__name__]
      #   regex: '(.*)-(.*)'
      #   replacement: '${1}_${2}'
      #   target_label: __name__

方案3:用PromQL的指标名正则匹配(兜底方案)

如果上面两种方法都没法用,可以通过正则匹配包含连字符的指标名,再聚合计算:

avg(
  increase(
    {__name__=~"vault_route_create_${mountpoint//-/\\\\-}__count|vault_route_create_${mountpoint//-/}_.*__count"}[5m]
  )
)

说明:把变量里的-转义成\-匹配原始带连字符的指标,同时匹配替换成下划线后的指标,再取平均值。不过这种方法不如前两种简洁,仅作为兜底。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:45:39