Хранение постоянно растущей стоимости в Graphite

Я отслеживаю очередь, чтобы отслеживать количество сообщений об ошибках с течением времени в 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 или graphite обрабатывать такие показатели? Количество ошибок в очереди будет увеличиваться навсегда, но на самом деле значимое значение — это только изменение с момента последнего значения.

Я читал о Gauge Delta от statsd, который поддерживает напротив того, что мне нужно:

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.

person Nathan Skerl    schedule 05.08.2013    source источник


Ответы (2)


Забавно, что вы спросили, есть постоянная ветка о возможности отслеживать абсолютные значения в statsd и получать производные. См. https://github.com/etsy/statsd/issues/324.

Суть в том, что statsd не поддерживает счетчики, определенные как постоянно увеличивающееся натуральное целое число. Старые инструменты, такие как rrdtool, это делают, но они не предлагают такой же гибкости, как statsd.

person Alexis Lê-Quôc    schedule 06.08.2013

Если вы хотите получить скорость изменения из значения манометра или счетчика, просто заключите его либо в derivative() или nonNegativeDerivate().

person Dave Wongillies    schedule 03.09.2013