博客/工程

新Grafana 7.2:普罗米修斯__rate_interval美元汇率查询,只是工作

2020年9月28日6分钟

我应该使用什么范围率()吗?不仅是一个真正的标题经典许多有用的健壮的知觉的博客文章;也是最常见问题之一PromQL时,普罗米修斯查询语言。我做了我的主要话题在2020年GrafanaCONline的演讲我邀请你看如果你还没有准备好。

让我们先把好消息:Grafana 7.2只发布上周三,引入一个新的变量__rate_interval美元。在大多数情况下图形查询,这将是正确的选择,简单地使用__rate_interval美元的范围内。

让我们更深入的潜水有点理解这个主题__rate_interval美元能选择正确的范围内。

在我的演讲和RP的博客文章,你会发现两个重要内容:

  1. 在一个范围查询应该刮间隔至少四次。
  2. 图形与Grafana,变量__interval美元是真正有用的指定范围查询。

让我们创建一个典型Grafana面板查询,例如,找出多少样品每秒钟我们普罗米修斯服务器吸入(我喜欢使用普罗米修斯监控普罗米修斯):

这工作得很好。但是如果我们放大很多吗?让我们从上面的两天只有一个小时。

结果非常令人失望:“没有数据”!原因是我们已经违反了上面列出的第一个外卖。的__interval美元变量扩展到两个图中数据点之间的时间。Grafana有助于告诉我们关于面板编辑器中的值,标志着在上面的截图。正如您可以看到的,间隔只有15秒。普罗米修斯服务器配置了刮间隔15秒,所以我们应该使用至少1米查询。但我们使用的是只有15年代在这种情况下,因此,量程选择器将只讨论一个样本在大多数情况下,计算是不够的

让我们解决这种情况通过设置分钟步四次刮间隔,即1 m:

这种方法是目前推荐的最佳实践。,它工作得非常好,但有两个问题:

  1. 它需要你填写分钟步在每一个小组使用查询。
  2. 它限制的决议Grafana请求从普罗米修斯的评价结果。有人可能会认为它没有很多意义请求在1米分辨率高于每分钟一个数据点。高分辨率实际上导致了移动平均线。但一些用户想要的东西。

__rate_interval美元变量地址的上面的问题。让我们删除分钟步再次输入和改变__interval美元__rate_interval美元:

现在看起来不错。上述移动平均效应甚至揭示了一些高分辨率结构不可见。(箴提示:如果你想要流畅的图之前,不要绝望。刚刚打开查询选项并设置一个最小时间间隔1米)。

是什么魔法__rate_interval美元吗?它仅仅是保证至少四次刮间隔,无论它是什么。但它是如何知道刮间隔是什么吗?这实际上是一个很好的问题,因为普罗米修斯本身只知道刮刮间隔,不存储当前配置间隔用于历史数据。(也许这在未来将会改变,但这是一个故事一天。)Grafana只能依靠普罗米修斯的刮间隔配置数据源。如果你打开设置的普罗米修斯数据源,你会发现的刮间隔下半部分字段:

建议你使用相同的刮在整个组织中间隔。如果你这样做,很容易就填在这里。(默认值是15 s。)但做什么如果你有奇怪的度量,用不同的刮刮间隔?在这种情况下,使用分钟步场进入特殊的刮间隔,一切都会再次工作。(箴提示:注意最小时间间隔设置在查询选项不改变使用的刮间隔__rate_interval美元计算。你可以使用它来得到低分辨率图不改变假定刮间隔)。

但这还不是全部。__rate_interval美元解决了另一个问题。如果你看看缓慢移动柜台,你有时可以观察到一个奇怪的效果。让我们来prometheus_tsdb_head_truncations_total作为另一个度量普罗米修斯自我暴露。头截断在普罗米修斯发生每两个小时,可以很好地看到的图形原始计数器:

因为我们看较长时间范围,旧的__interval美元应该工作的。让我们试一试:

这是令人惊讶的。我们会每两个小时预期高峰之一。失踪的峰值的原因是微妙:变速杆在PromQL只看样品严格在规定范围内。与__interval美元,范围是完全一致的;即。范围的,最后一个数据点的范围的开始下一个数据点。然而,这意味着增加之间的最后一个示例第一范围和样本在接下来的范围是从来没有任何考虑的计算。的坏运气,你感兴趣的一个重要的计数器增加被这种效果了。最后提到的说话,你可以享受一个更详细的解释的问题,为此,在谈话,承诺__rate_interval美元再一次提供了一个解决方案:

这魔法是很简单仔细检查。__rate_interval美元扩展了一般__interval美元由一个刮区间的范围重叠就足以确保完全覆盖所有的计数器增加。(注意,优点:这只擦伤发生在预定的时间点。抖动越多,就越有可能遇到问题了。不幸的是没有单一的最佳方式处理延迟或丢失擦伤。这个话题再一次另一个故事了…)

美妙的Grafana文档总结这篇文章的整体内容很简洁:“__rate_interval美元变量是[…]定义为马克斯(__interval美元+刮间隔4 *刮间隔),刮间隔分钟步设置[…],如果任何设置,否则刮间隔普罗米修斯的设置数据源(但忽略所有最小时间间隔设置[…])。”

的好处__rate_interval美元:即使你没有完全理解的每一个方面,在大多数情况下,它应该对你“工作”。如果你还遇到奇怪的问题,那么你就希望书签这个博客回到它,加深你的理解。

今天下载或者尝试Grafana 7.2在云中