计算与石墨中的条件匹配的指标数量

时间:2013-11-08 01:53:23

标签: monitoring graphite

我有一个从网络中提取信息的类列表。每当他们中的每一个都保存一些东西时,它会发送一个与石墨不同的计数器。因此,它们中的每一个都是不同的指标。

我怎么知道它们中有多少满足某种条件?

例如,让:

movingAverage(summarize(groupByNode(counters.crawlers.*.saved, 2, "sumSeries), "1hour"), 24)

是过去24小时内容下载的平均值。我怎么知道,在某个时刻“t”,我的指标有多少这个值高于0?

2 个答案:

答案 0 :(得分:1)

在渲染端点中,添加format=json。这将返回带有JSON中相应纪元的数据点,这是一个轻而易举的解析。您的脚本没有发送任何内容的时间戳将为NULL。

[{
 "target": "carbon.agents.ip-10-0-0-228-a.metricsReceived",
 "datapoints": 
  [
    [912, 1383888170], 
    [789, 1383888180], 
    [800, 1383888190], 
    [null, 1383888200], 
    [503, 1383888210], 
    [899, 1383888220]
  ]
}]

答案 1 :(得分:0)

您可以使用currentAbove功能。 Check it out。例如:

currentAbove(stats.route.*.servertime.*, 5)

上面的示例获取了超过5的所有指标(在系列中)。


然后,您可以计算返回的目标数量,而Graphite不提供计算“存储桶”的方法,您应该能够相当容易地捕获它。

例如,一种快速计数的方法(使用curl来管道grep并依靠单词“target”)。像这样:

> curl -silent http://test.net/render?target=currentAbove(stats.cronica.dragnet.messages.*, 5)&format=json \
> | grep -Po "target" | grep -c "target"