有人使用 $__interval 来选择固定值的范围吗?

tra*_*nag 2 grafana prometheus

在 PromQL 中,我们使用范围向量选择器来获取诸如 之类的函数的范围向量rate()。Grafana 提供了动态变量$__interval,其使用方式如下:

sum(rate(my_metric{foo="bar"}[$__interval]))
Run Code Online (Sandbox Code Playgroud)

它的值是一个近似值,因此生成的范围向量包含大约每个像素(或更多)的一个条目。据我了解,这可以防止过度获取。

到目前为止,一切都很好。但看看 Grafana Cloud 中可用的多个仪表板或例如 Robust Perception 的演示仪表板,没有人使用$__interval. 相反,人们选择1m5m即使不使用记录规则或警报。

这是有原因的吗?

val*_*ala 5

$__interval对于可以放大/缩小的图表很有用。在这种情况下,Grafana 会自动调整$__interval当前的缩放级别。例如,$__interval=15s用于15s*1000=~4 hours时间范围内的图表(1000 是 Grafana 构建图表时请求的每个时间序列的近似点数;对于水平分辨率高达 4000 像素的显示器来说,这通常足够了),而$__interval=1h用于随时间变化的图表1h*1000=~40 days。这允许在构建图表时考虑原始时间序列中的所有原始数据点。

如果方括号中使用固定5m值,则图表的准确性可能会在小于 的时间范围内受到影响5m*1000=~3.5 days。如果图表的时间范围超过 3.5 天,则计算中将丢失一些原始数据点。

  • 有两个原因:1)“$__interval”仅在 Grafana 中受支持 - 它不是 PromQL 的一部分。因此,其中包含“$__interval”的查询无法复制到警报或记录规则。2) `$__interval` 值在短时间范围内可能会变得太小。这可能会破坏一些图表。例如,参见 https://www.percona.com/blog/2020/02/28/better-prometheus-rate-function-with-victoriametrics/ (2认同)