Metrics aggreregationについて


#1

KIBANA+ElasticSearchでメトリックス機能でデータ検索をかけるときに
用意されているのはAVG,SUM,MAX,MIN等で 現在値を取得するCURRNTVALUEのようなものがありません。

Aggregation自体が集計機能なので、日付の期間指定して現在値を取得する場合は、どのようにして取得すればよろしいでしょうか。

例えばグラフ表示する際、ElasticのAggregationしか使用できない場合は現在値をとることができません。

お手数ですが
よろしくお願いいたします


(Makoto Nozawa) #2

おそらくkibanaのVisualizeを使っているのだと思います
集計ではなくデータ自体が見たいのであればDiscoverを使うのが適当です


#3

ご回答ありがとうございます。DISCOVERはすでに認識しており、実際のAGGREGATIONの中に特定の現在値を取得できるかが確認したいのですが、
現状の機能にはなさそうですよね。。他のツールからElasticのデータを取得する場合、ものによってはAggregationしか使用できないため、この場合は時系列事の現在値をとれないか考えています。


(Shota Ito) #4

現在値をグラフ描画で単純に表示させるのは他のソリューションでもなかなか難しいのかなと思っています。
例えば、以下条件下でグラフ描画を考えると、現在値をドットや縦棒でモニターに描画しきるのは画面の解像度や表示させている手元のPCの処理能力の兼ね合いで難しいかなと思います。
(インタラクティブに操作するためにJavascriptで計算させたら大体のPCはハングアップしてしまう気がします:tired_face:)
ただ、考え方や設定次第では要求を満たすことができる場合はあるかなと。

条件

  • 縦軸: アクセス数
  • 横軸: 時間軸
  • 表示している期間:1日
  • 1日のアクセス数: 100万

何が難しいのか

上記条件で1日のアクセスを秒単位の時間軸で描画させようとすると、
60秒 × 60分 × 24時間=86,400秒
86,400もの時間軸のメモリを1つのディスプレイで表示させなければなりません。
また、ここに100万件もの縦棒やドットを描画させるとなると相当表示が細かくなるかと思います。
さらにこれをKibanaのようにドラッグ&ドロップで表示箇所を狭めるとなると、その度に膨大な計算リソースを必要としてしまいます:sweat:

どうしたら良いのか

Aggregationで集計後の数値を可視化していたとしても、ドラッグ&ドロップで表示領域を狭めていけば最終的には現在値を表示するのと同じ描画されるようになるかと思います(描画できる時間の範囲が狭いですが)
集計後の数値を表示することの懸念点としては、大量のデータに紛れ込んだ異常値の検出することの難しさだと思います。
この辺の懸念点については、Visualizationを作る時にあらかじめ対象となるデータをクエリで絞ったり、Percentile Ranksや最大値、最小値等を駆使するのが手軽にできる範囲だと思います。
あとはElastic社とサポート契約を結んでMachine Learning機能を使ったり、具体的な悩みを相談されてみるのが良いかなと思います:smiley:


(system) #5

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.