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

如何编写支持多变量选择的PromQL实现指定流量异常检测?

支持多变量的异常检测PromQL实现

直接使用以下PromQL即可满足需求,支持$My_Name多选且保留所有标签:

(bool changes(my_bytes_in{My_Name=~"$My_Name"}[5m]) > 0) * (bool changes(my_bytes_out{My_Name=~"$My_Name"}[5m]) == 0)

逻辑说明

  • changes(metric[5m]):统计指标在过去5分钟内的样本变化次数,次数>0表示指标有波动,=0表示指标完全无变化
  • bool 比较表达式:将比较结果转换为布尔值(满足条件返回1,不满足返回0),同时保留原时间序列的所有标签
  • 两个布尔值相乘:仅当my_bytes_in有变化和my_bytes_out无变化两个条件同时满足时结果为1,其余情况为0
  • My_Name=~"$My_Name":通过正则匹配支持变量多选,会自动展开所有选中的My_Name值,每个实例独立计算结果

原写法问题解析

你之前用vector()导致标签丢失,是因为vector()会生成不带任何标签的单一时间序列,无法区分多实例。上面的写法全程基于原指标标签计算,每个实例的结果都会独立保留标签,多选时会返回对应多条曲线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:25:13