Как я могу получить граф накопленных графов с 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.