Monitoring 计算graphite中与条件匹配的度量数

Monitoring 计算graphite中与条件匹配的度量数,monitoring,graphite,Monitoring,Graphite,我有一个从网络上提取信息的类列表。每次他们每个人都保存了一些东西,它就会向石墨发送一个不同的计数器。因此,它们中的每一个都是不同的度量标准 我怎么知道他们中有多少人满足某个条件 例如,让我们: movingAverage(summarize(groupByNode(counters.crawlers.*.saved, 2, "sumSeries), "1hour"), 24) 是过去24小时内内容下载的平均值。在“t”时刻,我如何知道有多少度量值高于0?在渲染端点中,添加format=json

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

我怎么知道他们中有多少人满足某个条件

例如,让我们:

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

是过去24小时内内容下载的平均值。在“t”时刻,我如何知道有多少度量值高于0?

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

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

您可以使用上面的
current
功能。例如:

currentAbove(stats.route.*.servertime.*, 5)
上面的示例获取了所有高于5的度量(在系列中)


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

例如,一种快速计数的方法(使用curl-to-pipe到grep并对单词“target”进行计数)。像这样:

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

Thnx@erbdex。这是计算它的一种方法。这比我现在拥有的要好。我想我没有说清楚。我想用一个石墨图来表示这一点。DIY方法是编写一个简单的脚本,计算您需要的任何内容,并将其发送回statsd以再次绘制一个图(图元数据)。countSeries(*seriesList)绘制一条水平线,表示在seriesList中找到的节点数。从v0.9.10开始提供。但我不认为他想知道有多少通配符被解决了。很好。我不知道这个函数。在这种情况下,currentUpper(围绕其原始movingAverage等)的组合使用0(以获得高于0的度量值),并使用countSeries包装,将执行与脚本相同的操作。虽然我可能误解了这个问题。我想他希望在说“满足某个条件”时能够灵活地编写自定义检查但我真的不知道。