Elasticsearch + Kibana を docker-compose でさくっと動かす


手元のログファイルをさくっと解析したくて docker-compose を使ってローカルで起動してみました。


(Machine Learning のトップ画面。ここでログファイルをインポートして Visualize で可視化しました)

環境

MacOS Mojave 10.14.4
Docker 18.09.2

手順

  1. docker-compose.yaml を作成
  2. docker-compose up
  3. ブラウザでアクセス!

docker-compose.yaml

docker-compose.yaml
version: "3"

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0
    environment:
      - discovery.type=single-node
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      - 9200:9200
    volumes:
      - es-data:/usr/share/elasticsearch/data
  kibana:
    image: docker.elastic.co/kibana/kibana:7.2.0
    ports:
      - 5601:5601

volumes:
  es-data:

なお、ホストにデータを保存したい場合は services.elasticsearch.volumes を以下のように修正し、volumes は削除します。

# 省略
    volumes:
      - ./es-data:/usr/share/elasticsearch/data
# 以下は削除
#volumes:
#  es-data:

起動

docker-compose up

ブラウザでアクセス!

少し解説

  • discovery.type=single-node
    • ローカルで検証するだけなので Development mode にすることで簡易な設定にしました。 Production mode と比較してクラスタの構築など複雑な設定をしなくてすみます。
  • bootstrap.memory_lock=true
    • スワップを使わない設定。
  • "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    • メモリ固定。

参考