Grafana多值变量搭配avg()函数查询异常求助
解决Grafana多选变量下Prometheus avg()聚合过度的问题
核心修改:给avg()函数加上
by(label1, label2)子句,让Prometheus按你需要的标签维度分别计算平均值,而非将所有匹配序列聚合为单一值。
修改后的查询示例:avg(metric{label1="$label1",label2=~"$label2",label3=~"$label3"}) by(label1, label2)原理说明:
默认情况下,Prometheus的avg()函数会移除所有标签,将所有符合条件的时间序列聚合为一个单一平均值。加上by(label1, label2)后,会保留这两个标签的组合,对每个唯一的(label1, label2)配对分别计算平均值,这样就能得到你期望的host1-host4 10%、host2-host5 15%这类分维度的结果。适配多选和ALL选项:
这个修改完全兼容多选和ALL变量模式——当你选择多个标签值或ALL时,变量会自动展开为对应的匹配规则,by子句依然会按每个(label1, label2)的唯一组合独立聚合,不会出现所有结果揉在一起的情况。额外提示:
如果你还需要保留其他标签维度(比如label3的某些值),可以把对应的标签也加到by的括号里,比如by(label1, label2, label3),确保每个你需要区分的维度都被包含进去。
内容的提问来源于stack exchange,提问作者Sammi
相关产品推荐
相关产品推荐

