我现在在2s上设置了我的$__interval,因为当我尝试将它设置为1s时,它将不再显示查询。为什么2s是我能去的最低的?
irate(rx_bytes{instance="localhost:2000"}[2s])工作得很好
irate(rx_bytes{instance="localhost:2000"}[1s])查询消失
发布于 2022-06-29 14:47:44
Prometheus以下列方式在时间戳irate(m[d])中计算t:
(t-d .. t]上为每一个名称为m的系列选择原始样本。注意,t-d不包括在时间范围内。(t1, v1)和(t2, v2),其中t1和t2是时间戳,而v1和v2是选定时间范围内最后两个样本的值。irate=(v2-v1)/(t2-t1)。正如您所看到的,如果选定的时间范围至少包含两个原始样本,Prometheus可以计算irate。否则,它返回空结果。因此,在您的示例中,样本之间的间隔(也称为scrape_interval)很可能大于或等于1s。因此,任何时间范围的(t-1s .. t]包含少于两个样本。
解决办法是使用VictoriaMetrics (我从事的项目)。这是一种类似Prometheus的监视解决方案,它在计算irate和rate时考虑到了前面选择的时间范围之前的原始示例,因此它返回方括号中的小型查找窗口的预期结果。详情请参见这篇文章。
在大多数情况下,建议使用rate()而不是irate(),因为irate()不捕获尖峰-它只是根据任意一组原始样本执行计算。详情请参见这篇文章。
https://stackoverflow.com/questions/72753635
复制相似问题