2017-01-03 12 views
1

私は乗算する必要があり、かなり具体的なユースケースを持っている:Graphite/Grafana - メトリックを取得し、集計し、新しいメトリックとして保存します。

  • メトリックBによってメトリックA、のは
  • にCD ので、それを呼びましょう、のは、メトリックDによってメトリックC
  • AB
  • それを呼びましょう

は、その後、私は結果をうまくするために一緒にABCD ... YZを使用する必要がある、のはそれABYZを呼びましょう。実際の変換はもっと複雑ですが、それほど重要でないのでスキップしてみましょう。

ABCDをあらかじめ計算しておけばGrafanaのテンプレート変数を使用してクエリを実行できるため、人生が楽になります。 変数$includeをペアのリストに指定すると、AB,CDなど ABYZの結果を簡単に制御することができます。

私の現在のスキーマでは、メトリックがあらかじめ計算されていないため、テンプレート変数を使用することはできません。この段階では、どのメトリックをどのメトリックで掛けるべきですか。

のは、私はこのグラファイトクエリの結果を取得したいとしましょう:。。。 エイリアス(diffSeries(maxSeries(multiplySeries(maxSeries(stats.gauges.stock {stock1、stock2} .offers EUR .BIDを)、averageSeries(stats.gauges.stock.currency.fidor。 .EUR.PLN))、maxSeries(stats.gauges.stock。{株価1、株2} .offers。PLN .bid。*))、minSeries( 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 *)))、「差分」)

と、このメトリックに格納します。stats.gauges.stock.diff

既存のものから新しいメトリックを作成することができます任意の解決策はありますか?私はスキップStatsD層をしたいとgraphite/carbon層を直接(可能であれば)をタッチします。

答えて

1

グラファイトからA、Bなどの値を照会し、ABなどをカーボンに問い合せることができる小さなスクリプトを作成して、グラファイトから戻ってそれらを照会することができます。

ほとんどすべての言語で十分ですが、グラファイトAPIはHTTP経由のJSONであり、カーボンプロトコルはさらに簡単です。ここでは私のホームオートメーションシステムから値を取得し、いくつかの変換を行った後にそれらを炭素に供給するために書いた小さなPHPスクリプトがあります。適切な間隔でcron経由で実行されます。アプリケーションの唯一の違いは、外部システムからではなくグラファイトから生の値を取り出すことです。

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

+1

完璧、よろしくお願いいたします。当初、私は信頼性の高い方法を確信できませんでしたが、今ではカーボンを直接テストした結果、過去のポイントを記入することも可能です。あなたと同様のスクリプトは、(すべての履歴データを計算するために)最初の実行からオフと定期的に実行され、私はうまくいくはずです。ではごきげんよう ! – NeverEndingQueue

+0

それを聞いてうれしい! – AussieDan

関連する問題