docker-composeで開発用にelasticsearchとkibanaを立てる
利用するimage
elasticsearchの公式imageは3種類ある。
The images are available in three different configurations or "flavors".
The basic flavor, which is the default, ships with X-Pack Basic features pre-installed and automatically activated with a free licence.
The platinum flavor features all X-Pack functionally under a 30-day trial licence. The oss flavor does not include X-Pack, and contains only open-source Elasticsearch.
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/docker.html
- basic : フリーライセンス、X-Pack Basicがインストールされている
- platinum : X-Packの全ての機能が入っていて、30日のトライアルライセンス
- oss X-Packがインストールされておらず、OSSのelasticsearchが入っている。
kibanaの公式imageは2種類ある。
The images are available in two different configurations or "flavors".
The x-pack flavor, which is the default, ships with X-Pack features pre-installed. The oss flavor does not include X-Pack, and contains only open source Kibana.
https://www.elastic.co/guide/en/kibana/6.2/docker.html
今回は開発用としてとりあえず立てたいだけなので、X-Packが入っていないOSS版を利用する。
docker-compose
公式サイトにかかれているdocker-compose
の設定を参考に作成したものがこちら。
version: "3" services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.4 container_name: elasticsearch environment: - cluster.name=docker-cluster - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata1:/usr/share/elasticsearch/data ports: - 9200:9200 kibana: image: docker.elastic.co/kibana/kibana-oss:6.2.4 container_name: kibana links: - elasticsearch:elasticsearch ports: - 5601:5601 volumes: esdata1: driver: local
設定していることは下記。
- kibanaからelasticsearchに接続
- 9200ポートでelasticsearch、5601ポートでkibanaにアクセス
- elasticsearchのデータを残すためにvolumeをマウント
この状態でdocker-compose up
すればelasticsearchとkibanaが立ち上がる。
$docker-compost up # 別ウィンドウでシェルを立ち上げて起動していることを確認 $ curl '127.0.0.1:9200' { "name" : "6bfm0uu", "cluster_name" : "docker-cluster", "cluster_uuid" : "Wv9oXM4mS9O66WhI4d4DuA", "version" : { "number" : "6.2.4", "build_hash" : "ccec39f", "build_date" : "2018-04-12T20:37:28.497551Z", "build_snapshot" : false, "lucene_version" : "7.2.1", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" } $ curl '127.0.0.1:9200/_cat/indices?v' health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .monitoring-es-6-2019.01.27 wJHPWNTlTmakw24pR1oLzA 1 0 5623 6 5.3mb 5.3mb green open .monitoring-kibana-6-2019.01.27 8kPG3bE6Rr2bykskvBaESA 1 0 800 0 649kb 649kb green open .kibana bf2Q6gT-SI67CkvQS_8-mA 1 0 1 0 4kb 4kb
この状態でlocalhost:9200
にアクセスでelasticsearchにつながる。
ブラウザでlocalhost:5601
にアクセスするとkibanaが表示される。
おまけ
上で立てたelasticsearchとkibanaをしばらく使っていたのですが、kibanaでfilterした結果をCSVファイルとしてダウンロードしようと思ったら、X-Packが必要とのことでX-Packを入れた版のdcoker-compose.yaml
も作成。
X-Packを入れる場合
ライセンス登録(6.2以下を使用して、1ヶ月以上使う予定の場合)
何も登録しない場合には1ヶ月でライセンスが切れるので、それ以上使用する場合にはライセンスの登録が必要。
ちなみに、X-Packのbasicライセンスは6.3からデフォルトで入っているようになったので、6.3以降は使用する場合はライセンス登録する必要はない。
ライセンスの登録は下記にサイトにアクセスして、指示に従って適当に進めればOK。
登録が完了して、ダウンロードしたライセンス情報のjsonは後で使うので、場所がわかるようにしておく。
https://register.elastic.co/registration
docker-compose
X-Packを入れた以外は、特に変更点はないです。(imageが変わってる)
version: "3" services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4 container_name: elasticsearch environment: - cluster.name=docker-cluster - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata1:/usr/share/elasticsearch/data ports: - 9200:9200 kibana: image: docker.elastic.co/kibana/kibana:6.2.4 container_name: kibana links: - elasticsearch:elasticsearch ports: - 5601:5601 volumes: esdata1: driver: local
X-Packを入れたので、メニューが増えている。
ライセンスの適用 (6.2以下を使用して、1ヶ月以上使う予定の場合)
elasticsearchに対して、ダウンロードしたライセンスファイルを指定することで、ライセンスを適用します。
# ライセンスの確認 $ curl -XGET 'http://localhost:9200/_xpack/license' { "license" : { "status" : "active", "uid" : "65e1b347-ed45-4f36-8a1f-5233ef4608a7", "type" : "basic", "issue_date" : "2019-01-27T08:58:11.429Z", "issue_date_in_millis" : 1548579491429, "expiry_date" : "2019-02-26T08:58:11.429Z", "expiry_date_in_millis" : 1551171491429 "max_nodes" : 1000, "issued_to" : "docker-cluster", "issuer" : "elasticsearch", "start_date_in_millis" : -1 } } # 適用 $ curl -XPUT -u elastic:changeme 'http://localhost:9200/_xpack/license?acknowledge=true' -H "Content-Type: application/json" -d @license.json {"acknowledged":true,"license_status":"valid"}% # 確認 $ curl -XGET 'http://localhost:9200/_xpack/license' { "license" : { "status" : "active", "uid" : "c5e7b07a-9630-4712-bbef-3e6f37df29ee", "type" : "basic", "issue_date" : "2019-01-27T00:00:00.000Z", "issue_date_in_millis" : 1548547200000, "expiry_date" : "2020-01-27T23:59:59.999Z", "expiry_date_in_millis" : 1580169599999, "max_nodes" : 100, "issued_to" : "##########", "issuer" : "Web Form", "start_date_in_millis" : 1548547200000 } }