【发布时间】:2018-05-10 19:46:35
【问题描述】:
我们有一个带有时间戳t_1、t_2 ... t_n 的时间序列。还有一个指标m,其值为m_1,m_2 ...m_n,用于各自的时间戳。
Metric m 是一个计数器,所以它只会增加。
然后是第二个度量 k,它是根据 m 的两个附近度量计算得出的:
k(n) = m(n) - m(n - 1)
基本上k 表示两个m 测量值之间的差异。
例如:
n | 1 | 2 | 3 | 4 |
m | 10 | 10 | 15 | 16 |
k | 0 | 0 | 5 | 1 |
对 OpenTSDB 或 Bosun 的查询将基于 m 返回 k。
到目前为止,我只发现了rate 功能,但它在显示每分钟速率方面受到限制,并没有显示实际差异。
【问题讨论】:
-
OpenTSDB 中的 rate 函数返回每秒的速率。它通过取值的差异并将其除以时间差异(导数)来做到这一点。没有这样的功能,因为它不假设时间是一致的,并且没有显示差异似乎没有多大用处?你的用例是什么?
-
@KyleBrandt 用例是查看两个数据点之间的差异,无论这些点相距多远。 rate 函数将执行以下操作:
(v2 - v1) / (t2 - t1)。我只想看看(v2-v1)。 -
我理解功能上的差异,我要求提供一个用户故事,说明您为什么要这样做?
-
@KyleBrandt 我有一个有数百万个数字的指标,但它并没有持续增长,但是当它增长时,我想看看它增长了多少。在 0 到 300 万之间的图表上,3 的差异不可见,并且比率 3/30=0.1 并没有告诉我我想知道的信息:指标在 30 秒内或任何时间范围内增长了 3会设置。如果我将间隔设置为天,它将在指标中显示每天的差异。
-
@m3nthal 我有同样的用例。我有一个在 grafana 中显示的指标图表。无论时间序列中的第一个值 (v1) 是什么,我都希望将值绘制在 0、0 处。我希望将最后一个值 v(n) 绘制在 n、v(n ) - v(1)。在这种情况下,该值是发生的错误数,我基本上看到自 V1 指定的时间以来发生了多少次。