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

Prometheus是否支持标签值拆分截取?如何提取label的指定部分?

Prometheus标签值拆分提取方法

Prometheus完全支持标签值的拆分、字符串截取、正则提取操作,可根据使用场景选择以下两种方案实现从job_name/pod_name中提取前缀的需求:

方案1:PromQL查询时动态提取(临时使用)

适合偶尔需要用前缀做查询/聚合的场景,直接使用label_replace函数在查询时动态生成新标签,示例如下:

# 仅从job_name提取前缀
label_replace(rows_inserted_total, "idc_prefix", "$1", "job_name", "([^-]+)-.*")

# 同时兼容只有pod_name的指标
label_replace(
  label_replace(rows_inserted_total, "idc_prefix", "$1", "job_name", "([^-]+)-.*"),
  "idc_prefix", "$1", "pod_name", "([^-]+)-.*"
)

上述语句会在查询结果中新增idc_prefix标签,值就是你需要的maejcc100、vacocc100这类前缀,可直接用该标签做过滤、聚合操作。

方案2:采集阶段预生成标签(全局永久生效)

如果前缀需要频繁使用,建议在指标入库前通过metric_relabel_configs预生成新标签,查询时可直接调用,性能更高,配置示例如下:

# 在对应采集job的配置中添加以下规则
metric_relabel_configs:
  # 从job_name提取前缀
  - source_labels: [job_name]
    regex: '([^-]+)-.*'
    target_label: idc_prefix
    replacement: '$1'
    action: replace
  # 兼容只有pod_name的指标,仅当idc_prefix为空时执行
  - source_labels: [pod_name]
    regex: '([^-]+)-.*'
    target_label: idc_prefix
    replacement: '$1'
    action: replace
    if: 'idc_prefix == ""'

扩展说明

如果需要做固定长度截取、其他规则的字符串提取,只需修改正则规则即可:

  • 提取前8位字符:正则改为^(.{8}).*
  • 提取第二个-之前的内容:正则改为^([^-]+-[^-]+)-.*
    Prometheus使用RE2标准正则,常用的字符串匹配、捕获逻辑均支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:24:00