本記事のゴール
Elasticsearchを勉強していこうという人向けにElasticsearch+Kibanaの環境構築方法をまとめます。
前提
dockerを使える状態にしておいてください
バージョン等
- Elasticsearch: 7.6.2
- kibana: 7.6.2
使うもの
- docker
- Elastic Stack
- Elasticsearch
- Kibana
コンテナ環境の構築
「Elasticsearch」、「Kibana」コンテナを作成します。
それぞれの製品に関してElastic社からコンテナイメージを提供されていますが、今回はCentOSコンテナを作成しその上でそれぞれの製品をインストールしていこうと思います。
docker networkの構築
今回はコンテナ間での通信が必要となるため、docker networkを作成する必要があります。
$ docker network create elasticstack
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
39612814bc52 bridge bridge local
b5c7f801ff0b elasticstack bridge local
b6ca1bb92159 host host local
0dc929d2724d none null local
コンテナの作成
実際にコンテナを作成していきます
上記でも説明した通り、今回は3つのコンテナを作成していきます。
それぞれのコンテナの要件は以下となります
- elasticsearchコンテナ
- name: elasticsearch
- network: elasticstack
- port: 9200:9200
- イメージ: centos:centos7
- kibanaコンテナ
- name: kibana
- network: elasticstack
- port: 5601:5601
- イメージ: centos:centos7
それぞれの設定を踏まえた上でコンテナを作成します。
$ docker run -it -d --network elasticstack -p 9200:9200 --name elasticsearch --privileged centos:centos7 /sbin/init
$ docker run -it -d --network elasticstack -p 5601:5601 --name kibana --privileged centos:centos7 /sbin/init
たちがってることを以下のコマンドで確認できます。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
479654a004cb centos:centos7 "/sbin/init" 4 minutes ago Up 4 minutes 0.0.0.0:5601->5601/tcp kibana
977d952a52a8 centos:centos7 "/sbin/init" 4 minutes ago Up 4 minutes 0.0.0.0:9200->9200/tcp elasticsearch
Elastic Stackの構築
それぞれのコンテナの設定をしていきます。
Elasticsearchコンテナ
Elasticsearchの構築
以下のコマンドによりコンテナ内に入って作業を行います。
$ docker exec -it elasticsearch /bin/bash
javaのインストールとElasticsearchのrpmをインストールします。rpmのインストールではelasticsearchインストール用のrpmが必要ですのでそれを入手するためにもwgetもインストールします。
今回はJavaのバージョンは11系、Elasticsearchは7.6.2で行っていこうと思います。
# yum install -y java-11-openjdk
# yum install -y wget
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-x86_64.rpm
# rpm --install elasticsearch-7.6.2-x86_64.rpm
Elasticsearchの設定
今回の構成ではElasticsearchがシングルクラスタであることやコンテナ上で起動していることからElasticsearhにいくつかの設定をしてあげる必要があります。ここではその設定を行っていきます。
elasticsearch.ymlの設定
elasticsearch.ymlを開いてください。
# vi /etc/elasticsearch/elasticsearch.yml
elasticsearch.ymlの一番最後の行に以下を追加してください。
cluster.name: my_cluster
node.name: elasticsearch
network.host: _site_
cluster.initial_master_nodes: ["elasticsearch"]
今回はシングルクラスタなのでcluster.name、node.name はあまり設定する必要がないですが、自分で設定する方が後々便利なので設定します。
network.host はリッスンするホストを指定します。今回はリンクローカルアドレスということで_site_を指定します。
cluster.initial_master_nodesはシングルクラスタ構成をとるには必ず必要な設定となりますので設定してください。簡単にいうとマスターノードを選定するために最低限必要なノードをここで指定します。
設定を終えたらelasticsearchを起動してみます。
# systemctl restart elasticsearch.service
以下のコマンドを打つと起動できたことを確認できます。
# curl elasticsearch:9200
{
"name" : "elasticsearch",
"cluster_name" : "my_cluster",
"cluster_uuid" : "l_xjt09CSu-43BUdBM4fkg",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Kibanaコンテナ
Kibanaの構築
以下のコマンドによりコンテナ内に入って作業を行います。
$ docker exec -it kibana /bin/bash
javaのインストールとkibnaのrpmをインストールします。rpmのインストールではkibanaインストール用のrpmが必要ですのでそれを入手するためにもwgetもインストールします。
今回はJavaのバージョンは11系、kibanaは7.6.2で行っていこうと思います。
# yum install -y java-11-openjdk
# yum install -y wget
# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-x86_64.rpm
# rpm --install kibana-7.6.2-x86_64.rpm
Kibanaの設定
コンテナ上で起動していることのでKibanaにいくつかの設定をしてあげる必要があります。ここではその設定を行っていきます。
kibana.ymlの設定
kibana.ymlを開いてください。
# vi /etc/kibana/kibana.yml
kibana.ymlの該当箇所を探して以下の設定に変更してください。
server.host: 0.0.0.0
elasticsearch.hosts: ["http://elasticsearch:9200"]
設定を終えたらelasticsearchを起動してみます。
# systemctl restart kibana.service
ここまでくるとkibanaを起動できるようになっています
以下のURLにアクセスして疎通確認をしてみましょう
http://localhost:5601
kibanaに接続後左側にあるサイドバーの「Dev Tools」に移動してください。
そうするとコンソール画面が出てくるのでそこで以下の入力を行った後、再生ボタンを押下してみてください
GET /
以下のような画面が出てくればKibana → Elasticsearchの接続も完了です。
以上がKibana+Elasticsearchお試し環境の構築方法となります。