Fluentd + Elasticsearch + Kibanaで遊んでみた(その3) 〜家計簿データのKibana 4での可視化まで〜
前回、前々回とOS 7にFluentd (td-agent 2.3.0) + Elasticsearch 2.1.1 + Kibana 4.3.1 を構築して、Zaimの家計簿データをFluentd経由でElasticsearchに登録するところまでを見た。
今回は続きとして、Elasticsearchに登録した家計簿データをKibana 4で可視化するところをやる。
Kibana可視化の流れ
Kibanaを起動している状態で、以下にアクセスする。
http://vmdev:5601/
※vmdev
はKibanaが起動しているサーバのホスト
Kibanaのページを開くと、このような画面が出る。メニューバーにある項目の通り、可視化の流れは以下になる。
- Settings : インデックスパターンを登録する
- Discover : データを検索する
- Visualize: 検索したデータをグラフ化する
- Dashboard : グラフ化したデータをパネルとして並べる
以下は、流れに従って可視化を行ってみる。
Settings : インデックスパターンを登録する
最初にKibanaにアクセスするとインデックスパターンがないから設定しろ、と言われる。
「Index name or patten」にzaim-*
(zaim-money
がヒットすれば何でも良い)と入力すると、「Time-field name」は自動で@timestamp
が入ったので、そのままCreateする。
Discover : データを検索する
インデックスパターンが作成されたので、Discoverページに移動する。
しかし、データはElasticsearchにあるはずなのに、「No results found」と出てしまった。
これは画面右上のtime pickerがデフォルトだと「Last 15 minutes」になっているためである。
time pickerをクリックすると時間範囲を変更できるので、まずはこれを登録したデータが十分含まれるように、今回は「Last 6 months」に変更した。すると、以下のようにデータがヒットして、グラフが表示される。
Visualize: 検索したデータをグラフ化する
検索データがヒットした状態で、そのままメニューバーから「Visualize」をクリックすると、以下のように様々な可視化の種類が選択できる。ここでは普通の棒グラフを出すために、「Vertical bar chart」を選択する。
次に「Select a search source」が聞かれるが、今回は初めてなので「From a new search」を選ぶ。
すると、こんな画面が出た。ここからY軸、X軸を定義したり、項目をドリルダウンしてグラフを作っていく。
今回は1ヶ月後ごとの支出金額の合計をカテゴリ別に表示するグラフを作ってみる。
最初にY-AxisでAggregationをSum、Fieldをamountにする。これでグラフの縦軸は「amount(金額)の合計」が表示されるようになった。緑背景の三角ボタンを押すと、グラフが再描画される。
続いて、bucketsからX軸の設定をしていく。まず横軸に時間軸をとりたいので、「X-Axis」を選択する。
Aggregationを「Date Histogram」に、Fieldを「@timestamp」に、Intervalを「Monthly」にすると、棒グラフが月ごとに表示されるように変わった。
※ここからは縦軸の具体的な数値は念のため伏せます。あしからず。
さて、次はグラフをカテゴリ別の積み上げ棒グラフにしてみる。
「Add sub-buckets」からbucketsを追加し、Split Barsを選択する。
Sub Aggregationを「Terms」に、Fieldを「category_name」にして再描画すると、以下のようにカテゴリ別に色分けされた!
よく見ると、給与所得というカテゴリがある。Zaimは収入も登録できるので、これは支出と分けて表示したい。
そこで、さらにbucketsを追加して今度は「Split Chart」を選ぶ(これしか選べないはず)。
Sub AggregationをFilterにして、Filter 1にはcategory_name:給与所得
をAdd FilterからFilter 2には
-category_name:給与所得
とする(先頭の-
はElasticsearchフィルタのNOT演算子を表す)。
こうして再描画すると、以下のように収入と支出のカテゴリ別積み上げグラフにできた!
最後に、作ったグラフをフロッピーアイコンから保存する。
名前は適当に「カテゴリ別」として、Save。
これでVisualizeは完成。今回は棒グラフの「Vertical bar chart」を選んだが、他のタイプでもグラフの作り方は似たようなものなので、色々動かしてみるとよいと思う。
Dashboard : グラフ化したデータをパネルとして並べる
最後に作ったグラフをダッシュボードに並べる。
といっても簡単でDashboardページの右上の「+」アイコンをクリックすると作成したグラフを選べるので、今回作った「カテゴリ別」グラフを選ぶだけ。
いろいろなグラフを作って、複数並べることで、分析しやすい・見やすいボードを作ることができる。
最後に、ダッシュボード自体にも名前をつけて保存できる。
これでKibanaのデータ可視化作業が一通り完了した!
まとめ
以上、Zaimの家計簿データをFluentdでElasticsearchに登録し、Kibanaで可視化するまでの一連の流れを見た。
どのミドルウェアもセットアップから設定、実際に使って見るところまで、非常に洗練されていて最初の一歩を踏み出す敷居は高くないと感じた。
一方で、使いこなす上では他にもたくさんの機能があるため、より複雑なこともできそうだなという感触を得た。
また、家計簿データをリアルタイムで可視化するというのも家計の財務状況監視のためには有効なのではないかと思う。
以上!
サーバ/インフラエンジニア養成読本 ログ収集〜可視化編 [現場主導のデータ分析環境を構築!] Software Design plus
- 出版社/メーカー: 技術評論社
- 発売日: 2014/08/14
- メディア: Kindle版
- この商品を含むブログを見る
関連記事