【问题标题】:Prometheus+grafana: How to graph events per time slotPrometheus+grafana:如何绘制每个时隙的事件
【发布时间】:2020-12-22 07:34:45
【问题描述】:

我一直在努力在 grafana 中创建一个图表,该图表显示每 x 单位时间的事件数,例如 1 分钟、5 分钟、30 秒等。只是为了说明我在寻找什么,请参见下图:

我想要一个图表,在 X 轴上显示时隙(例如 5 分钟时隙、5.30-5.35、5.35-5.40 等等....),Y 轴显示每个时隙的事件。

我已经配置了一个计数器,我可以使用 prometheus 的增加函数来查找一段时间内(比如 1m)的事件增量:

增加(mycounter[1m])

但是生成的图表不像我想要的那样。它提供了更多随时间窗增加的平均值,而不是每个时间窗的精确增加。

这可以实现吗?

【问题讨论】:

    标签: prometheus grafana


    【解决方案1】:

    由于 Prometheus rateincrease 的工作方式,您永远不会在每个时间窗口中获得确切的增加。

    一旦 Grafana 7.2 发布,通过将 Grafana 中的 min step 设置为您喜欢的任何窗口步骤,并将查询本身中的范围选择设置为 $__interval$__rate_interval,您将非常接近您想要的。但是考虑一下,一旦你缩小到足够远,如果没有足够的像素来适应所有“窗口”,窗口就会开始增长。此外,最小步长和范围完全相同会导致增加丢失。 $__rate_interval 解决了这个问题。

    编辑:

    从 Grafana 到 Prometheus 的查询包含一个步骤参数,Prometheus 在给定时间范围内“逐步执行”。对于每个步骤,都会评估相应的查询,例如 rate(counter_total[5m])。最小步长是 Grafana 的下限。您可以在其他几个位置定义类似的内容。例如,在您设置抓取间隔的数据源设置中。

    最终使用的实际步长值是根据许多其他因素计算得出的。例如可用的像素数。但是您也可以将所需的总步数固定为 10。这就是 $__interval 的用武之地。它基本上将步长与速率范围同步,并确保您始终拥有尽可能高的分辨率,同时防止欠压和过度获取。缺点:图形可能会变得非常尖锐和嘈杂,您可能更喜欢 5/10/15m 速率的外观。此外,如果您的速率范围与步骤完全相同,您可能会丢失数据的增加。但是对于固定的速率范围和足够大的时间范围也是如此。 $__rate_interval 通过始终将抓取间隔添加到范围选择器来解决此问题。

    再次,我推荐观看https://www.youtube.com/watch?v=09bR9kJczKM

    【讨论】:

    • 你能解释一下 min step 在内部是如何工作的吗? $__internal 实际上是从哪里取值的?
    • 如果你有时间,我推荐这个来自 GrafanaCONline 2020 的视频/网络广播。它很好地解释了它。我也会在我的答案中添加一点
    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 2020-02-12
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2021-10-27
    • 2022-01-02
    相关资源
    最近更新 更多