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

如何用正则结合Prometheus向量匹配关联不同端口的实例指标?

解决方案:通过PromQL的label_replace函数实现主机名前缀关联

可以利用PromQL内置的label_replace函数,给两个指标生成仅包含主机名前缀的新标签,再基于这个新标签完成关联过滤。具体实现如下:

最终查询语句

label_replace(memory_used{tenant="1000", job="main"}, "host", "$1", "instance", "^(.{9}):.*") 
and on(host) 
label_replace(instance_operating_state{group="B", job="main"} == 0, "host", "$1", "instance", "^(.{9}):.*")

语句说明

  1. label_replace函数作用:该函数可对指标标签做正则替换生成新标签,参数含义:

    • 第一个参数:目标指标
    • 第二个参数:新标签名称(这里定义为host)
    • 第三个参数:替换后的标签值($1代表正则捕获的第一个分组内容)
    • 第四个参数:要处理的原标签(这里是instance)
    • 第五个参数:正则表达式,^(.{9}):.*用于捕获开头固定9位长度的主机名前缀(匹配冒号前的部分),忽略后续端口内容
  2. 关联逻辑:先给memory_used和过滤后的instance_operating_state == 0都生成host标签,再通过on(host)指定基于新标签关联,绕过原instance标签的端口差异,实现仅按主机名前缀匹配过滤。

  3. 适配固定前缀长度:正则中的.{9}对应你提到的固定长度前缀,根据实际前缀长度调整数字即可。

该方案完全依赖PromQL原生语法,无需修改数据源配置,也不需要Grafana插件,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:21:05