Kibana 4 BETAファーストインプレッション

Kibana4のBETAがリリースされたことに、Kibana3のissueがcloseされた通知で気がついた。Kibana3のbugfixはやってくれなさそうだけど、とりあえず、Kibana4を試すことにした。

## 必要なもの

- JVM
- Kibana 4.0.0-BETA1
- Elasticsearch 1.4.0.beta1

## 初期設定

Kibana4をとりあえず使ってみるために必要な項目は次の通りだ。

- Elasticsearch 1.4.0.beta1をセットアップする
- Kibana 4.0.0-BETA1をセットアップする
- インデックスの初期設定を行う

### Elasticsearch 1.4.0.beta1を準備する

Kibana4ではElasticsearch 1.4以降が必要になっている。ベータ版がリリースされているので、適当にダウンロードして起動しよう。

- [Elasticsearch.org 1.4.0.Beta1 | Elasticsearch](http://www.elasticsearch.org/downloads/1-4-0-Beta1)

Macだったらzipファイルをダウンロードして`./bin/elasticsearch`すればとりあえず起動する。

```
$ unzip elasticsearch-1.4.0.Beta1.zip
$ cd elasticsearch-1.4.0.Beta1
$ ./bin/elasticsearch
[2014-10-07 11:12:49,622][INFO ][node   ] [Ringmaster] version[1.4.0.Beta1], pid[6019], build[1f25669/2014-10-01T14:58:15Z]
[2014-10-07 11:12:49,623][INFO ][node   ] [Ringmaster] initializing ...
[2014-10-07 11:12:49,631][INFO ][plugins] [Ringmaster] loaded [], sites []
[2014-10-07 11:12:53,247][INFO ][node   ] [Ringmaster] initialized
[2014-10-07 11:12:53,247][INFO ][node   ] [Ringmaster] starting ...
...
```

検証用にサンプルデータも必要になるのでインポートしておこう。下記リポジトリに適当なデータがあるのでおすすめ。Bulk insert APIでインサートしておこう。

- [harukasan/kibana-testdata](https://github.com/harukasan/kibana-testdata)

### Kibana4を準備する

とりあえずダウンロードしてこよう。ソースからビルドすることもできると思うがそれなりに面倒だと思う。

- [Elasticsearch.org Kibana | Installation | Elasticsearch](http://www.elasticsearch.org/overview/kibana/installation/)

Kibana4にはSiantra/JRubyで書かれたHTTPサーバがバンドルされている。Mac/Linuxであれば`./bin/kibana`を実行するだけで5601番ポートでHTTPサーバが起動する。

```
$ unzip kibana-4.0.0-BETA1.zip
$ cd ./kibana-4.0.0-BETA1
$ ./bin/kibana
```

ソースコードを読んだ感じ単なるリバースプロキシ+静的ファイル配信サーバなので、nginxを初めとするHTTPサーバに置き換えることも今まで通り出来そうだ。

### インデックスを準備する

`http://localhost:5601`にアクセスするとインデックスの設定が求められる。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/9283f5db-a055-5a00-c4da-d74d37d27b8c.png)

パーティショニングされたインデックスを使おうと思ったら`Unable to fetch mapping. Do you have indices matching the pattern?`といわれて先に進めなかった。このページ全体的に挙動が怪しいので、とりあえず単一インデックスを指定して先に進もう。

上のテストデータを使った場合は次の設定でさきにすすめる。

```
[x] Index contains time-based events
[ ] Use event times to create index names

Index name or pattern:
  sample_service-2014.04.27
Time-field name:
  @timestamp
```

設定が完了するとインデックスのスキーマが表示される。ここではフィールドの型やanalyzeが行われているかどうかを確認出来るようだ。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/e3de4f3c-9346-4f44-2fae-32690464e95b.png)


## Kibana4の操作

Kibana4では4つのタブに操作がわかれている。Discover、Visualize、Dashboard、そしてSettingsだ。それぞれのタブの意味はおそらく次のようにみえる。

- Discover --- 必要なデータを検索、発見する
- Visualize --- データの可視化を行う
- Dashboard --- 可視化したグラフをダッシュボードにまとめる
- Settings --- インデックスの設定を行う

Kibana3では1つの画面でデータの検索、可視化、ダッシュボードの配置を行っていたが、それぞれのタブに分業されるようになった。BIツールと同じ操作感覚で操作できそうだ。

## Discover - 必要なデータを発見する

このタブではデータの検索と簡単な分析を行うことが出来る。サンプルデータでは2014年4月27日のデータしか含まれていないので、右上のTime filterから期間を設定しよう。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/164a8302-9b88-67bd-15f8-26b6a4d5540d.png)


### データの検索

データを検索するには検索クエリを入力する。Kibana3とは異なり検索クエリは1つだけ入力する。とりあえず`*`のままで全てのデータが表示される。

### クイック集計

データが見つかると左側のバーに存在するフィールドの一覧、右側にヒストグラムとデータが表示される。左側のフィールド一覧を適当に選択すると直近500レコードのクイック集計が表示される。Kibana3にあったMicro analysisと同等の機能だ。各フィールドの`add`をクリックすると、右側のテーブルのカラムに追加される。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/0421fd07-7473-91cd-444c-4592b048d519.png)


