我们使用 Graphite 已经有一段时间了,最近将一些指标的来源从 statsd 更改为 yammer/codahale-metrics。由于我们的指标通常是从许多不同的服务器发送的,因此我们设置了 Graphite 自己的聚合器来为我们处理这些。
现在的问题是单个服务器的统计数据显示并且表现得很好,但汇总的统计数据将始终只在最后一小时左右是正确的。这意味着旧的聚合值会在一段时间后以某种方式进行修改。这是它的样子: 绿线只是应该聚合的指标上的 sumSeries,蓝线是聚合器生成的。请注意,两条线仅在过去一个小时内是如何协调的。
当然,我们已经研究了存储/聚合/保留规则,但它们都是非常基础的,应该平等地涵盖所有指标(基本上甚至在 1 小时后就不会生效):
存储架构.conf
[stats]
priority = 110
pattern = .*
# store 60s for 30d, then 15 minutes 350400 (10 years)
retentions = 60:43000,900:262974
存储聚合.conf
[kv]
pattern = \.kv\.
xFilesFactor = 0.2
aggregationMethod = average
[counts]
pattern = \.counts\.
xFilesFactor = 0
aggregationMethod = sum
[timers]
pattern = \.timers\.
xFilesFactor = 0.2
aggregationMethod = average
[min]
pattern = \.min$
xFilesFactor = 0.1
aggregationMethod = min
[max]
pattern = \.max$
xFilesFactor = 0.1
aggregationMethod = max
[sum]
pattern = \.count$
xFilesFactor = 0
aggregationMethod = sum
[default_average]
pattern = .*
xFilesFactor = 0.5
aggregationMethod = average
实际聚合器的配置可能是这里的盲点,因为我们找不到任何真正详细的文档,并且大部分都保持原样。
碳.conf
[aggregator]
LINE_RECEIVER_INTERFACE = 0.0.0.0
LINE_RECEIVER_PORT = 2023
PICKLE_RECEIVER_INTERFACE = 0.0.0.0
PICKLE_RECEIVER_PORT = 2024
DESTINATIONS = 127.0.0.1:2004
REPLICATION_FACTOR = 1
MAX_QUEUE_SIZE = 10000
USE_FLOW_CONTROL = True
MAX_DATAPOINTS_PER_MESSAGE = 500
MAX_AGGREGATION_INTERVALS = 5