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

如何在PromQL中从query标签提取SELECT语句中的表名?

从Prometheus指标的query标签提取表名的方法

你可以使用Prometheus内置的label_replace函数,结合正则表达式提取query标签中的表名。

基础实现

通过正则捕获表名部分,生成新的table_name标签存储结果:

label_replace(query_duration, "table_name", "$1", "query", "SELECT \\* FROM (.*)")

参数说明:

  • query_duration:你的目标指标名称
  • "table_name":新增的标签,用于存放提取出的表名
  • "$1":引用正则匹配到的第一个分组内容(即我们需要的TABLE_NAME)
  • "query":指定要处理的目标标签
  • "SELECT \\* FROM (.*)":正则表达式,(.*)负责捕获FROM之后的表名部分,注意星号*需要用反斜杠转义

适配格式差异的严谨正则

如果SQL语句存在多余空格或格式变化,可以用更精确的正则匹配:

label_replace(query_duration, "table_name", "$1", "query", "^SELECT\\s+\\*\\s+FROM\\s+(.*)$")

这个正则会匹配:

  • ^SELECT:以SELECT开头(需要忽略大小写的话,可加(?i)前缀,比如(?i)^SELECT\\s+\\*\\s+FROM\\s+(.*)$)
  • \\s+:匹配任意数量的空格
  • (.*)$:捕获到字符串结尾的表名部分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:52:06