在 Graphite 中绘制事件值

Plot event values in Graphite

我们想使用 Graphite 绘制与 "a packet of N messages has been published" 等事件相关的值。当没有数据包发布时,根本就没有代码 运行,所以我们不能向 Graphite 发送零。

本质上,我们想计算某种每秒的发布率。

以下是我们发送给 Graphite 的一些示例数据(添加了时间戳):

2016-11-28 14:46:33.6338Z   api.message.publication.count:100
2016-11-28 15:01:36.0780Z   api.message.publication.count:12
2016-11-28 15:01:36.9911Z   api.message.publication.count:1
2016-11-28 15:01:37.0679Z   api.message.publication.count:100

在 14:46:33 和 15:01:36 之间,没有发送任何消息。但是,在 15:01:36 和 15:01:37 之间,发送了 13 条消息(报告为两个值,12 和 1)。

我试过 summarize() 函数,但它没有给出对我有意义的结果,即我无法将我发送到 Graphite 的内容与 Graphite 显示的内容相关联。此外,summarize() 似乎不支持 1 秒间隔(我已经尝试将“1second”和“1s”作为间隔参数)。

perSecond()函数计算变化率(即导数)但我们发送的已经是一种导数(也许它更接近狄拉克三角洲?)所以它不会在我们的上下文中有意义。

我们是否完全脱离了,或者有没有办法使它与 Graphite 一起工作?


编辑:我想我们需要为我们的数据添加一个聚合阶段。 Carbon 聚合是否适合这里的要求?

事实证明,我们已经将指标发送到 statsd,它支持通过 c 指标类型进行聚合,以及其他一些漂亮的东西:https://github.com/etsy/statsd/blob/master/docs/metric_types.md