Накопление стоимости в графите

Я отправляю одно сообщение каждый раз, когда пользователь подключается к моему сайту.

В этом формате:

"user_login 1 13xxxxxxx"  (key value timestamp)

Моя проблема - Graphite дает мне график с одной строкой со значением "1", каждую минуту. Я посылаю случайное количество сообщений каждую минуту (от 6 до 60), но я думаю, что Графит ограничивает первое (или последнее?) Сообщение, чтобы отобразить значение.

Как сделать, чтобы иметь сумму каждого сообщения каждую минуту?

Ответ 1

Вы также можете попробовать использовать службу агрегации углерода, чтобы агрегировать показатели, когда они собираются, а не в графическом интерфейсе. См. http://graphite.readthedocs.org/en/latest/config-carbon.html#aggregation-rules-conf для настройки правила агрегации. Обратите внимание, что вам необходимо отправить метрику на сервисный порт агрегации углерода, который работает в другом порту, чем обычный порт коллектора углерода.

Ответ 2

Вам может быть интересно запустить statsd или statsite на вашем графитовом сервере. Это программное обеспечение будет собирать всю статистику за определенный период времени и записывать результат в графит.

Посмотрите на github.com/etsy/statsd (в node.js) и github.com/kiip/statsite (клон python). Etsy statsd содержит несколько примеров кода о том, как его использовать.

Ответ 3

используйте sumSeries target = sumSeries (имя графита .counterName) или суммируйте функцию, если вы хотите суммировать более одной минуты

Ответ 4

Яри верен, для этого был специально составлен агрегатор углерода.

Убедитесь, что вы используете функцию sum в aggregation-rules.conf, например:

bpu.<cluster>.<account>.<metric>_sum (1) = sum bpu.<cluster>.<account>.<metric>_sum

Ответ 6

Это также может быть так, как ваши данные агрегируются на метрику, по умолчанию это средние значения, которые могут быть не такими, какие вы ожидаете. См. Также Отслеживание показателей с помощью StatsD (через etsy) и Graphite, графический граф, похоже, не отображает все данные.

Ответ 7

Используйте кумулятивную функцию в своей серии.

По умолчанию при рисовании графика и ширине графика в пикселей меньше, чем число точек данных, подлежащих графике, Графит усредняет значение для каждого пикселя. Функция cumulative() изменяет функцию консолидации на сумму из среднего значения.

Ответ 8

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

однако, вы также можете использовать агрегат углерода. просто убедитесь, что вы отправляете свои показатели на линейный порт агрегатора, а затем обновляете aggregation-rules.conf с таким правилом:

user_login (10) = sum user_login$

Примечание: предполагается, что ваш минимальный период хранения еще 10 секунд (по умолчанию) вы можете подтвердить это, посмотрев в файле storage-schemas.conf

для более подробного объяснения, см. Зачем использовать statsd, когда агрегат углерода графита может выполнять ту же работу?