/elasticsearch-kibana-docker

Elasticsearch + Kibana + Docker Compose

Primary LanguageShell

Elasticsearch + KibanaDocker Composeで動かす

概要

  • Docker Composeを利用して、Elasticsearchを3ノード1クラスタ構成で起動させた
  • Kibanaも立ち上げて、Elasticsearchと連携させた
  • Docker Composeの設定値について、自分の理解した内容をまとめた

更新履歴

  • 2022/03/13
    • Elasctic Stackのver.を7.9.1=>8.1.0へ変更
  • 2020/09/17
    • Elasctic Stackのver.を7.7=>7.9.1へ変更
    • Docker Compose(Mac)のver.を1.25.5=>1.27.2で動作確認
  • 2020/06/07
    • Elasctic Stackのver.を6.3.1=>7.7へ変更
    • Docker Compose(Mac)のver.を1.22.0=>1.25.5で動作確認

GitHub

環境

  • Elasticsearch 8.1.0
  • Kibana 8.1.0
  • Docker version 20.10.7
  • Docker Compose 1.29.2

必要なファイル

.
├── docker-compose.yml
└── .env # PASSWORD の設定が必要

動作確認

起動

以下の手順でElasticsearchKibanaのコンテナを起動させる

## リポジトリをcloneして、docker-compose.ymlが配置されているディレクトリに移動
$ git clone https://github.com/sugikeitter/elasticsearch-kibana-docker.git
$ cd elasticsearch-kibana-docker

## ELASTIC_PASSWORD と KIBANA_PASSWORD を設定
vi .env

## docker-compose.ymlからDockerイメージをビルドして起動
$ docker-compose up -d

## docker-compose.ymlからDockerイメージをビルドして起動(起動時のログが見たい場合)
$ docker-compose up

## クラスターを停止
$ docker-compose down

## クラスターを停止して起動したリソースを削除
$ docker-compose down -v

起動時のよくあるエラー

  • docker-compose up して max virtual memory areas vm.max_map_count [XXXXX] is too low, increase to at least [262144] が出た場合、以下の設定でカーネル設定を変更する
$ sysctl -w vm.max_map_count=262144

Kibanaへ接続

  • ブラウザでhttp://localhost:5601/へアクセスすると、起動に成功している場合は以下の画面が表示される

  • 以下を入力して「Log in」
    • Username : elastic
    • Password : .env ファイルの ELASTIC_PASSWORD に設定した値

docker-compose.ymlの設定について

今回作成したdocker-compose.ymlはこちら

services

  • この下にコンテナを定義していく
  • ここで定義したservice名はコンテナ間で通信する時のホスト名のような役割になる
    • 下で出てくるcontainer_nameと違い、Docker Composeで利用される名称
    • ElasticSearchの設定であるnode.namediscovery.seed_hostsの値をコンテナ間の通信する時の名前として利用するようなので、serviceの名前とこの設定値は合わせておいた方が良い
  • 今回の場合だとes01, es02, es03, kibana01という4つ定義している

environment

  • 環境変数を追加することができる
    • 今回はES_JAVA_OPTSというElasticsearchで利用されるJava起動引数を追加で設定した
      • Elasticsearchとしてはjvm.optionsを利用すればJava起動引数を一括でまとめることもできる
      • 今回はデフォルトのjvm.optionsにヒープサイズだけ追加したかった(のとenvironment設定も使って見たかった)ため、これを利用した

ulimits

  • コンテナのulimitコマンドで設定できる値をデフォルト値から上書きする

volumes

  • ホスト側のファイルをコンテナ側へ渡したりできる
  • HOST:CONTAINERの順で設定
  • トップレベルのvolumesに名前を定義することで以下のことができる
    • 複数サービスをまたがってボリュームを利用
    • ホスト側へデータを永続化

port

  • 公開するポートの設定
  • HOST:CONTAINERの順で設定
  • 今回はes0*はそれぞれポート9200を利用してプロセスを立ち上げているが、ホストマシン経由でコンテナへアクセスする場合にlocalhost:920[1,2,3]でそれぞれのコンテナのElasticsearchへアクセスできるように設定している
    • localhost:9201->es01:9200
    • localhost:9202->es02:9200
    • localhost:9203->es03:9200

参考