Graphite / Grafana - 获取指标,汇总,存储为新指标 - 任何解决方案?

时间:2017-01-03 19:53:55

标签: graphite grafana statsd

我有一个相当具体的用例需要繁殖:

  • 公制A按公制B,我们称之为AB
  • 公制C按公制D,我们称之为CD 等等。

然后我需要同时使用ABCD ... YZ来计算结果,我们称之为ABYZ。真正的转变更为复杂,但让我们跳过它,因为它并不重要。

如果我预先算出ABCD,那么这将使我的生活更轻松,因为我可以使用Grafana中的模板变量来查询它。 假设我可以指定变量$include,它可以是对的列表:ABCD等。 然后,我可以通过包含一些指标并排除其中的一些来轻松控制ABYZ的结果。

在我当前的架构中,如果没有预先计算指标,则无法使用模板变量,因为在此阶段无法确定哪个指标应乘以哪个指标。

假设我想获得此Graphite查询的结果:      别名(diffSeries(maxSeries(multiplySeries)(maxSeries(stats.gauges.stock。{stock1,stock2} .offers。 EUR .bid。),averageSeries(stats.gauges.stock.currency。 fidor。 .EUR.PLN)),maxSeries(stats.gauges.stock。{stock1,stock2} .offers。 PLN .bid。*)),minSeries(multiplySeries(minSeries( stats.gauges.stock。{stock1,stock2} .offers。 EUR .ask。),averageSeries(stats.gauges.stock.currency.fidor。 .EUR.PLN )),minSeries(stats.gauges.stock。{stock1,stock2} .offers。 PLN .ask。*))),'diff')

并将其存储在此指标中:stats.gauges.stock.diff

是否有任何解决方案可以从现有指标中创建新指标?我想跳过StatsD图层并直接触摸graphite / carbon图层(如果可能的话)。

1 个答案:

答案 0 :(得分:1)

你绝对可以编写一个小脚本,可以从石墨中查询值A,B等,并将AB等输入碳中,这样你就可以从石墨中查询它们了。

几乎任何语言都应该足够,石墨API只是基于HTTP的JSON,碳协议甚至更简单。这是一个小的PHP脚本,我写了一段时间后从家庭自动化系统获取值,并在进行一些转换后将它们输入碳。它只是在适当的时间间隔内通过cron运行。您应用的唯一区别是您从石墨而不是外部系统中提取原始值。

https://gist.github.com/DanCech/348d37ee45898b34abd3