Docker-compose を使用して ELK クラスターを構築する方法

Docker-compose を使用して ELK クラスターを構築する方法

すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構成ファイル内のパスを変更するだけで、3 インスタンスの ES クラスターと Kibana インスタンスをすばやく構築できます。

計画

クラスターを形成するために 3 つの ES インスタンスを作成し、クラスターに接続するための Kibana インスタンスを作成する予定です。各 ES インスタンスは、ローカル構成ファイルを使用して、構成ファイルの保存とバージョン管理を容易にします。 Kibana の設定ファイルもローカルに配置され、ファイル マッピングを通じてコン​​テナーにマウントされます。

全体的なディレクトリ構造は次のとおりです。

$ツリー
。
├── docker-compose.yml
├── kibana.yml
├── ノード1
│ └── es1.yml
├── ノード2
│ └── es2.yml
└── ノード3
 └── es3.yml

3 つのディレクトリ、5 つのファイル

アレンジファイル

メインのオーケストレーションファイルはdocker-compose.ymlです。

バージョン: "2.1"
サービス:
 es-ノード1:
 イメージ: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
 ホスト名: es-node1
 expose: #コンテナ外のアプリケーションにポートを公開しない - "9001"
 ports: #ホストにポートを公開 - "9200:9200"
 - 「9300:9300」
 ボリューム:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node1/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
 環境:
 - クラスター名=es-クラスター
 - bootstrap.memory_lock=true
 - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
 ulimits:
 メモリロック:
 ソフト: -1
 難しい: -1
 ネットワーク:
 es-クラスタネットワーク:
 ipv4_アドレス: 172.21.0.10
 es-ノード2:
 イメージ: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
 ホスト名: es-node2
 expose: #コンテナ外のアプリケーションにポートを公開しない - "9002"
 ports: #ポートをホストに公開 - "9201:9201"
 - 「9301:9301」
 ボリューム:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node2/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
 環境:
 - クラスター名=es-クラスター
 - bootstrap.memory_lock=true
 - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
 ulimits:
 メモリロック:
 ソフト: -1
 難しい: -1
 ネットワーク:
 es-クラスタネットワーク:
 ipv4_アドレス: 172.21.0.11
 es-ノード3:
 イメージ: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
 ホスト名: es-node3
 expose: #コンテナ外のアプリケーションにポートを公開しない - "9003"
 ports: #ポートをホストに公開 - "9202:9202"
 - 「9302:9302」
 ボリューム:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node3/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
 環境:
 - クラスター名=es-クラスター
 - bootstrap.memory_lock=true
 - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
 ulimits:
 メモリロック:
 ソフト: -1
 難しい: -1
 ネットワーク:
 es-クラスタネットワーク:
 ipv4_アドレス: 172.21.0.12
 キバナ:
 イメージ: docker.elastic.co/kibana/kibana:6.7.0
 ポート:
 - 「5601:5601」
 ボリューム:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/kibana.yml:/usr/share/kibana/config/kibana.yml
 環境:
 -ELASTICSEARCH_URL=http://es-node1:9200
 ネットワーク:
 - es-クラスタネットワーク
ネットワーク:
 es-クラスタネットワーク:
 ドライバー: ブリッジ
 ipam:
 ドライバー: デフォルト
 設定:
 - サブネット: 172.21.0.0/16
 ゲートウェイ: 172.21.0.1

ES 構成ファイルでは、次のように 1 つの例のみが選択されます。

クラスター名: elasticsearch-cluster
ノード名: es-node1
ネットワーク.bind_host: 0.0.0.0
ネットワーク.公開ホスト: 172.21.0.10
http.ポート: 9200
トランスポート.TCP.ポート: 9300
http.cors.enabled: 有効
http.cors.allow-origin: "*"
ノードマスター: true 
ノードデータ: true 
discovery.zen.ping.unicast.hosts: ["172.21.0.10:9300","172.21.0.11:9301","172.21.0.12:9302"]
discovery.zen.最小マスターノード数: 2

Kibanaの設定ファイルは次のとおりです