### 検索と検索条件の保存

いくつかカラムを追加したら、検索クエリを入力して必要なデータの検索を行う。良い感じのデータができたら、右上の保存ボタンから検索条件を保存しておこう。この検索結果に対して可視化を行うことになる。

## Visualzie - データの可視化を行う

次にデータの可視化を行ってみたい。Visualizeタブを選んでもいいけど、Discoverタブからそのまま行うことが出来そうだ。フィールド一覧から赤い`Visualize`をクリックするとそれらしいグラフを表示してくれる。例えば`user_age`のフィールドの`Visualize`をクリックすると、次のようにTop 20の値がカウントされる。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/3cd177d5-de2f-464a-23fe-c18057fdea30.png)

### Aggregationを使う

Top 20ではなくヒストグラムで見てみたいので、軸の設定を変更しよう。X−Axisを開いてAggregationの方法を変更する。使用できるAggregationは次の6つみたいだ。

- Date Histogram
- Histogram
- Range
- Terms
- Filters
- Significant Terms

ここではヒストグラムを見たいのでHistogramを選択した。フィールドを選択してintervalを適当な値にすれば年齢のヒストグラムが表示された。これは便利だ。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/ee70a283-3fc3-1fe9-d9ec-d6e7d3339aa2.png)


グラフが完成したら名前をつけて保存しよう。右上からそのままシェアすることも出来る。

### 1からグラフをつくる

DiscoverタブからVisualizeしたら棒グラフしか描けないようだったので1からグラフをつくってみたい。右上アイコン列のNew Visualizationから新しいグラフを作成する。どの検索条件から作成するか選択させられるので、`From a new search`を選択してクエリを入力するか、Discoverタブで保存した検索条件を指定しよう。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/f151d49a-89ec-471d-dfef-57085dcdff6d.png)


次にグラフの種類を選択できる。選択できるグラフは3種類。

- Vertical Bar Chart
- Line chart
- Pie chart

なんとなくPie chartを選んで、性別の割合を可視化してみた。左側の`+ Add Aggregation`から集計する軸を追加するだけで簡単にグラフを描画できる。設定が終わったら左下の`Apply`ボタンで描画される。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/451c5aa8-f53f-d01d-41c8-2535ba26add7.png)


## Dashboard - ダッシュボードにまとめる

Visualize画面おもしろくていろいろ遊んでいたら、いろんなグラフが出来たらダッシュボードに並べてみたい。Dashboardタブを開く。開くと「ここからはじめる？」のようなことが表示されるので右上の+ボタンからグラフを追加しよう。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/4babbd2b-7ebb-9b6d-79ff-cd25ba8c7973.png)


グラフをドラッグすることで好きな場所に配置できる。また、右下の部分を引っ張ることでサイズを変えることもできる。今までのダッシュボードに比べるとかなりインタラクティブな操作が可能だ。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/d294219c-d7c4-2cb7-772a-29600c6cbda5.png)


### データをエクスポートする

各グラフ下の矢印をクリックすると元になっているデータが表示される。左下の`Export`からCSVファイルをダウンロードすることもできる。これまで生データを取得するためにわざわざクエリを投げなければいけなかったのでこれはかなり便利だ。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/1a32037f-9e0c-2741-da3d-315cea99b9de.png)

### ダッシュボードをシェアする

好きなダッシュボードができたら右上の保存ボタンから保存するかシェアしよう。シェアする際にiframeも選択できるようになっている。

![](https://qiita-image-store.s3.amazonaws.com/0/5218/7625772a-7dfa-ad73-1aac-56872ed5567d.png)


## まとめ

Kibana4の機能を一通り触ってみた。Kibana3とは別物だけどかなり直感的に操作することが可能になった印象を受けた。Kibana3ではダッシュボードを作りながらいろいろと値を設定していたが、Kibana4ではこのフローがきちんと整理されている。

### Kibana3との大きな違い

Kibana3では全ての操作を1画面で行っていた。このため、複数のクエリを用意し、それをそれぞれのパネルとバインドし、そして配置する必要があった。Kibana4ではこのフローが整理されている。

- Discoverタブで検索条件を用意する
- Visualizeタブで検索結果の可視化を行う
- Dashboardタブで可視化結果をまとめる

Discoverタブで検索条件を設定し、Visualizeタブで検索クエリとグラフのバインドを行うため、Dashboardタブはグラフの配置に集中できる。これによって、どのグラフがどのような検索クエリを可視化しているのかわかりやすくなった。

### 雑感

これまではダッシュボードをつくったらおしまい、みたいな使われ方をよく見ていたが、ログの検索、可視化ツールとしての目的がより鮮明になったように思える。Elasticsearchに生ログをそのまま挿入するのではなく、Hadoop、TreasureDataやBigQueryで集計したログの可視化、ダッシュボードとしても有効だろう。Kibana3から移行することを考えずに新しいツールとして使えばかなり有用なログ検索、可視化ツールとして使用できるのではないだろうか。