【问题标题】:Prometheus + Grafana - graph data shifted by 2 minutes?Prometheus + Grafana - 图形数据移动了 2 分钟?
【发布时间】:2019-03-31 17:28:57
【问题描述】:

我让 prometheus 每隔1m 从我的 API 服务器抓取请求延迟的直方图。

然后我将直方图可视化为 Grafana 中的热图。它看起来像这样:

我的查询是:

sum(http_request_duration_seconds_bucket) by (le) 
- 
sum(http_request_duration_seconds_bucket offset 1m) by (le)

我对此的理解是:获取相关时间的存储桶向量并在获取该分钟的存储桶向量前 1 分钟减去存储桶向量(直方图累积并且每次刮擦都不会清除它们的存储桶)

但问题是,查看我的请求日志,我看到了:

...
13:56:13 GET 304 3 ms
13:56:18 GET 304 4 ms
13:56:18 POST - -
13:56:23 GET 304 4 ms
13:56:28 GET 304 0 ms
13:56:32 GET 304 3 ms
13:56:38 GET 304 6 ms
13:56:42 GET 304 4 ms
13:56:48 GET 304 9 ms
13:56:53 GET 304 2 ms
13:56:54 POST - -
13:56:58 GET 304 2 ms

13:57:01 GET 200 2 ms
13:57:03 GET 304 6 ms
13:57:08 GET 304 4 ms
13:57:12 GET 304 3 ms
13:57:18 POST - -
13:57:21 GET 304 8 ms
13:57:21 GET 304 8 ms
13:57:23 GET 304 4 ms
...

如您所见,“Inf”运行时的第一次请求是在 13:56,但如果我们查看直方图,直到 13:58

为什么数据会偏移 2 分钟?

【问题讨论】:

    标签: grafana prometheus


    【解决方案1】:

    我想我可以解释延迟。有两个方面在起作用:

    • 我错误地认为 prometheus 会保留各个事件的时间戳。相反,直方图中的数据是在刮击命中的那一刻收集的,并且数据被标记为发生在那个时刻。

    • 我忘记了我自己的检测的详细信息 - 我使用 prometheus 客户端库将数据点添加到直方图度量中在请求完成的那一刻(怎么可能其他方式?我们想知道延迟!)

    因此,如果13:56:18(第一个长时间运行的请求)的请求数据在请求返回的那一刻(该点之后超过 30 秒)被添加到直方图中,例如在13:57:15,然后抓取时间是:[13:56:1013:57:1013:58:10],然后开始13:56:18的请求最终将成为13:58抓取的一部分。

    【讨论】:

      【解决方案2】:

      在您编辑面板时,Grafana 有一个 查询检查器 按钮。您可以使用它来查看 Prometheus 返回的确切响应,并确定转移是由 Grafana 还是由 Prometheus(或两者)引入的。

      我可以在 Prometheus 端看到这种情况发生的一个可能原因是抓取分辨率。如果你每分钟只刮一次,那么可能需要一分钟才能看到增加(平均延迟是那个的一半)。此外,如果您记录了处理抓取数据的规则并且您正在显示所述记录规则的结果,这也会增加延迟。

      因此,对于 1 分钟的抓取间隔和 1 分钟的评估间隔,您可以看到 0 到 2 分钟之间的任何变化(甚至在考虑由于慢速目标和/或过载 Prometheus 实例引起的抖动之前)。

      编辑:差点忘了,您很可能还想使用increase/rate 而不是减法,以便很好地处理实例重启。 (不幸的是,increase/rate 会按照与范围除以抓取间隔成正比的量来扭曲您的指标,并错过一些样本,但您必须选择毒药。)

      【讨论】:

      • 感谢您的详细回复!我认为,您通过考虑刮擦时间为我指明了正确的方向。此外,关于增加/费率的建议总体上是好的。你能检查我的答案,看看它是否有意义?
      • 另外,虽然我有机会问一下,您认为backfilling time-series 实施后可能会改善这种情况吗?我可以以某种方式告诉系统将请求放入它们发起的时间片中,而不是放入它们完成/被抓取的时间片中?
      猜你喜欢
      • 1970-01-01
      • 2021-03-20
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 2018-04-18
      • 2020-05-26
      • 2023-03-22
      相关资源
      最近更新 更多