サーバー名: kibana
サーバーホスト: "0"
elasticsearch.hosts: [ "http://es-node1:9200", "http://es-node2:9201", "http://es-node3:9202" ]
xpack.monitoring.ui.container.elasticsearch.enabled: 無効

起動コマンド

設定ファイルが準備できたら、クラスタを起動できます。

$ docker-compose アップ -d

起動プロセスが遅くなる可能性があります。コマンド ラインからクラスター ノードを確認できます。

$ curl http://localhost:9200/_cat/nodes
172.21.0.12 51 96 29 6.53 6.43 3.72 md - es-node3
172.21.0.11 47 96 30 6.53 6.43 3.72 mdi - es-node2
172.21.0.10 49 96 30 6.53 6.43 3.72 mdi * es-ノード1

後続の使用プロセスでは、docker-compose コマンドを使用してサービスを開始および停止できます。関連するインスタンスを保持したくない場合は、docker-compose down を使用してコンテナをシャットダウンして削除できます。

参考文献

elasticsearch ドキュメント
Docker-compose カスタム ネットワーク、固定コンテナ IP アドレス
docker-compose ポートと expose の違い

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker Compose ワンクリック ELK デプロイ方式の実装
  • Docker-compose を使用して ELK をデプロイするためのサンプル コード
  • docker compose を使用して elk システムを構築する方法
  • Docker Compose を使用して ELK を迅速にデプロイする (テスト済みで効果的)

<<:  js は axios 制限リクエスト キューを実装します

>>:  MySQL における := と = の違いをグラフィカルに紹介

推薦する

JavaScriptはクリックトグル機能を実装します

この記事の例では、クリックして切り替える機能を実装するためのJavaScriptの具体的なコードを参...

Dockerイメージをプルしてバージョンを確認する方法

イメージのバージョンとタグを確認するには、docker hubで確認する必要があります。アドレスは次...

Docker での Tomcat インストールの 404 問題の解決方法

tomcat の containerID を見つけて、tomacat ディレクトリに入ります。 [r...

JavaScriptは4桁のランダム検証コードの生成を実装します

この記事の例では、JavaScriptで4桁のランダムな検証コードを生成する具体的なコードを参考まで...

mysqlは内部コマンドエラーの解決策ではありません

「mysqlは内部コマンドではありません」というエラーは、mysqlのbinディレクトリパスが環境変...

div+cssとウェブ標準ページの利点

div 要素は、HTML ドキュメント内のブロックレベル コンテンツの構造と背景を提供するために使用...

HTML はテキストの外側に省略記号を表示します...テキストオーバーフローによって実装されます

div または span に同時に CSS を適用する必要があります。コードをコピーコードは次のとお...

MySQL バッチ挿入ループの詳細なサンプルコード

背景数日前、MySql でページングを行っていたときに、ページングに制限 0,10 を使用するとデー...

フォント宝庫 50 種類の素晴らしい無料英語フォントリソース パート 1

デザイナーは独自のフォント ライブラリを持っているため、プロジェクトの設計時にすぐに使用できます。今...

MySQL が暗黙のデフォルト値を処理する方法

何人かの学生は、マスターとスレーブの間の不一致の問題に遭遇したと述べました。一般的な状況としては、m...

時点別のMySQLデータベース復旧実績

はじめに: 時間ポイントによる MySQL データベースの復旧どの企業にとっても、データは最も価値の...

Linux で pip 操作中にタイムアウトが発生する問題を解決する方法

Linuxインスタンスでpipを使用する際のタイムアウト問題を解決する方法pip は最も人気のある ...

HTML でよく使用されるエスケープ文字の概要

HTML でよく使用されるエスケープ文字をまとめると次のようになります。 &nbsp; 改行...

MySQLクエリインターセプトの詳細な分析

目次1. クエリの最適化1. MySQLチューニングの概要2. 小さなテーブルが大きなテーブルを動か...

js キャンバスは検証コードを実装し、検証コード機能を取得します

この記事の例では、検証コードを作成して取得するためのjsキャンバスの具体的なコードを共有しています。...