碳储存计划
[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
在grafana图上,我能够看到最近的feeded值的聚合(总和值)。但是在价值未汇总之前1年。实际上只显示一个值(窗口1小时的最新条目)8而不是4 + 6 + 8 = 18。
配置中可能缺少什么?
答案 0 :(得分: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。
阈值的计算方式是允许汇总后期点(如果点数在5分钟的正常窗口后几秒钟),但这必须在某处停止(否则所有点都应存储在碳聚合器的内存中曾经)。
这是卖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
设置,但我建议先将它们存储在其他位置,然后将它们与石墨中存储的内容进行离线重新组合。
答案 1 :(得分:0)
此处存在相同问题,并且由于产品环境而无法访问石墨/耳语设置。 您可以在外部汇总数据,然后将其发送到石墨数据端口。 https://github.com/floringavrila/graphite-feeder