大概是一周前遇到这个问题,我期望通过 delta(process[5m])
来统计5m内process失败的数量,从在阅读了文档之后我确认这句PromQL是正确的,符合我的需求的(数据比较特殊,每一个metric都只有1,我期望在metric范围外为0,这样delta可以计算到得到1)。
情况大概是这样
data为[2, 2, 7, 7, 7, ...]
但是做1m的delta之后会得到[10, 10, 0, 0, 0, ...]
甚至于2m的delta曲线更奇怪
看到2m的曲线就可以判断是prometheus的推断导致的了,具体可以看 link
但奇怪的是在线上环境类似语句工作良好,与预期相符。
经过很长时间的搜索,才找到 victoria的这个issue
简单来说就是同样的PromQL在victoria和prometheus的返回结果是不一致的,原因是prometheus使用了推断(并且这个特性无法关闭),victoria的实现方式与其不一致。
然后去线上看了一下,grafana使用的数据源就是来自victoria的...
所以最终解决方案就是使用第三方tsdb查询,prometheus并未提供精确的计算函数(有pr,但被驳回了)
本文由 hunsh 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Aug 23, 2022 at 04:04 pm