はじめに
##本記事の全体構成について
本記事は、ElasticsearchとKibanaを使った環境のセットアップから、データの投入、データの検索・解析までを紹介する目的で作成した。
記事の構成は下記の通り。
1回目(本記事):Elasticsearch+Kibanaでデータ解析(①環境セットアップ編)
2回目:Elasticsearch+Kibanaでデータ解析(②スキーマ作成&データ登録編)
3回目:Elasticsearch+Kibanaでデータ解析(③グラフ&ダッシュボード作成編)
ここでは、ElasticsearchとKibanaの紹介と、それらを使った使ったデータ解析の環境の構築する方法を解説する。
#ElasticsearchとKibanaの概要
##Elasticsearch
https://www.elastic.co/products/elasticsearch
ElasticSearchとはElastic社によって開発されたデータの格納&解析ツールで、分類的にはNoSQLにわけられる製品である。Apache Licenseで公開されており、利用者はサポートが必要なければ無料で利用でき、再配布や改変も自由に行える。
##Kibana
https://www.elastic.co/products/kibana
Kibanaは、同社によって開発されたデータの可視化ツールでElasticsearchと連携をして棒グラフや円グラフなど様々なグラフを出力できる。セットアップもとても簡単にできるように設計されている。同じくApache2ライセンスで提供されている。
##どのぐらい早いの?
実際に環境を構築し、データ解析の検証を行ってみたところ、約1億件のデータ解析が5秒程度で完了した。
使ったサーバのスペックは下記の通り。(一台)
スペック項目 | スペック値 | 備考 |
---|---|---|
OS | Redhut Linux 7.2 | |
CPU | 8 cores | Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz |
メモリ | 16 GB | |
HDD | 200GB | 媒体はHDDを利用。接続はRAID0を使い、ある程度高速化 |
実際にデータ解析を始めるまでに行うには、下記3ステップが必要となる。
ここでは、それぞれのステップを分けて解説する。
1. 環境セットアップ
2. Mapping(スキーマ)作成
3. データ登録
#環境セットアップ
##インストール手順概要
Elasticsearch, Elasticsearchプラグイン, kibana の順にインストールする。
基本的には、ダウンロードして回答すればそのまま動く様になっている為、作業は簡単。
インストール方法には、①Zipファイルをダウンロードし、シェル起動する方法と②サービスとしてインストールする方法と、を動かす方法の2通り存在する。
ここでは①の方法を紹介する。
自分のサーバなどで試しに動かしてみたい場合はこの方法で良いが、サーバにインストールし皆で利用する場合、この方法では問題が有る。自動起動を含めサービスとして起動するようにインストールしたい場合は下記の記事を参考にするとよい。
Elasticsearch+Kibanaインストール(プロキシ&自動起動設定含む)
##Elasticsearch
下記の4ステップのみでセットアップが完了する(簡単!)
1.イメージダウンロード
下記コマンドを実行し、インターネット上からイメージファイルをダウンロードする。
curl -x (プロキシアドレス):(ポート) -L -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.2/elasticsearch-2.3.2.tar.gz
2.Zip解凍
ダウンロードしたファイルを解凍する。
tar -xvf elasticsearch-2.3.2.tar.gz
3.起動プログラムを実行
cd elasticsearch-2.3.2/bin
./elasticsearch
./elasticsearch.sh
(windowsの場合はelasticsearch.bat)を実行
4. 起動確認
下記メッセージが表示されれば起動成功
[2016-05-13 14:30:50,746][INFO ][node ] [Scott Summers] version[2.3.2], pid[16409], build[b9e4a6a/2016-04-21T16:03:47Z]
[2016-05-13 14:30:50,746][INFO ][node ] [Scott Summers] initializing ...
[2016-05-13 14:30:59,712][INFO ][plugins ] [Scott Summers] modules [reindex, lang-expression, lang-groovy], plugins [], sites []
[2016-05-13 14:30:59,902][INFO ][env ] [Scott Summers] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [32.1gb], net total_space [37.4gb], spins? [unknown], types [rootfs]
[2016-05-13 14:30:59,902][INFO ][env ] [Scott Summers] heap size [1015.6mb], compressed ordinary object pointers [true]
[2016-05-13 14:30:59,903][WARN ][env ] [Scott Summers] max file descriptors [4096] for elasticsearch process likely too low, consider increasing to at least [65536]
[2016-05-13 14:31:06,538][INFO ][node ] [Scott Summers] initialized
[2016-05-13 14:31:06,539][INFO ][node ] [Scott Summers] starting ...
[2016-05-13 14:31:07,193][INFO ][transport ] [Scott Summers] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
[2016-05-13 14:31:07,209][INFO ][discovery ] [Scott Summers] elasticsearch/12SFkQOqQlOr2Gw2k5M6fQ
[2016-05-13 14:31:10,375][INFO ][cluster.service ] [Scott Summers] new_master {Scott Summers}{12SFkQOqQlOr2Gw2k5M6fQ}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
[2016-05-13 14:31:10,388][INFO ][http ] [Scott Summers] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}
[2016-05-13 14:31:10,389][INFO ][node ] [Scott Summers] started
[2016-05-13 14:31:10,521][INFO ][gateway ] [Scott Summers] recovered [0] indices into cluster_state
下記URLにアクセスして、リクエストが返ってくることを確認。(status:200が返ってきていればOK)
##Kibana
https://www.elastic.co/guide/en/kibana/current/setup.html
1.イメージダウンロード
https://www.elastic.co/downloads/kibana
2.TAR解凍
tar xfvz kibana-4.5.0-linux-x64.tar.gz
3.設定ファイルを変更
config/kibana.ymlを開いて編集
vi config/kibana.yml
[kibana-4.5]
...
elasticsearch.url: yourhousname.com
...
4.起動プログラムを実行
./bin/kibana
5.起動確認
http://yourhost.com:5601
##Elasticsearchプラグインの紹介とインストール手順
Elastic searchを便利に利用するために、最低限入れたほうが良いプラグインのインストール方法を紹介する。
!:インストールしたElasticsearchのバージョンが最新の場合、一部プラグインはインストール出来ないことが有ることに注意する。
###Marvel
Elasticsearchのステータスが監視できる。こちらは1ヶ月だけ無償で利用可能だが、引き続き利用するには別途ライセンスの登録が必要となる。
インストール手順:
#Elasticsearchのインストールパスに移動。下記はYumでインストール場合のパス
cd /share/usr/elasticsearch
#プラグインのインストール。まずはElasticsearchのプラグインをインストール
sudo bin/plugin install license -DproxyHost=172.21.1.141 -DproxyPort=12080
sudo bin/plugin install marvel-agent -DproxyHost=172.21.1.141 -DproxyPort=12080
#次に、Kibanaのプラグインをインストール
#まずはKibanaのインストールパスに移動する。下記はYumでインストールした場合のパス
cd /opt/kibana
wget https://download.elastic.co/elasticsearch/marvel/marvel-latest.tar.gz
bin/kibana plugin -i marvel -u file:./marvel-latest.tar.gz
最後に、ElasticsearchとKibanaをそれぞれ再起動する。
確認:
kibanaのURL+/app/marvelにアクセスすると、下記の様な画面が表示される。
###Sense
Elasticsearchのコマンドをブラウザから実行できるようになる。コマンドの補完機能や保存機能がついており、何度も同じコマンドを実行したりする場合に便利。
インストール手順:
下記の通り、コマンドを実行する。
$ wget https://download.elasticsearch.org/elastic/sense/sense-latest.tar.gz
$ sudo bin/kibana plugin -i sense -u file:./sense-latest.tar.gz
確認:
kibanaのURL+/app/senseにアクセスすると、下記の様な画面が表示される
###Kuromoji
用途:
Kibana上で日本語を正しく解析する際に必要となるプラグイン
インストール手順:
下記のコマンドを実行する
$ cd /usr/share/elasticsearch
$ sudo bin/plugin install analysis-kuromoji
#補足:アプリケーション起動・停止コマンド
Yumでインストールした場合は、Serviceコマンドを使ってアプリケーションの起動・停止が行えるが、Zip解凍したプログラムを起動するやり方だと、少し停止をする場合に手間がかかる。下記の通り、PIDを探して、そのプロセスをKillする必要がある。
##Elasticsearch
実行コマンド | |
---|---|
起動 | $ELASTIC_HOME/bin/elasticsearch & |
停止 |
ps -ef (縦棒※) grep elastic で見つけたPID を kill -9 する |
※正しくは ps -ef | grep elastic
##Kibana
実行コマンド | |
---|---|
起動 | $KIBANA_HOME/bin/kibana & |
停止 |
ps -ef (縦棒) grep kibana で見つけたPID を kill -9 する |
スキーマ作成&データ登録編に続く。
http://qiita.com/windows222/private/1cc5c49d58c2c59bfa81