我有一个计数器指标,我称之为a.metric.count
当正常绘制时,这将是一条不断增加的向上线,这不是那么有用。我想要的是显示每小时发生的事件数量。
使用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")
也使用 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"))
)
请记住,使用这种方法,您将落后于较小的偏移量。
首先,我们需要两个不同的图表:
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"))
这种方法的唯一问题是最近一小时的数据是错误的,因为非时移图上没有“最后”值,这意味着该图会出现峰值