Prometheus中如何正确显示频率为15秒的数据?

问题描述 投票:0回答:1

我需要统计15秒内向后端发出的请求数。客户端使用 javascript (setInterval) 每 15 秒发送一次请求。我有一个指标来计算对后端的请求数量。

# TYPE backend_counter_total counter
backend_counter_total{project_id="333",} 212.0

使用 1 分钟间隔时一切正常。它正确显示 1 分钟数据,代码为:

increase(backend_counter_total[1m])

但是如果间隔降低到15秒

increase(backend_counter_total[15s])

每一步后,图表都会因归零而损坏。我不知道如何解决这种情况并使图表以 15 秒的间隔变得平滑。

prometheus grafana promql
1个回答
0
投票

increase
rate
irate
函数的工作方式是获取给定时间间隔内的数据点,然后如果其中至少有two样本,则进行插值。 在评估每个点以生成派生时间序列时都会执行此操作。

如果您每 15 秒抓取一次指标,您将大约每 15 秒 但不完全是 获得一个样本。这种区别对于理解为什么您看到的图表不一致非常重要。 当尝试使用 15 秒的间隔获取派生指标时,prometheus 会发现一些间隔有两个样本,而其他间隔则只有一个样本。在前者中,您会看到数据,但在后者中您不会看到数据,因为它无法从单个样本中推断出值。

当使用 1 分钟间隔时,在每个评估间隔内收集 2 个样本的几率非常高,因此会生成一致的时间序列。

这就是普罗米修斯建议对任何这些派生指标使用至少 4 倍抓取间隔的时间间隔的原因。 尽管实际上,如果您没有得到任何水滴,则 2 或 3 倍的刮擦间隔将产生一致的结果。

结论是,如果您需要 15 秒的分辨率,则需要将抓取间隔降低到至少 5 秒。

© www.soinside.com 2019 - 2024. All rights reserved.