Elastic Stack 5.0.0 rc-1（Elasticsearch+Kibana+Logstash without Beats）


ここ最近はエンハンス作業ばかりで、全然モダンなアーキテクチャに触れてこなかった原始人ですが、新規にアーキテクチャを構築する機会がきましたので、流行りのロギングスタイルを体験したいと思います。

## Elastic Stack

ロギングサーバなんてほんとに考えたことなかった（原始人）。
[Elastic Stack](https://www.elastic.co/jp/products)のロギングを体験しましょう。

Elastic StackはElasticsearch+Kibana+Logstash+Beats(MetricBeat、WinlogBeatなど特化したモニタリングパッケージの総称？)で構成されますが、初めてなのでミニマムにいきました。

次のパッケージを使います。

- Elasticsearch 5.0.0-rc1
- Kibana 5.0.0-rc1
- Logstash 5.0.0-rc1

```bat
C:\dev\elastic\elasticsearch-5.0.0-rc1
C:\dev\elastic\kibana-5.0.0-rc1-windows-x86
C:\dev\elastic\logstash-5.0.0-rc1
```

ちなみにOSはWin7 Pro 64bit。全部ローカルホストで行っています。

## Elasticsearch

おもむろにダブルクリック

```bat
C:\dev\elastic\elasticsearch-5.0.0-rc1\bin\elasticsearch.bat
```

![01.png](https://qiita-image-store.s3.amazonaws.com/0/68978/357b8f2a-973f-cba3-6863-d6bd0ac69fc4.png)

![02.png](https://qiita-image-store.s3.amazonaws.com/0/68978/07ca6cbc-981e-6c56-ea00-178f29f46544.png)

動いてるっぽい！

## Kibana

さりげなくダブルクリック

```bat
C:\dev\elastic\kibana-5.0.0-rc1-windows-x86\bin\kibana.bat
```

![03.png](https://qiita-image-store.s3.amazonaws.com/0/68978/a4f22e0b-0156-d919-fd22-b67aa20622fc.png)

`http://localhost:5601/`をたたくと・・・
![04_.png](https://qiita-image-store.s3.amazonaws.com/0/68978/8fbcfe5b-bb51-612d-9e97-c78c419bc1f1.png)

でた！
なんか怒られてるけどよくわからん

## Logstash

ダブルクリックしちゃうぞ

```bat
C:\dev\elastic\logstash-5.0.0-rc1\bin\logstash.bat
```

コマンドプロンプトがﾁｭﾝｯって落ちたので、調べたオプションでたたく。

```bat
bin\logstash -e 'input { stdin { } } output { stdout {} }'
```
> https://www.elastic.co/guide/en/logstash/current/first-event.html

![05.png](https://qiita-image-store.s3.amazonaws.com/0/68978/13c01903-8625-38a5-1ee2-59025f315af7.png)

エラーらしきものはでてるけど、とりあえず

```bat:
Successfully started Logstash API endpoint {:port=>9600}
```
と出たので動いてる？

`Hello World`と入力してEnter。

![06.png](https://qiita-image-store.s3.amazonaws.com/0/68978/d4ab1452-2013-e980-68ad-e5f08f22808b.png)

レスポンス`2016-10-18T07:15:17.175Z FUK064 Hello World`が返ってきた！

## Logstash=>Elasticsearch

ここから！
https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html#configuring-file-input

Logstashのパイプラインを定義するファイルを書いてみた。
ファイルの置き場所は関係ないかも？

```js:logstash-5.0.0-rc1\config\first-pipeline.conf
input {
  stdin {}
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
  }
}
```

ここから！
https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html#testing-initial-pipeline

設定ファイルがテストできるらしい

```bat
bin\logstash -f config\first-pipeline.conf --config.test_and_exit
```
> v2.x以前はオプションが`--configtest`みたいだけど、v5.xは変わってるっぽい。
> `bin\logstash --help`で確認できます。

![07.png](https://qiita-image-store.s3.amazonaws.com/0/68978/70e78d9b-234a-7386-77f5-483f49991973.png)

さっきと同じようなエラーが出てるけど、`Configuration OK`って書いてるからきっといいんだろう！

実行してみる。

```bat
bin\logstash -f config\first-pipeline.conf
```

![08.png](https://qiita-image-store.s3.amazonaws.com/0/68978/590792ac-0df0-71e8-86c6-150086e24a50.png)

`Hello Logstash`と打ってみた。

Elasticsearchのログをみると

![09.png](https://qiita-image-store.s3.amazonaws.com/0/68978/47df284f-74a3-4cea-69cf-5b7afa0e9a21.png)

増えてますねぇ！

```bat
[2016-10-18T16:49:55,135][INFO ][o.e.c.m.MetaDataCreateIndexService] [plCY4gH] [logstash-2016.10.18] creating index, cause [auto(bulk api)], templates [logstash], shards [5]/[1], mappings [_default_]
[2016-10-18T16:49:57,963][INFO ][o.e.c.m.MetaDataMappingService] [plCY4gH] [logstash-2016.10.18/ICgetCtwSg2fOMmDWk8YxA] create_mapping [logs]
```

マニュアルに従ってブラウザから見てみる。
`http://localhost:9200/logstash-2016.10.18/_search?pretty&q=response=200`

![10.png](https://qiita-image-store.s3.amazonaws.com/0/68978/5fe60c60-edd9-42a0-1a08-691238056992.png)

中身ないやん。パラメータ減らしてみる。
`http://localhost:9200/logstash-2016.10.18/_search?pretty`

![11.png](https://qiita-image-store.s3.amazonaws.com/0/68978/d7994d54-5758-e3b1-ade7-3fc77a1b3d29.png)

プリチー！
除いたパラメータは今度調べとこう。

## Elasticsearch=>Kibana

ここから！
https://www.elastic.co/guide/en/kibana/5.0/setup.html#connect

Kibanaの画面を見てみると、何もしてないのに変化が！

![12.png](https://qiita-image-store.s3.amazonaws.com/0/68978/1a27735d-d2d6-8bac-4e89-39c562ac6b39.png)

さっきまで`Time-field name`のとこには、非活性のボタンだけが置いてありました（ラベルは`Un ・・・`とかだったような気がする長いの）。

Logstashの内容をみるリクエストはデフォルトから変えてないので、そのまま「Create」してしまいます。

![13.png](https://qiita-image-store.s3.amazonaws.com/0/68978/f15ad9a2-48e0-e19e-15a2-e2d0a1fc17e2.png)

おおおおなんかでた！

マニュアルをみると、もうStart Exploring your Dataだって。
https://www.elastic.co/guide/en/kibana/5.0/setup.html#explore

### Discover

![14.png](https://qiita-image-store.s3.amazonaws.com/0/68978/fe3c3029-ee08-b816-86fa-5b5b7d9d7596.png)

1件ありますね！

![15.png](https://qiita-image-store.s3.amazonaws.com/0/68978/0d192cc4-a8c4-26cc-8a8f-e8211e495a33.png)

JSONとかも詳細に見られます。

### Visualize

![16_.png](https://qiita-image-store.s3.amazonaws.com/0/68978/996c8265-b24f-9872-35a4-7eb712461c99.png)

グラフの形を選ぶ。AreaChartにしようと思ったけど、データ少ないせいか？うまく作成できなかったのでPieChartで。

![16.png](https://qiita-image-store.s3.amazonaws.com/0/68978/13a8a23c-bba6-15e3-87c0-979c866b44c8.png)

インデックスを選ぶことで、グラフ作成が開始。

![17.png](https://qiita-image-store.s3.amazonaws.com/0/68978/d5d823a0-2e65-0667-067c-dea9089fcf37.png)

Majestic!

画面上部の「Save」を押すと、Vsualizationを保存できます。
これは次のDashboardで利用できますので、名前を付けておきましょう。

![19.png](https://qiita-image-store.s3.amazonaws.com/0/68978/b8a5c53e-2cd7-361f-5430-bc9f618d601a.png)

### Dashboard

何もないですね。

![18_.png](https://qiita-image-store.s3.amazonaws.com/0/68978/856e6758-44f6-515d-0d71-f69292558cc7.png)

「Add」をしろと書いてあるので、「Add」しましょう。
Addできる部品として、先ほど作成したVisualizationが表示されているので、選びます。

![20.png](https://qiita-image-store.s3.amazonaws.com/0/68978/c6812baa-8032-b04c-6bf0-f6c741419dd5.png)

選択すると、DashboardにAddされました。

![21.png](https://qiita-image-store.s3.amazonaws.com/0/68978/3db45cdf-f3b4-f200-d8d3-293b5a458984.png)

まぁなんと微々たる成果ですが、積み重ねれば、いろいろFabulousなDashboardができるに違いありません。

https://www.google.co.jp/search?q=kibana&espv=2&biw=1366&bih=702&tbm=isch&tbo=u&source=univ&sa=X&ved=0ahUKEwjt0ryQte3PAhXCW5QKHb6EC8UQsAQISw&dpr=1

## ここまでのまとめ

いきなり新バージョンですが、初めてElastic Stackを体験しました。
レガシーなファイル、DBでのロギングしか知りませんでしたが、こんなに簡単に利用できて驚きです。まるでマジック。

## これから

ほんとはこのスタックを、Yeoman Genearatorの[jHipster](https://jhipster.github.io/)でScaffoldしたシステムに組み込もうと思っていましたが、なんとjHipster達、自分用の[jHipster Console](https://jhipster.github.io/monitoring/)とかいうのを作ってるみたいじゃないですか。しかもElastic Stackベース。

この体験は無駄にはなりませんでしたが、jHipster Consoleに浮気するので、プレーンなElastic Stackを実導入するのは、もう少し先になりそうです。

今回はここまで。