Graphite / Grafana - 获取指标、聚合、存储为新指标 - 任何解决方案?

Graphite / Grafana - fetch metrics, aggregate, store as a new metric - any solution?

我有相当具体的用例需要乘法:

然后我需要用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。问。*))), 'diff')

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

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

您完全可以编写一个小脚本来查询石墨中的值 A、B 等,并将 AB 等输入碳中,以便您可以从石墨中查询回来。

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

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