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

Is anybody using $__interval for range selection over fixed values?

在 PromQL 中,我们使用范围向量选择器来获取 rate() 等函数的范围向量。 Grafana 提供了动态变量$__interval,它的用法是这样的:

sum(rate(my_metric{foo="bar"}[$__interval]))

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

到目前为止一切顺利。但是查看 Grafana Cloud 中可用的多个仪表板,或者例如 Robust Perception 的演示仪表板,没有人在使用 $__interval。相反,即使没有使用记录规则或警报,人们也会选择 1m5m

这有什么原因吗?

$__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天,那么一些原始数据点将在计算中丢失。