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を参照 |
0 コンテナの起動
ローカルからDockerfileを転送します。
- master1用設定を転送
scp -r ~/OneDrive/docker/elasticsearch agent-master1:/etc/
scp -r ~/OneDrive/docker/elasticsearch/master1/config agent-master1:/etc/elasticsearch/
- master2用設定を転送
scp -r ~/OneDrive/docker/elasticsearch agent-master2:/etc/
scp -r ~/OneDrive/docker/elasticsearch/master2/config agent-master2:/etc/elasticsearch/
- master3用設定を転送
scp -r ~/OneDrive/docker/elasticsearch agent-master3:/etc/
scp -r ~/OneDrive/docker/elasticsearch/master3/config agent-master3:/etc/elasticsearch/
Dockerイメージをビルドして起動します。
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イメージからの起動
docker run -i -t -d -p 9200:9200 -p 9300:9300 --name elasticsearch1 centos:6 /bin/bash
0 Javaのアップグレード
現在インストールされているJDKの削除
- 確認
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を確認
yum -y remove java-1.6.0-openjdk
yum search java | grep 'java-'
最新版のJDKをインストール
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 ダウンロードおよび解凍
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の範囲のポートを自動で割り当ててくれる)
詳しくは公式リファレンスを参照
設定ファイルの中のコメントが非常に充実していて役に立つ
/usr/local/elasticsearch/config/elasticsearch.yml
3 Elasticsearchをデーモンとして起動する。
今回は行わないが、詳しくはこちらを参照。
4 起動
elasticsearch では、cluster.name に同じ名前を指定しておけばこのように自動的にノードを検出してクラスタを構成してくれます。
ただし、クラスタの構成が実行されるのは各ノードの起動時だけなのか、master ノードの起動を待たずに連続で複数のノードを起動した場合、正しく master ノードを検出してくれない事があるようでした。参照
elasticsearch -Des.cluster.name=mycluster &
5 視覚化ツールを導入する
こちらを参照
5.1 headを導入
/usr/local/elasticsearch/bin/plugin -install mobz/elasticsearch-head
5.2 ブラウザでhttp://localhost:9200/_plugin/head/ を開きます。
5.3 Marvelを導入
/usr/local/elasticsearch/bin/plugin -i elasticsearch/marvel/latest
RUN echo 'marvel.agent.enabled: false' >> /usr/local/elasticsearch/config/elasticsearch.yml