了解Graphite渲染界面

时间:2016-12-23 08:33:03

标签: graphite

从Graphites /render API获取JSON响应时,它看起来如下。

{
"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个度量。然而,这不是我得到的。

我不明白为什么我们需要一个嵌套列表来表示数据点? Graphite响应中内部列表的内容是什么?

1 个答案:

答案 0 :(得分:1)

石墨的json输出格式可以定义为度量系列数组,每个度量系列都是一个对象,其中包含' id / name称为 target 数据点数组,最后每个 datapoint是一个对应值和时间戳的数组

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

这种结构是设计理念及其实施的结果:

  • datapoint必须包含值和时间戳(时间帧在渲染时对齐并且可以调整)并且数组是最轻的结构
  • datapoints必须是一个数组才能保留顺序,因为object是类似哈希的结构。请注意,每个系列可以有非常不同的时间戳,但特定顺序和相同长度(如果未找到值,则为空)
  

我对预期响应的直觉是我会得到一个包含数据点的列表,其中每天有0或1个度量。然而,这不是我得到的。

summarize每个指定时间段减少(使用sum / avg / max / min)数据点,如果桶中的所有值都为空,则最终值等于null。您可以使用transfomrNulls将空值替换为所需的值。