在Graphite中按时间间隔拆分计数度量值

时间:2013-10-08 16:22:37

标签: graphite

我有一个计数器指标,我将其称为a.metric.count

当正常绘制时,这将是一个不断增加的向上线,这不是那么有用。我想要的是显示每小时发生的事件数量。

3 个答案:

答案 0 :(得分:8)

使用derivative功能,如下所示:http://graphite.readthedocs.org/en/1.0/functions.html#graphite.render.functions.derivative

那将在每个数据点显示从前一个时间序列数据点增加的值。

如果您想每小时查看一次,可以使用summarize,如下所示:http://graphite.readthedocs.org/en/1.0/functions.html#graphite.render.functions.summarize

因此,要查看.count的每小时增长,您可以这样做:

summarize(derivative(a.metric.count), "1hour")

答案 1 :(得分:2)

同样使用diffSeries,但会产生一些更好的图表:

diffSeries(
    sumSeries(a.metric.count),
    sumSeries(timeShift(a.metric.count, "1h"))
)

如果你想避免结束尖峰,你可以使用双重偏移:

diffSeries(
    sumSeries(timeShift(a.metric.count, "1h")),
    sumSeries(timeShift(a.metric.count, "2h"))
)

请记住,使用此方法,您将落后于较小的偏移量。

答案 2 :(得分:0)

首先,我们需要两个不同的图表:

  • a.metric.count
  • timeShift(a.metric.count, "1h")

接下来,我们需要按小时汇总这些,使用每小时记录的最后一个值:

  • summarize(a.metric.count, "1h", "last")
  • summarize(timeShift(a.metric.count, "1h"), "1h", "last")

现在我们只需要显示两个图表之间的区别:

diffSeries(summarize(timeShift(a.metric.count, "1h"), "1h", "last"), summarize(a.metric.count, "1h", "last"))

这种方法的唯一问题是最近一小时的数据是错误的,因为非时移图上没有“最后”值,这意味着图表会出现峰值