2015-03-09 2 views
1

углерода схема храненияагрегация шепота не работает для старых точек данных

[default] 
pattern = .* 
retentions = 5m:15d,15m:1y,1h:10y,1d:100y 

хранения агрегации:

[all_sum] 
pattern = .* 
xFilesFactor = 0.1 
aggregationMethod = sum 

Теперь я кормить записи, как:

echo "rec.test 25 $(date --date="-6 minute" +%s)" | nc localhost 2003 
echo "rec.test 50 $(date --date="-3 minute" +%s)" | nc localhost 2003 
echo "rec.test 100 $(date +%s)" | nc localhost 2003 
echo "rec.test 1 $(date --date="-1 year" +%s)" | nc localhost 2003 
echo "rec.test 4 $(date --date="-1 year minute" +%s)" | nc localhost 2003 
echo "rec.test 6 $(date --date="-1 year -1 minute" +%s)" | nc localhost 2003 
echo "rec.test 8 $(date --date="-1 year -2 minute" +%s)" | nc localhost 2003 

На графана графике , Я могу видеть агрегирование (суммарное значение) для последних загруженных значений. Но за 1 год до того, как значения не агрегируются. Фактически только одно значение (последняя запись из окна 1 час) 8 отображается вместо 4 + 6 + 8 = 18.

Что может отсутствовать в конфигурациях?

ответ

1

В агрегаторе углерода хранится буферный механизм, который хранит значения, полученные в течение наилучшего периода хранения, и испускает агрегированное значение.

В вашем примере 5m:15d означает, что буфер будет хранить все точки, полученные за последние 5 минут, и часто выделяет их сумму для углеродного кеша (который будет записываться в файл шепота).

Это объясняет нормальный рабочий процесс точек в графите.

Пример:

Metrics received: 
    hello.world 42 1427615689 (15 minutes ago) 
    hello.world 1 1427615869 (12 minutes ago) 
    hello.world 1 1427615929 (11 minutes ago) 
    hello.world 314 1427616049 (9 minutes ago) 
    hello.world 1 1427616051(~9 minutes ago) 

будет написать 2 очка в приглушения файле:

1427615689 44 (42+1+1) 
1427615989 315 (314+1) 

Однако буфер dropped, когда первая точка буфера старше заданного threshold.

Порог рассчитан таким образом, чтобы агрегировать поздние точки (если точки появляются через несколько секунд после обычных окон 5minuters), но это должно остановиться где-то (в противном случае все точки должны храниться в памяти агрегатора навсегда). Это theshold resolution * settings['MAX_AGGREGATION_INTERVALS'] где MAX_AGGREGATION_INTERVALS по умолчанию 5.

В вашем случае все точки получили 25 минут после того, как метки времени они несут найти удаленный буфер. В этом случае графит создаст новый буфер и испустит «агрегированное» значение для шепота, переписав правильное значение.

В предыдущем примере, если вы отправите пункт:

hello.world 100 1427615690 (~15 minutes ago) 

25 минут после времени вылета, он будет перезаписывать шёпот. Вы получите:

1427615689 100 (100) 
1427615989 315 (314+1) 

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