我有一个从网络中提取信息的类列表。每当他们中的每一个都保存一些东西时,它会发送一个与石墨不同的计数器。因此,它们中的每一个都是不同的指标。
我怎么知道它们中有多少满足某种条件?
例如,让:
movingAverage(summarize(groupByNode(counters.crawlers.*.saved, 2, "sumSeries), "1hour"), 24)
是过去24小时内容下载的平均值。我怎么知道,在某个时刻“t”,我的指标有多少这个值高于0?
答案 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"