Elasticsearch+Marvelの導入

#Elasticsearch+Marvelの導入

- 時系列データを様々な角度から分析できるElasticsearchを導入。さらに、Marvelでグラフ化してみます。

---
System requirements

|**Software**|**Version**|
|------------|-----------|
| OS | Cent OS 6.0(final) |
| Java | Open JDK 6 |
| Elasticsearch | -|
|------------|-----------|

---
The system will be ...

|**Software**|**Version**|
|------------|-----------|
| OS | Cent OS 6.0(final) |
| Java | Open JDK 8 |
| Elasticsearch | 1.4.2 (http.port:9200)|
|------------|-----------|

|**ポートを利用するライブラリ**|**目的**|**ポート番号**|
|---|---|---|
| Elasticsearch | Web UI & Search API | 9200 |
| Elasticsearch | Transport & Clustering | 9300 |
※ポート番号の解説は[Talking to Elasticsearch](http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_talking_to_elasticsearch.html)を参照

##0 コンテナの起動

ローカルからDockerfileを転送します。 

- master1用設定を転送

~~~sh
scp -r ~/OneDrive/docker/elasticsearch agent-master1:/etc/
scp -r ~/OneDrive/docker/elasticsearch/master1/config agent-master1:/etc/elasticsearch/
~~~

- master2用設定を転送

~~~sh
scp -r ~/OneDrive/docker/elasticsearch agent-master2:/etc/
scp -r ~/OneDrive/docker/elasticsearch/master2/config agent-master2:/etc/elasticsearch/
~~~

- master3用設定を転送

~~~sh
scp -r ~/OneDrive/docker/elasticsearch agent-master3:/etc/
scp -r ~/OneDrive/docker/elasticsearch/master3/config agent-master3:/etc/elasticsearch/
~~~

Dockerイメージをビルドして起動します。

~~~sh
docker build -t soushi/elasticsearch:1.0 /etc/elasticsearch/
docker run -i -t -d -p 131.113.102.202:9200:9200 -p 131.113.102.202:9300:9300 -v /etc/elasticsearch/config:/usr/local/elasticsearch/config -v /var/log/elasticsearch:/var/log/elasticsearch -v /etc/localtime:/etc/localtime:ro --name elasticsearch soushi/elasticsearch:1.0
~~~

- Centos:6イメージからの起動

~~~sh
docker run -i -t -d -p 9200:9200 -p 9300:9300 --name elasticsearch1 centos:6 /bin/bash
~~~

---
##0 Javaのアップグレード

現在インストールされているJDKの削除

- 確認

~~~sh
su
java -version
#>java version "1.6.0_33"
#>OpenJDK Runtime Environment (IcedTea6 1.13.5) (rhel-1.13.5.1.el6_6-x86_64)
#>OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
~~~

- 削除&最新版のJDKを確認

~~~sh
yum -y remove java-1.6.0-openjdk
yum search java | grep 'java-'
~~~

最新版のJDKをインストール

~~~sh
yum -y install java-1.8.0-openjdk-devel.x86_64
sed -i -e 's/^export\ JAVA_HOME/#export\ JAVA_HOME/g' /etc/profile;
sed -i -e '/^#export\ JAVA_HOME/a export\ JAVA_HOME=\/usr\/lib\/jvm\/java-1\.8\.0-openjdk\/' /etc/profile;
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
echo "export PATH=\$PATH:$JAVA_HOME/bin" >> /etc/profile
export PATH=$PATH:$JAVA_HOME/bin
~~~

---

##1 ダウンロードおよび解凍

~~~sh
mkdir /usr/local/download
cd /usr/local/download/
curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.2.tar.gz
yum -y install tar
tar xvzf elasticsearch-1.4.2.tar.gz
mv elasticsearch-1.4.2 ../
cd ..
ln -s elasticsearch-1.4.2/ elasticsearch
echo "export PATH=\$PATH:/usr/local/elasticsearch/bin" >> /etc/profile
export PATH=$PATH:/usr/local/elasticsearch/bin
~~~

##2 設定 
###Elasticsearchは特に設定を行わなくても、簡単に複数ノードによるクラスタリングが可能。(デフォルトで9200- 9300の範囲のポートを自動で割り当ててくれる)

詳しくは[公式リファレンスを参照](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-configuration.html)
設定ファイルの中のコメントが非常に充実していて役に立つ
/usr/local/elasticsearch/config/elasticsearch.yml

##3 Elasticsearchをデーモンとして起動する。
今回は行わないが、詳しくは[こちら](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-service.html)を参照。

##4 起動
elasticsearch では、cluster.name に同じ名前を指定しておけばこのように自動的にノードを検出してクラスタを構成してくれます。
ただし、クラスタの構成が実行されるのは各ノードの起動時だけなのか、master ノードの起動を待たずに連続で複数のノードを起動した場合、正しく master ノードを検出してくれない事があるようでした。[参照](http://d.hatena.ne.jp/akishin999/20130315/1363356107)

~~~sh
elasticsearch -Des.cluster.name=mycluster &
~~~

##5 視覚化ツールを導入する
こちらを[参照](http://mobz.github.io/elasticsearch-head/)
###5.1 headを導入

~~~sh
/usr/local/elasticsearch/bin/plugin -install mobz/elasticsearch-head
~~~

###5.2 ブラウザでhttp://localhost:9200/_plugin/head/ を開きます。

![Elasticsearch Fig 1.png](https://qiita-image-store.s3.amazonaws.com/0/9023/7275c352-f89d-daf5-ddb4-a2e5bde51d94.png)


###5.3 Marvelを導入

~~~sh
/usr/local/elasticsearch/bin/plugin -i elasticsearch/marvel/latest
RUN echo 'marvel.agent.enabled: false' >> /usr/local/elasticsearch/config/elasticsearch.yml
~~~

###5.4 ブラウザでhttp://localhost:9200/_plugin/marvel/ を開きます。

![Elasticsearch Fig 2.png](https://qiita-image-store.s3.amazonaws.com/0/9023/162e250f-8b33-4650-025c-676c53e9887a.png)



#References
[公式ガイド](
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html)