メトリックを監視する必要があるシステムがあります。そのために、grafana + influxdb を使用します。現在使用している influxdb のバージョンは 0.9.x です。
いくつかの統計を計算できるようになりたいです。私の使用例は非常に単純です。
- いくつかの時系列ソースから選択クエリを作成したいと考えています。
- データをグループ化するために、select クエリ内で group by ステートメントを作成したいと考えています。
- 最後に、各グループ内の平均値を見つけたいと思います。
私のクエリは次のとおりです。
SELECT mean(value) FROM /namespaces_.*.amount/ where time < "2015-10-21T14:16:18Z" group by time(1m);
些細なことのように見えますが、少しトリッキーです。私はこのようなものを得る:
name: namespaces_1.amount
------------------------------------------------------------
time mean
1970-01-01T00:00:00Z 0.8877630461283463
name: namespaces_2.amount
------------------------------------------------------------
time mean
1970-01-01T00:00:00Z 0.6982870635693408
influxdb のドキュメントによると、複数のソースからデータを取得できます。つまり、FROM キーワードの後に複数のデータ系列を書き込むことができます。それらをマージして、マージされたシリーズで処理を行いたいのですが。influxdb 0.8.x にはmerge
、データ ソースを混在させる機能がありました。ただし、influxdb 0.9.x では、マージ操作も結合操作もありません。
参照: https://influxdb.com/docs/v0.9/concepts/08_vs_09.html
InfluxDB 0.9 では、MERGE 操作も JOIN 操作もサポートされていません。MERGE 操作は不要になりました。WHERE 句のタグで明示的に除外されていない限り、測定内のすべてのシリーズはクエリ時に自動的にマージされます。
だから、あなたが書くとき
SELECT mean(value) FROM merge(/namespaces_.*.amount/) where time < "2015-10-21T14:16:18Z" group by time(1m);
空の結果が得られます...
したがって、私の質問は次のとおりです。複数の時系列ソースからデータを選択し、それらをマージし、いくつかの基準でグループ化し、 influxdb 0.9.x のツールを使用して各グループに集計関数を適用する方法は何ですか?