Elasticsearchの3台構成のクラスタを作る + Kibanaを使えるようにするところまで書く。
環境
- Vagrant
- CentOS7のVMを3つ
- Elasticsearch 2.4.0
- Kibana 4.6.1
- Java8
Vagrantの設定
Vagrantfileは次の通り。VMを3台作成する。ついでにJava8をインストールしておく。
Vagrant.configure("2") do |config| |
VMを起動しておく。$ vagrant up
$ vagrant ssh node1
Elasticsearch
インストール
公開されているrpmファイルを使って3VMに対してそれぞれインストールする。
$ sudo yum install -y https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.4.0/elasticsearch-2.4.0.rpm |
設定
ほぼデフォルトで必要最低限の設定をする。クラスタにしたいのでクラスタ名とクラスタに参加させるノードのIPアドレスを設定しておく。
$ sudo cd /etc/elasticsearch |
デフォルトでは、shard:5とreplica:1が設定される。
プラグイン
shardとreplicaの配置がブラウザで見られると便利なのとクエリが実行できるので、elasticsearch-headをインストールする。
$ rpm -qs elasticsearch | grep plugin |
起動
3つのVMでelasticsearchを起動する。
$ sudo /etc/init.d/elasticsearch start |
確認
クラスタの設定がうまく行っていると3つのノードが表示される。
$ curl http://192.168.33.10:9200/_cat/nodes |
http://192.168.33.10:9200/_plugin/head/
に接続するとElasticsearchのステータスが確認できる。
最初は何も作っていないので何も表示されないはずですがデータがあるとshardとreplicaの配置が確認できます。
Kibana
インストール
node1だけにRPMを使ってインストールする。
$ yum install -y https://download.elastic.co/kibana/kibana/kibana-4.6.1-x86_64.rpm |
設定と起動
何も設定せずに起動すると以下の様にElasticsearchにつながらないと言われてしまうので接続先だけ設定する。
Unable to connect to Elasticsearch at http://localhost:9200.
/etcにkibanaの設定ファイルがないので探して設定する。$ rpm -qs kibana | grep kibana.yml
normal /opt/kibana/config/kibana.yml
$ grep -v -e "^$" -e "^#" /opt/kibana/config/kibana.yml
elasticsearch.url: "http://192.168.33.10:9200"
起動する。$ /etc/init.d/kibana start
デフォルトのポートは5601なのでhttp://192.168.33.10:5601
に接続するとkibanaの画面が表示される。
Marvel
elasticsearch-headはshard/replicaの確認、クエリ実行ができたが、marvelはshard/replicaの配置と各種メトリクスの確認ができるプラグインです。ライセンスの登録が必要ですが、プロダクション環境でも無料で使えます。マルチクラスタのモニタリングサポートが必要な場合だけ商用ライセンスが必要です。
licenseとmarvel-agentをクラスタのすべてのノードにインストールします。$ /usr/share/elasticsearch/bin/plugin install license
$ /usr/share/elasticsearch/bin/plugin install marvel-agent
$ /etc/init.d/elasticsearch restart
kibanaにmarvelをインストールします。$ /opt/kibana/bin/kibana plugin --install elasticsearch/marvel/latest
$ /etc/init.d/kibana restart
http://192.168.33.10:5601/app/marvel
に接続すると以下の様な画面が表示されます。
indexを選ぶと、次のようにステータスとshardやreplicaの状況が見られます。
適当なデータをインポートする
時系列データではないがここにあるデータをインポートしてみる。
{ |
ココで上記のjsonデータが2000件入ったファイルがダウンロードできる。ダウンロードしてzipファイルを解答した後にインポートする。
$ ls accounts.json |
ageをパイチャートに表示してみる。
Logstashとかfluentdも近いうちに。
おわり。