1

我正在监视一个队列以跟踪 Graphite 中错误消息的数量。错误消息处于“错误”的最终状态,因此简单地将计数发送到仪表或计数器不会按预期工作。

为了显示:

minute    path                result
---       ----                ------
1         queue.errors 3000   3000 errors (the baseline)
2         queue.errors 3002   2 errors 
3         queue.errors 3005   3 errors
4         queue.errors 3010   5 errors

有没有办法通过 statsd 或石墨来处理这种指标?错误的队列计数将永远增加,但有意义的值实际上只是自上一个值以来的变化。

我读过关于 statsd 的Gauge Delta的文章,它看起来支持与我需要的相反的东西:

statsd.gauge('foo', 70)  # Set the 'foo' gauge to 70.
statsd.gauge('foo', 1, delta=True)  # Set 'foo' to 71.

但是,我真正需要的是:

statsd.gauge('foo', 70)  # Set the 'foo' gauge to 70.
statsd.gauge('foo', 71, ?????=True)  # Set 'foo' to 1.
4

2 回答 2

2

有趣的是,您应该问,有一个关于在 statsd 中跟踪绝对值并获得导数的能力的持续线程。见https://github.com/etsy/statsd/issues/324

它的要点是 statsd 不支持定义为不断增加的自然整数的计数器。较旧的工具,如 rrdtool,可以,但它们没有提供与 statsd 几乎相同的灵活性。

于 2013-08-06T19:47:00.723 回答
2

如果您想从仪表或计数器值中获取变化率,只需将其包含在导数()nonNegativeDerivate()函数中。

于 2013-09-03T05:38:29.137 回答