2012-12-06 10 views
11

私はgraphsにカウンターデータを報告するためにstatsDを使用しています。私はメッセージを受け取るたびにティックを送ります。これは、statsDが何らかの理由で再起動しなければならない場合を除いて、うまく動作します。私はグラフに巨大な穴ができてしまった。なぜなら、メッセージを受け取っていない時代にstatsDは10秒ごとに "0"を送信しなくなったからだ。statsDを使用しているときにグラファイトに不足しているデータを記入する方法はありますか?

私はさまざまなメッセージタイプとキューについて報告しています。また、特定のキューのメッセージが長時間にわたって取得されないこともあります。

欠落しているデータを指定したデフォルト値で埋め尽くす方法はありますか(私の場合は0になります)?

statsDが0を送信するように、特定のメトリックに対して「0」カウントを送信することを考えましたが、事前に報告するメトリックのセットを常に知るわけではありません。

+0

正確に私がしたいことをする機能があります。 @ALQが指摘するように、集約に影響することを知ることは重要です。 transformNull()。 – BigBen

答えて

7

ビジュアルグラフをゼロで埋めたい場合は、「グラフオプション - >ラインモード - >ゼロとして描画する」を参照してください。これにより、0以外の値を設定することはできません。また、jsonやcsv形式でデータを取得しても0は表示されませんが、いくつかのグラフを表示するだけの場合は、データが記録されない場所に伸びます。

without Draw Null as Zero

With Draw Null as Zero

10

黒鉛の "keepLastValue(requestContext、seriesList)"関数を使用すると、欠落しているデータを処理できます。あなたの行を壊すのではなく、データにギャップ( 'None'の値)が現れたときに最後に受け取った値で行を続けます。

+0

それは素晴らしいです!最後の値ではなく、0を報告できるようにしたいので、私が望むものではありません。しかし、たいていの場合、値は0なので、これは現時点で有効です。ありがとう! – BigBen

+2

"データなし"の代わりに0を送信するとペダンティックではなく、集計(分位数、平均)が低下します。 –

+1

@ALQ、全くぺったんとしていない、リマインダーのおかげで。 – BigBen

16

グラファイトが提供する機能transformNullをチェックしてください。例えば

transformNull(stats.timers.deploys.all.duration.total.mean, 0) 

これは、この問題を解決するには、最後の値を維持するか、ヌルを変換することではありません0

2

にヌルデータを持つセクションをマッピングします。これらのオプションのいずれかを実装すると、間違ったデータが表示されるだけで、何か問題があった場合には警告が表示されません。

送信するデータ量を格納するようにストレージスキーマを変更する必要があります。

メトリックが5秒ごとに送信され、ストレージスキーマに1と表示されている場合、5つのデータポイントが得られます.4つのデータポイントはnullになります。

この文書をチェックする:https://github.com/etsy/statsd/blob/master/docs/graphite.md