ここ最近はエンハンス作業ばかりで、全然モダンなアーキテクチャに触れてこなかった原始人ですが、新規にアーキテクチャを構築する機会がきましたので、流行りのロギングスタイルを体験したいと思います。
Elastic Stack
ロギングサーバなんてほんとに考えたことなかった(原始人)。
Elastic Stackのロギングを体験しましょう。
Elastic StackはElasticsearch+Kibana+Logstash+Beats(MetricBeat、WinlogBeatなど特化したモニタリングパッケージの総称?)で構成されますが、初めてなのでミニマムにいきました。
次のパッケージを使います。
- Elasticsearch 5.0.0-rc1
- Kibana 5.0.0-rc1
- Logstash 5.0.0-rc1
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
おもむろにダブルクリック
C:\dev\elastic\elasticsearch-5.0.0-rc1\bin\elasticsearch.bat
動いてるっぽい!
Kibana
さりげなくダブルクリック
C:\dev\elastic\kibana-5.0.0-rc1-windows-x86\bin\kibana.bat
http://localhost:5601/
をたたくと・・・
でた!
なんか怒られてるけどよくわからん
Logstash
ダブルクリックしちゃうぞ
C:\dev\elastic\logstash-5.0.0-rc1\bin\logstash.bat
コマンドプロンプトがチュンッって落ちたので、調べたオプションでたたく。
bin\logstash -e 'input { stdin { } } output { stdout {} }'
https://www.elastic.co/guide/en/logstash/current/first-event.html
エラーらしきものはでてるけど、とりあえず
Successfully started Logstash API endpoint {:port=>9600}
と出たので動いてる?
Hello World
と入力してEnter。
レスポンス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のパイプラインを定義するファイルを書いてみた。
ファイルの置き場所は関係ないかも?
input {
stdin {}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
}
}
ここから!
https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html#testing-initial-pipeline
設定ファイルがテストできるらしい
bin\logstash -f config\first-pipeline.conf --config.test_and_exit
v2.x以前はオプションが
--configtest
みたいだけど、v5.xは変わってるっぽい。
bin\logstash --help
で確認できます。
さっきと同じようなエラーが出てるけど、Configuration OK
って書いてるからきっといいんだろう!
実行してみる。
bin\logstash -f config\first-pipeline.conf
Hello Logstash
と打ってみた。
Elasticsearchのログをみると
増えてますねぇ!
[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
中身ないやん。パラメータ減らしてみる。
http://localhost:9200/logstash-2016.10.18/_search?pretty
プリチー!
除いたパラメータは今度調べとこう。
Elasticsearch=>Kibana
ここから!
https://www.elastic.co/guide/en/kibana/5.0/setup.html#connect
Kibanaの画面を見てみると、何もしてないのに変化が!
さっきまでTime-field name
のとこには、非活性のボタンだけが置いてありました(ラベルはUn ・・・
とかだったような気がする長いの)。
Logstashの内容をみるリクエストはデフォルトから変えてないので、そのまま「Create」してしまいます。
おおおおなんかでた!
マニュアルをみると、もうStart Exploring your Dataだって。
https://www.elastic.co/guide/en/kibana/5.0/setup.html#explore
Discover
1件ありますね!
JSONとかも詳細に見られます。
Visualize
グラフの形を選ぶ。AreaChartにしようと思ったけど、データ少ないせいか?うまく作成できなかったのでPieChartで。
インデックスを選ぶことで、グラフ作成が開始。
Majestic!
画面上部の「Save」を押すと、Vsualizationを保存できます。
これは次のDashboardで利用できますので、名前を付けておきましょう。
Dashboard
何もないですね。
「Add」をしろと書いてあるので、「Add」しましょう。
Addできる部品として、先ほど作成したVisualizationが表示されているので、選びます。
選択すると、DashboardにAddされました。
まぁなんと微々たる成果ですが、積み重ねれば、いろいろFabulousなDashboardができるに違いありません。
ここまでのまとめ
いきなり新バージョンですが、初めてElastic Stackを体験しました。
レガシーなファイル、DBでのロギングしか知りませんでしたが、こんなに簡単に利用できて驚きです。まるでマジック。
これから
ほんとはこのスタックを、Yeoman GenearatorのjHipsterでScaffoldしたシステムに組み込もうと思っていましたが、なんとjHipster達、自分用のjHipster Consoleとかいうのを作ってるみたいじゃないですか。しかもElastic Stackベース。
この体験は無駄にはなりませんでしたが、jHipster Consoleに浮気するので、プレーンなElastic Stackを実導入するのは、もう少し先になりそうです。
今回はここまで。