0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker Composeを利用したElasticsearch + Kibanaの作成方法(Elasticsearch7.14.0)

Last updated at Posted at 2021-08-10

はじめに

Elasticsearch+Kibanaで情報を取得して可視化する際に、本番環境以外に自分自身で好き放題触れる環境が欲しかったため、CentOSの開発マシンと個人のMac端末にDocker ComposeでHTTP版のElasticsearch+Kibanaの環境を作成しました。備忘録として情報を残します。今回はElasticsearch,KibanaのDocker公式イメージだけで作成しています。カスタマイズしたい場合、別途Docker Fileを作成してbuildする必要があります。

社内proxyに阻まれそうであれば、事前に、
.bashrc、/etc/yum.conf、/etc/systemd/system/docker.service等にproxy設定をしておきます。

1 Dockerのインストール

repositoryのセットアップ

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

必要なパッケージのインストール

$ sudo yum install docker-ce docker-ce-cli containerd.io

dockerの起動とバージョン確認

$ sudo systemctl start docker
$ sudo docker --version

その他のディストリビューションや別バージョンは以下の公式参照

Install Docker Engine

2 Docker Composeのインストール

必要なパッケージのインストール

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

バイナリの実行権限を適用する

$ sudo chmod +x /usr/local/bin/docker-compose

バージョン確認

$ docker-compose --version
docker-compose version 1.29.2, build 1110ad01

その他のディストリビューションや別バージョンは以下の公式参照

Install Docker Compose

3 Docker ComposeでElasticsearch及びKibanaの起動

ディレクトリ構成は以下のようにしています。
任意のディレクトリ配下にelasticstackディレクトリを作成し、その配下でDocker Composeファイル群を管理しています。(今回の定義ファイルdocker-compose.ymlは最も簡易的な構成にしたため、elasticsearch.yml,kibana.ymlのマウントはしていません。マウントする場合はdocker-compose.ymlに追記します。)

./elasticstack/
├── docker-compose.yml
├── elasticsearch
│   └── conf
│       └── elasticsearch.yml
└── kibana
    └── conf
        └── kibana.yml

elasticstackディレクトリ配下にdocker-compose.ymlを作成します。
elasticの公式ページのElasticsearchの記述に加え、Kibanaの情報も記載します。

#docker-yml from elastic sample +kibana
version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic
  kibana:
    image: docker.elastic.co/kibana/kibana:7.14.0
    ports:
      - 5601:5601
    environment:
      SERVER_NAME: localhost:5601
      ELASTICSEARCH_HOSTS: http://es01:9200
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge


out of memory exceptions回避のため、docker-composeを起動する前に以下の設定を実施します。
(デフォルト値だと容量が足りず、エラーで起動できない)

$ grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
$ sysctl -w vm.max_map_count=262144

docker-composeでコンテナを起動します。(-dはバックグラウンドオプション)

$ docker-compose up -d

コンテナの起動状態を確認します。

$ docker-compose ps
        Name                       Command               State                         Ports                       
-------------------------------------------------------------------------------------------------------------------
elasticstack_kibana_1   /bin/tini -- /usr/local/bi ...   Up      0.0.0.0:5601->5601/tcp,:::5601->5601/tcp          
es01                    /bin/tini -- /usr/local/bi ...   Up      0.0.0.0:9200->9200/tcp,:::9200->9200/tcp, 9300/tcp
es02                    /bin/tini -- /usr/local/bi ...   Up      9200/tcp, 9300/tcp                                
es03                    /bin/tini -- /usr/local/bi ...   Up      9200/tcp, 9300/tcp  

コンテナが正常に起動していれば、Chrome等のブラウザから http://localhost:5601 にアクセスすると、KibanaからElasticStackの状態を確認できます。

b5907042f914b42bbf452530488b78ce.gif

参考

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?