しばらくの間 Graphite を使用しており、最近、一部のメトリックのソースを statsd から yammer/codahale-metrics に変更しました。通常、メトリクスは多数の異なるサーバーから送信されるため、それを処理するために Graphite 独自のアグリゲーターをセットアップします。
ここでの問題は、個々のサーバーの統計が表示され、問題なく動作することですが、集計された統計は常に最後の 1 時間程度のものしか正しくありません。古い集計値は、しばらくすると何らかの形で変更されることを意味します。これがどのように見えるかのイメージです: 緑色の線は、集計されるべきメトリックの単なる sumSeries であり、青色の線は、アグリゲーターが生成したものです。両方の線が過去 1 時間だけ調和していることに注意してください。
もちろん、ストレージ/集約/保持ルールを調べましたが、それらはすべて非常に基本的なものであり、すべてのメトリックを均等にカバーする必要があります (基本的に、わずか 1 時間後には有効になりません)。
storage-schemas.conf
[stats]
priority = 110
pattern = .*
# store 60s for 30d, then 15 minutes 350400 (10 years)
retentions = 60:43000,900:262974
storage-aggregation.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
実際のアグリゲーターの構成は、おそらくここでの盲点です。なぜなら、本当に詳細なドキュメントを見つけることができず、すべてをそのままにしておいたからです。
carbon.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