Graphite / Grafana - 获取指标、聚合、存储为新指标 - 任何解决方案?
Graphite / Grafana - fetch metrics, aggregate, store as a new metric - any solution?
我有相当具体的用例需要乘法:
- 度量 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。问。*))), 'diff')
并将其存储在这个指标中:stats.gauges.stock.diff
是否有任何解决方案可以从现有指标创建新指标?我想跳过 StatsD 层并直接触摸 graphite
/ carbon
层(如果可能的话)。
您完全可以编写一个小脚本来查询石墨中的值 A、B 等,并将 AB 等输入碳中,以便您可以从石墨中查询回来。
几乎任何语言都应该足够了,Graphite API 只是 JSON over HTTP,carbon 协议甚至更简单。这是我不久前写的一个小 PHP 脚本,用于从我的家庭自动化系统中获取值,并在进行一些转换后将它们输入碳中。它只是 运行 通过 cron 在适当的时间间隔。您的应用程序的唯一区别是您从石墨而不是外部系统中提取原始值。
我有相当具体的用例需要乘法:
- 度量 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。问。*))), 'diff')
并将其存储在这个指标中:stats.gauges.stock.diff
是否有任何解决方案可以从现有指标创建新指标?我想跳过 StatsD 层并直接触摸 graphite
/ carbon
层(如果可能的话)。
您完全可以编写一个小脚本来查询石墨中的值 A、B 等,并将 AB 等输入碳中,以便您可以从石墨中查询回来。
几乎任何语言都应该足够了,Graphite API 只是 JSON over HTTP,carbon 协议甚至更简单。这是我不久前写的一个小 PHP 脚本,用于从我的家庭自动化系统中获取值,并在进行一些转换后将它们输入碳中。它只是 运行 通过 cron 在适当的时间间隔。您的应用程序的唯一区别是您从石墨而不是外部系统中提取原始值。