【发布时间】:2017-01-03 19:53:55
【问题描述】:
我有相当具体的用例需要乘法:
- 度量 A 到度量 B,我们称之为 AB
- 公制 C 公制 D,我们称之为 CD 等等
那么我需要同时使用AB, CD ... YZ 来计算结果,我们称之为ABYZ。真正的转换更复杂,但我们跳过它,因为它不是那么重要。
如果我预先计算了AB 和CD,这会让我的生活更轻松,因为我可以使用 Grafana 中的模板变量来查询它。
假设我可以指定变量$include,这将是对列表:AB、CD 等。
然后我可以通过包含一些指标并排除其中一些指标来轻松控制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 层(如果可能的话)。
【问题讨论】: