Графитовые метрики показывают неправильные результаты

Я использую Graphite с Codahale для записи показателей с моего Java-сервера. У меня есть код блока, который выглядит примерно так:

public void foo() {
  try (Timer.Context ignored = myTimer.start()) {
    // Some code
  }
}

Когда я смотрю на сегодняшнее количество событий (каждый таймер также является счетчиком), я вижу, что у нас около сотни событий в минуту, что означает несколько тысяч в час. Когда я расширяю диапазон дат, чтобы включить вчерашний день, я вижу, что результаты находятся в диапазоне миллионов, и я не мог понять, почему.

Результаты отображаются после операции nonNegativeDerivative над метрикой

Сегодняшние результаты:

Сегодня

По результатам вчерашнего дня:

введите здесь описание изображения


person Avi    schedule 07.03.2017    source источник
comment
Графики выше не похожи на графики счетчиков. Счетчики обычно монотонно увеличиваются, и вам нужно применить функцию nonNegativeDerivative() в Graphite, чтобы получить точное количество вызовов в минуту (в соответствии с вашим метрическим интервалом).   -  person deniszh    schedule 07.03.2017
comment
Вы правы, это после применения nonNegatvieDerivative(). Редактирование.   -  person Avi    schedule 07.03.2017
comment
Тогда я подозреваю, в чем твоя проблема. Вы должны применять сумму производных (sumSeries(nonNegativeDerivative(...))), а не производных сумм - jilles.net/perma/2013/08/22/   -  person deniszh    schedule 07.03.2017


Ответы (2)


Если вы используете nonNegativeDerivative(), сначала примените производную, а затем sumSeries(), а не наоборот. Пожалуйста, проверьте http://www.jilles.net/perma/2013/08/22/how-to-do-graphite-derivatives-correctly/

Кроме того, вам необходимо настроить правильную агрегацию (сумму) для счетчиков, как описано в http://obfuscurity.com/2012/05/A-Precautionary-Tale-for-Graphite-Users

person deniszh    schedule 07.03.2017

вы не хотите использовать сумму на счетчиках dropwizard. Вы хотите использовать «последний», они увеличивают уменьшающиеся датчики. Вам также нужны perSecond() и hitcount(10s) вместо производной.

http://graphite.readthedocs.io/en/latest/functions.html#graphite.render.functions.perSecond

person Timothy Ehlers    schedule 05.04.2017