はじめに
Kibana4ではKibana3から全面的にグラフの作り方が変わっているので、どんなグラフが作れるのだろう?と思って色々やってみた. Kibana4自体のセットアップや全体的な使い方はこちらの記事にまとまっている. 以下で作成するグラフのデータについても、この記事の中で利用されているテストデータharukasan/kibana-testdataを使わせて頂いた. Kibanaは現時点での最新版であるKibana4beta3を使用した.
Kibana4におけるVisualizeの基本
以下の順番でVisualizeを行う
- 対象となるデータを選択する. 新しく検索を行う、既存の検索結果を使う、既存のVisualizeを元にする、と言う選択肢がある
- Visualizeの種類を選択する. 面グラフ、線グラフ、等など
- 表示する値(Y軸やmetric)を選択する
- X軸やSub aggregationを選択する.
Visualizeの種類によっては、Y軸を複数選択して同じグラフに表示したり、Sub aggregationを使ってデータをより詳細に集計して可視化することができる.
Area Chart
積み上げグラフ. Y軸はCount, Average, Sum, Min, Max, Unique count,Sub aggergationはX-Axis, Split Area, Split Chartを選ぶことができる.
例えば、ユニークユーザ数(user_name数)とその年令(user_age)分布を時系列で見たい、とした場合Y-AxisにDate Histogram→Unique Count→Field:user_name, Sub aggregationでX-Axis→Date histogram→Field@timestampと、更にSub aggregationを追加してSplit area→Histogram→Field:user_age→interval:10と選ぶ. すると以下の様なグラフになる.
更に、これを男女別に見たい、としたらSub aggregationを追加しSplit Chart→Terms→Field:user_sexとする.
また、view optionsを変更すると積み上げ以外の表現もできる. 例えば、percentageを選ぶと全体を100%としたときの割合で可視化することができる.
Line Chart
線グラフ. Y軸で選べるものはArea chartと同じ. 例えば、平均年齢と最大年令を時系列で見る場合は、Y-AxisにAverage→Field:user_age, 更にY-Axisを追加してMax→Field:user_age、Sub aggregationでX-axis→Date histogram→Field@timestampとする. 出来上がるのはこんな感じ. Kibana3だと同一レコードの複数系列を同じグラフにするのはできなかったのだが、Kibana4だと単純にY-Axisを追加すればできるようになっている.
更に、これに対してクエリを条件に系列を分けてみる. 全体のをそのままに、user_countryが"cn"かつ性別が女性のものを別系列とする. この場合、Sub aggregationにSplit lines→Filter→Query1:*
, Query2:user_country:"us" AND user_sex:"f"
と指定する.
Data table
データを表形式で表示する. Area chartやLine chartと同様にmetrics(ChartのY軸に相当)とsub aggregationが指定可能. 1つ目のmetricにCount, 2つ目にUnique Count→Field:user_country, Sub aggregationはSplit Rows→Range→Field:user_age From 0 to 30, From 30 to 999, 更にSub aggregationを追加してSplit Rows→Terms→Field:user_sex とした結果が以下.
Exportをクリックすると、表形式のままCSVでダウンロードすることができる. ちなみに、chartを表示している場合でもグラフ下の矢印をクリックすることで、Data table形式の表示にすることは可能.
Metric
単一の数値を表示する. Sub aggregation等は無い.
Pie chart
円グラフ. 時系列の推移ではなく、対象データ全体における特定のデータの割合を表現する. metricsはCountとSumしか指定できない. Sub aggregationは他と同様. metricsにCount of Documents, Sub aggregationでSplit slices→Terms→Field:user_country (top 10)、Sub aggregationを追加してSplit slices→Terms→Field:user_sexとしたグラフが以下.
Vertical bar chart
縦棒グラフ. グラフの作り方はArea chartやLine chartと同じ. 例えばuser_country毎のevent数を、user_sexでごとに表示したい、とした場合はY-AxisにCount, Sub aggregationはX-Axis→Terms→Field:user_country(top 10)と、Split bar→Terms→Field:user_sexの2つを指定する. と、以下のようになる.
Area chartと同様にview optionsを指定することが可能. 同じグラフでgroupedを選択すると上記のような積み上げではなく、X-Axisの値ごとにグループ化された形で表示される.
最後に
Aggregationが可能になったことで、Kibana3よりも色々な切り口での可視化が可能になっていると感じた. Kibana3を触り始めた時、"こんなグラフ作りたいのだけど、できないなぁ"と思っていたようなグラフが作れるようになっている(ついでに、Visualizationの話ではないがScripted Fieldsの機能を使うと、既存フィールドを元に加工した結果を新しいフィールドとして扱うことができるので、これもかなり強力そう). Kibana3にしかできないこともあるが、Kibana3, 4の併用も可能なので両方利用可能にしておいて、Kibana4を積極的に活用していきたい.