【问题标题】:Graphite / Grafana - fetch metrics, aggregate, store as a new metric - any solution?Graphite / Grafana - 获取指标,聚合,存储为新指标 - 任何解决方案?
【发布时间】:2017-01-03 19:53:55
【问题描述】:

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

  • 度量 A 到度量 B,我们称之为 AB
  • 公制 C 公制 D,我们称之为 CD 等等

那么我需要同时使用AB, CD ... 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 层(如果可能的话)。

【问题讨论】:

    标签: graphite grafana statsd


    【解决方案1】:

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

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

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

    【讨论】:

    • 完美,谢谢。最初我不确定如何可靠地做到这一点,但现在在测试直接写入carbon 之后,我可以看到过去也可以填写积分。与您的脚本类似的脚本会在一次性初始运行时定期运行(以计算所有历史数据),我应该没问题。万事如意!
    猜你喜欢
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2021-08-08
    • 2018-02-25
    相关资源
    最近更新 更多