0

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

How do I know how many of them satisfy a certain condition??

For example, let:

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

be the average of content download in past 24 hours. How can i know, at a moment "t", how many of my metrics have this value above 0?

4

2 回答 2

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]
  ]
}]
于 2013-11-08T05:27:05.313 回答
0

您可以使用该currentAbove功能。 检查出来。例如:

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

上面的示例获取所有大于 5 的指标(在系列中)。


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

例如,一种快速计数的方法(使用 curl 管道到 grep 并计数“目标”一词)。像这样:

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