2016-12-23 4 views
0

Graphites /render APIからJSON応答を取得すると、次のようになります。Graphiteレンダリングインターフェイスからの応答の理解

{ 
"target": "summarize(sol.count.meter.count, "1day", "sum")", 
"datapoints": [ 
    [ 
    null, 
    1481846400 
],, 
    [ 
    null, 
    1481932800 
],, 
    [ 
    null, 
    1482019200 
],, 
    [ 
    null, 
    1482105600 
],, 
    [ 
    null, 
    1482192000 
],, 
    [ 
    null, 
    1482278400 
],, 
    [ 
    1006491, 
    1482364800 
],, 
    [ 
    1577, 
    1482451200 
], 
], 
} 

予想される応答についての私の直感は、私は毎日が0または1の尺度を持っているデータポイント、とのリストを得るだろうということです。しかし、これは私が得るものではありません。

私が理解していないことは、データポイントを表すためにネストされたリストが必要な理由です。グラファイトレスポンスの内側のリストの内容は何ですか?

答えて

1

グラファイトのJSON出力フォーマットメトリック系列の配列として定義することができ、各メトリック系列は、データポイントターゲットアレイと呼ばれる一連のID /名前を持つオブジェクトであり、最終的に各datapointは対応する値とタイムスタンプの配列です。

[ 
    { 
    "datapoints": [ 
     [value1, timestamp1], 
     [value2, timestamp2], 
     // ... 
    ], 
    "target": "some.metric.count" 
    }, { 
    "datapoints": [ 
     [value9, timestamp99], 
     [value8, timestamp88], 
     // ... 
    ], 
    "target": "some.metric2.count" 
    }, 
    // ... 
] 

この構造は、設計コンセプトとその実装の結果である:

  • データポイント値及びタイムスタンプを含んでいなければならない(時間フレームがレンダリングにを位置合わせされ、それを調整することができる)と配列であります最も軽い構造体
  • オブジェクトはハッシュのような構造なので、datapointsは順序を保持する配列でなければなりません。予想される応答についての私の直感は、私はリストを得るだろうということです

各シリーズは非常に異なるタイムスタンプにを持っていますが、(値見つからない場合はヌル)特定の順序と同じ長さを持つことができることに注意してくださいデータポイントには、毎日0または1の測定値があります。しかし、これは私が得るものではありません。

summarizeバケット内のすべての値がヌルである場合、最終的な値はnullに等しく、指定されたタイムバケットごとのデータポイント(合計/平均/最大/分で使用)を減少させます。 transfomrNullsを使用すると、nullを目的の値に置き換えることができます。

+0

しかし、それがタイムスタンプであるか配列内の値であるかをどのように知ることができますか?注文は私の理解にJSON標準で修正されていないので、その頭に頼るのは価値と尾です。タイムスタンプはあまりにも緩いですか? – user3139545

+0

配列の順序が固定されています。インデックス0は値で、1はタイムスタンプです。 – kwarunek