grepでログを集計とかもう疲れたので Kibana6 を試してみる

恥ずかしながらついちょっと前までgrepでコツコツとログを集計したりスクリプトで編集してcsv/tsv形式に出力したのをエクセルに貼り付けてグラフつくってたり。でももういい加減疲れた！ので Kibana を試してみた。


# 実行環境
MacにDocker入れて、その上で Kibana も Elasticsearch もコンテナで稼働。

- PC
 - MacBook Air (13-inch, Early 2015)
 - macOS High Sierra バージョン 10.13.3
 - プロセッサ 1.6 GHz Intel Core i5
 - メモリ 8 GB 1600 MHz DDR3
 - Docker Version 18.03.0-ce-mac59 (23608)
 - Elasticsearch 6.2.3（[過去エントリ参照](https://qiita.com/xsgk/items/56faed48de573a91434c#elasticsearch-623-のセットアップ)）
 - Kibana 6.2.3


# Kibana のセットアップ
現時点で最新のDockerイメージを使用してコンテナを実行。[先に作成した](https://qiita.com/xsgk/items/56faed48de573a91434c#elasticsearch-623-のセットアップ) Elasticsearch と繋げるために --net オプションで同じネットワークにぶら下げる。

```
$ docker run -dti -h kibana --name kibana -p 5601:5601 --net elasticnw docker.elastic.co/kibana/kibana:6.2.3 /bin/bash
```

実行したコンテナに attach して入り、kibana を実行（その前に Elasticsearch の起動も忘れずに）。

```
bash-4.2$ kibana
```

# Index Pattern の作成
ひとしきり起動ログが落ち着いた頃にブラウザで http://localhost:5601 にアクセスすると Kibana のトップ画面が表示される。

![kibana_top](https://qiita-image-store.s3.amazonaws.com/0/251261/f3447bf3-b062-e30d-e523-e1d08889b0b7.png)

</br>
左のサイドメニューから「Management」リンクを押下、さらに表示された画面中の「Index Patterns」リンクを押下。

![index_patterns1](https://qiita-image-store.s3.amazonaws.com/0/251261/4f3ec783-3a5e-67db-7312-9d74d74014e3.png)

</br>
Index Pattern 欄には先に投入したサンプルデータの nasa を指定、右の「 > Next step 」ボタンを押下。

![index_patterns2](https://qiita-image-store.s3.amazonaws.com/0/251261/f2374091-8d1a-a94b-9a8d-a0a22ce0dfb8.png)

</br>
Time filter field name にはプルダウンから @timestamp を指定、「 Create index pattern 」ボタンを押下。

![index_patterns3](https://qiita-image-store.s3.amazonaws.com/0/251261/53fde99e-769c-b725-dd05-8bb1be18e9d4.png)

</br>
これで Kibana に nasa の Index Pattern が設定された。

![index_patterns4](https://qiita-image-store.s3.amazonaws.com/0/251261/c8464ed1-92e6-47cd-23bc-d062e8dc0d7c.png)


# Visualize で棒グラフをつくってみる

とりあえず棒グラフでもつくってみようか、ということで左サイドメニューの「 Visualize 」リンクを押下、中央の青い「 Create a visualization 」ボタンを押下。

![visualize1](https://qiita-image-store.s3.amazonaws.com/0/251261/9de0beca-a5e1-9768-bf4e-89c216cf3f71.png)

</br>
Select visualization type では Vertical Bar を選択

![visualize2](https://qiita-image-store.s3.amazonaws.com/0/251261/43834651-1373-dc9b-fcf5-0a75d42abb13.png)

</br>
From a New Search, Select Index エリアで今回のデータである nasa をクリック。

![visualize3](https://qiita-image-store.s3.amazonaws.com/0/251261/e73a2dd8-abff-a580-a60d-e0a725ba678a.png)

</br>
初期状態では真っ白で何のデータも表示されないので、右上の期間指定メニューを押下。nasa に含まれるデータは 1995年7月・8月のデータなので「 Absolute 」を押下、

- From → 1995-07-01 00:00:00.000（年を1995 に書き換えるとカレンダーが更新されるので、7月1日を選択すると自動で 0時0分〜 になる）
- To → 1995-08-31 23:59:59.999（同様に年を 1995 を書き換え、カレンダーから 8月31日 を指定）
 
とする。最後に青い「 Go 」ボタンを押下。

![visualize4](https://qiita-image-store.s3.amazonaws.com/0/251261/e0732bf2-9fd2-5b23-8fa7-cb0e6681d1b0.png)

</br>
なんか出てきたのはいいけど、なんだこれ、と思ったら棒グラフのX軸が未指定なのか。

![visualize5](https://qiita-image-store.s3.amazonaws.com/0/251261/8466606e-b7f1-f4a0-9d06-0cc396ccbfa9.png)

</br>
X軸には日単位の表示を指定する。右にある Buckets にて X-Axis を押下、Aggregation から「 Date Histogram 」、Field に「 <span>@</span>timestamp 」、Interval に「 Daily 」を選択して、青い再生ボタン？を押下。

![visualize6](https://qiita-image-store.s3.amazonaws.com/0/251261/f9cbd351-4e09-9042-6c2e-dfad1fb6f5ba.png)

</br>
1995年7月分と8月分の、日毎のアクセス数の棒グラフが瞬時に出た。簡単だしデータ量のわりにえらい速いなおい。グラフの棒にマウスオーバーすると内容も表示される。

![visualize7](https://qiita-image-store.s3.amazonaws.com/0/251261/7bef6e74-c979-a21e-2315-7fd8cbaf09d7.png)

</br>
いままで費やしてた労力は一体なんだったのか。過去の自分に謝りたい。円グラフも同じ手順で作成できて上位/下位 n 件表示や sub-bucket を指定したドリルダウンなどもさくさくできる。楽ちんだし楽しい！

![visualize8](https://qiita-image-store.s3.amazonaws.com/0/251261/50956a20-be80-90bf-2a9d-f080aa69a1ab.png)


#参考
[Running Kibana on Docker](https://www.elastic.co/guide/en/kibana/current/docker.html)