Help us understand the problem. What is going on with this article?

Elasticsearch+Kibanaでデータ解析(①環境セットアップ編)

More than 1 year has passed since last update.

はじめに

本記事の全体構成について

本記事は、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ライセンスで提供されている。
rows_as_groups.png

どのぐらい早いの?

実際に環境を構築し、データ解析の検証を行ってみたところ、約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)
 image

https://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html

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.yml
[kibana-4.5]
...
elasticsearch.url: yourhousname.com
...

4.起動プログラムを実行
 ./bin/kibana

5.起動確認
 http://yourhost.com:5601

Elasticsearchプラグインの紹介とインストール手順

Elastic searchを便利に利用するために、最低限入れたほうが良いプラグインのインストール方法を紹介する。

!:インストールしたElasticsearchのバージョンが最新の場合、一部プラグインはインストール出来ないことが有ることに注意する。

Marvel

Elasticsearchのステータスが監視できる。こちらは1ヶ月だけ無償で利用可能だが、引き続き利用するには別途ライセンスの登録が必要となる。

インストール手順:

command
#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にアクセスすると、下記の様な画面が表示される。
rows_as_groups.png

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にアクセスすると、下記の様な画面が表示される

rows_as_groups.png

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away