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

  • basic : X-Pack Basicがインストールされている
  • oss X-Packがインストールされておらず、OSSのelasticsearchが入っている。

今回は開発用としてとりあえず立てたいだけなので、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が表示される。
f:id:replicity:20190127183400p:plain

おまけ

上で立てた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を入れたので、メニューが増えている。 f:id:replicity:20190127183601p:plain

ライセンスの適用 (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
  }
}

参考