Как я могу получить граф накопленных графов с statsd и графитом?

Я использую statsd (последняя версия из ветки git master) с графитом (0.9.10) в качестве бэкэнда.

В моем (Джанго) коде я звоню statsd.incr("signups") когда пользователь регистрируется. В веб-интерфейсе графита я теперь вижу красивый график, показывающий количество регистраций в секунду в Graphite/stats/signups. Когда я смотрю на график в Graphite/stats_counts/signups, я ожидаю увидеть общее количество регистраций, но похоже, что это количество регистраций за интервал 10 с (я полагаю, это интервал обновления statsd).

Я настроил storage-aggregation.conf может я что-то не так понял? Также я остановил карбон (не с stop, но на самом деле убил его, так как, по-видимому, просто остановка не позволяет перезагрузить конфигурацию). Я также удалил /opt/graphite/storage/whisper/stats_counts каталог. Затем я перезапустил углеродного демона. Я все еще получаю количество регистраций за интервал 10 с.:-(

Вот моя конфигурация:

# /opt/graphite/conf/storage-aggregation.conf

[lower]
pattern = \.lower$
xFilesFactor = 0.1
aggregationMethod = min

[upper]
pattern = \.upper$
xFilesFactor = 0.1
aggregationMethod = max

[upper_90]
pattern = \.upper_90$
xFilesFactor = 0.1
aggregationMethod = max

[count]
pattern = \.count$
xFilesFactor = 0
aggregationMethod = sum

[count_ps]
pattern = \.count_ps$
xFilesFactor = 0
aggregationMethod = sum

[sum]
pattern = \.sum$
xFilesFactor = 0
aggregationMethod = sum

[sum_90]
pattern = \.sum_90$
xFilesFactor = 0
aggregationMethod = sum

[stats_counts]
pattern = ^stats_counts\.
xFilesFactor = 0
aggregationMethod = sum

[min]
pattern = \.min$
xFilesFactor = 0.1
aggregationMethod = min

[max]
pattern = \.max$
xFilesFactor = 0.1
aggregationMethod = max

[default_average]
pattern = .*
xFilesFactor = 0.5
aggregationMethod = average

И это:

# /opt/graphite/conf/storage-schemas.conf

[stats]
priority = 110
pattern = ^stats.*
retentions = 10s:6h,1m:7d,10m:1y

Я начинаю думать, что я все сделал правильно и что Graphite действительно делает то, что должен делать. Итак, вопрос:

Как правильно настроить statsd & graphite для отображения общего числа регистраций с начала времен?

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

Редактировать:

Используя веб-интерфейс Graphite, в Graphite Composer я применил integral Функция для базового графа "число регистраций в секунду" (в Graphite/stats/signups), и я получил желаемый график (то есть общее количество регистраций). Это подходящий способ получить накопленный график? Это раздражает, потому что мне нужно выбрать полный диапазон дат с начала времени, я не могу увеличить график, иначе я просто получаю интеграл от увеличенной части.:-(

1 ответ

Да integral() Функция является правильным способом сделать это. Так как в этом отношении StatsD не имеет состояния (все собранные данные сбрасываются / удаляются после сброса в графит), у него нет возможности суммировать все полученные данные с определенной точки.

Из графитовой документации integral() функция:

This will show the sum over time, sort of like a continuous addition function. Useful for finding totals or trends in metrics that are collected per minute.

Другие вопросы по тегам