web-dev-qa-db-ja.com

Grafanaで移動平均をとる方法はありますか?

「移動平均」機能が見つからなかったので、回避策があるかどうか疑問に思っています。

私はinfluxdbをバックエンドとして使用しています。

11
brunoqc

Grafana自体は計算を行わず、バックエンドにクエリを実行して、Niceチャートを描画します。したがって、アグリゲーション機能はバックエンドにのみ依存します。 Graphiteは移動平均などのウィンドウ関数をサポートしていますが、InfluxDBは現在それをサポートしていません。

Web上のinfluxdbの移動平均に対する要求は非常にたくさんあります。 「+1」を残して、このチケットで進捗状況を追跡できます https://github.com/influxdb/influxdb/issues/77

(それほど簡単ではありませんが)可能な回避策は、MAを事前に計算して別のinfluxdbシリーズに保存するカスタムスクリプト(cron、デーモンなど)を作成することです。

12
Sergey Martynov

GrafanaはmovingAverage()の追加をサポートしています。私もドキュメントでそれを見つけるのに苦労しましたが、 feature intro page でその使用法を(多少陽気に)確認できます。

screenshot showing movingAverage() call

通常どおり、グラフのタイトルをクリックして編集し、指標 movingAverage() を追加します graphite documentation の説明に従って:

movingAverage(seriesList, windowSize)

一定数の過去のポイントまたは時間間隔での1つまたは複数のメトリックの移動平均をグラフ化します。

1つのメトリックまたはワイルドカードseriesListの後に、N個のデータポイント、または「1時間」や「5分」などの時間の長さの引用符付き文字列を指定します(時間形式の例については、render_api_のfrom/untilを参照してください)。グラフ上の各ポイントについて、先行するデータポイントの平均をグラフ化します。以前のすべてのデータポイントは、グラフの最初で[なし]に設定されています。

例:

&target=movingAverage(Server.instance01.threads.busy,10)
&target=movingAverage(Server.instance*.threads.idle,'5min')
19
user559633

ここでは、PostgreSQLデータベースを使用してGrafanaで移動平均を実行しようとしているので、SQLクエリを実行する方法を追加します。

SELECT
  date as time,
  AVG(daily_average_column) 
    OVER(ORDER BY date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) 
    AS value,
  '5 Day Moving Average' as metric
FROM daily_average_table
ORDER BY time ASC;

これは、「ウィンドウ」関数を使用して、最後の4行(および現在の行)の平均をとります。

MySQLでもこれを行う方法があると確信しています。

3
thaddeusmt

このための方法と機能は、データソースによって異なります。

InfluxDBを指定したので、クエリは、「集計関数」[mean($ field)など]をmoving_average($ aggregation_function、$ num_of_points)「変換関数」内にラップする必要があります。

「メトリクス」タブのメニューの「選択」部分には、両方の「変換」機能があります。

最初に「集約関数」(平均、最小、最大など)を使用してクエリを作成します。これにより、データが期待どおりに見えることを確認できます。

この後、「集計関数」の横にある「+」ボタンをクリックし、「変換」メニューの下で「moving_average」を選択します。

括弧内の数値は、平均を引き継ぐポイントの数になります。

スクリーンショット:

Screenshot

2
klc

別のオプションは、カウントではなく「タイミング」メトリックとしてデータをレポートすることです。これは、特にスタック内のStatsdで簡単に実行できます。レポートされたデータポイントの平均としてタイミングデータ(statsdから取得)をプロットすることはすでに組み込まれています。

1
odedfos

avg_over_time(mymetric[5m])を試してください

enter image description here