如何让Grafana先执行变量运算再应用范围向量函数?
修复PromQL count_over_time的「范围向量不允许使用标量」报错
为啥原来的查询不行
你写的count_over_time((metric <$variable) [$__range])犯了PromQL语法的错:
metric < $variable算出来的是瞬时向量——只拿当前时间点的指标值和变量比,只有一个结果- 给瞬时向量硬加
[$__range]想扩成时间范围的向量,Prometheus根本不允许这么干,所以直接报错
正确的查询写法
得先把指标的整个时间范围数据拿出来,再逐个和变量比较,最后统计次数,改成这样:
count_over_time((metric[$__range] < $variable))
拆解下逻辑
metric[$__range]:先把Grafana选的时间范围内的所有指标样本都拉出来,形成范围向量< $variable:对每个样本值和变量$variable做比较,满足条件的样本会变成1,不满足的是0,结果还是范围向量count_over_time(...):统计这个范围向量里值为1的样本数量,就是你要的这段时间内指标小于变量的次数
额外提醒
不用费劲用${__from}和${__to}拼时间范围,$__range已经对应UI上选的时间跨度,上面的写法会自动适配。
内容的提问来源于stack exchange,提问作者John Carlton
相关产品推荐
相关产品推荐

