RHEL8 /CentOS8 でマルチノード Elastic Stack クラスターを構築する方法

RHEL8 /CentOS8 でマルチノード Elastic Stack クラスターを構築する方法

一般的に ELK スタックとして知られる Elastic スタックは、Elasticsearch、Logstash、Kibana を含むオープン ソース製品のセットです。 Elastic Stack は Elastic によって開発および保守されています。 Elastic スタックを使用すると、システム ログを Logstash に送信できます。Logstash は、あらゆるソースからログやデータを受け入れ、ログを正規化するデータ収集エンジンです。その後、ログは分析、インデックス作成、検索、保存のために Elasticsearch に転送され、最終的に Kibana を使用して視覚的なデータとして表示されます。Kibana を使用すると、ユーザー クエリに基づいてインタラクティブなグラフを作成することもできます。

この記事では、RHEL 8 / CentOS 8 サーバー上でマルチノード エラスティック スタック クラスターをセットアップする方法を説明します。私の Elastic Stack クラスターの詳細は次のとおりです。

エラスティックサーチ:

  • 3台のサーバー、RHEL 8 / CentOS 8の最小限のインストール
  • IP とホスト名 – 192.168.56.40 ( elasticsearch1.linuxtechi.local )、192.168.56.50 ( elasticsearch2.linuxtechi.local )、192.168.56.60 ( elasticsearch3.linuxtechi.local )

ログスタッシュ:

  • 2台のサーバー、RHEL 8 / CentOS 8の最小限のインストール
  • IP とホスト – 192.168.56.20 ( logstash1.linuxtechi.local )、192.168.56.30 ( logstash2.linuxtechi.local )

キバナ:

最小限の RHEL 8 / CentOS 8IP とホスト名を持つ 1 台のサーバー – 192.168.56.10 ( kibana.linuxtechi.local )

ファイルビート:

  • CentOS 7 を最小限にインストールした 1 台のサーバー
  • IP とホスト名 – 192.168.56.70 ( web-server )

まず、Elasticsearch クラスターの設定から始めましょう。

3ノードのElasticsearchクラスターの設定

すでに述べたように、Elasticsearchクラスターのノードを設定し、各ノードにログインし、ホスト名を設定し、yum/dnfリポジトリを構成します。

各ノードのホスト名を設定するには、 hostnamectlコマンドを使用します。

[root@linuxtechi ~]# hostnamectl set-hostname "elasticsearch1.linuxtechi. local"
[root@linuxtechi ~]# bashを実行
[root@linuxtechi ~]#
[root@linuxtechi ~]# hostnamectl set-hostname "elasticsearch2.linuxtechi. local"
[root@linuxtechi ~]# bashを実行
[root@linuxtechi ~]#
[root@linuxtechi ~]# hostnamectl set-hostname "elasticsearch3.linuxtechi. local"
[root@linuxtechi ~]# bashを実行
[root@linuxtechi ~]#

CentOS 8 システムの場合、OS パッケージ リポジトリを構成する必要はありません。RHEL 8 サーバーの場合、有効なサブスクリプションがある場合は、Red Hat にサブスクライブするだけでパッケージ リポジトリを取得できます。 OS パッケージ用のローカル yum/dnf リポジトリを構成する場合は、次の URL を参照してください。

DVD または ISO ファイルを使用して RHEL 8 サーバーにローカル Yum / DNF リポジトリを設定する方法

すべてのノードで Elasticsearch パッケージ リポジトリを構成します。次の内容を含むelastic.repoファイルを/etc/yum.repo.d/フォルダーに作成します。

~]# vi /etc/yum.repos.d/elastic.repo
[エラスティックサーチ-7.x]
name=7.x パッケージの Elasticsearch リポジトリ
ベースURL=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
有効=1
自動更新=1
タイプ=rpm-md

ファイルを保存して終了します。

3 つのノードすべてでrpmコマンドを使用して Elastic 公開署名キーをインポートします。

~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

3 つのノードすべての/etc/hostsファイルに次の行を追加します。

192.168.56.40 elasticsearch1.linuxtechi.local
192.168.56.50 elasticsearch2.linuxtechi.local
192.168.56.60 elasticsearch3.linuxtechi.local

yum / dnfコマンドを使用して、3 つのノードすべてに Java をインストールします。

[root@linuxtechi ~]# dnf install java-openjdk -y
[root@linuxtechi ~]# dnf install java-openjdk -y
[root@linuxtechi ~]# dnf install java-openjdk -y

yum / dnfコマンドを使用して、3 つのノードすべてに Elasticsearch をインストールします。

root@linuxtechi ~]# dnf install elasticsearch -y
[root@linuxtechi ~]# dnf install elasticsearch -y
[root@linuxtechi ~]# dnf install elasticsearch -y

注: オペレーティング システムのファイアウォールが有効になっていて、各 Elasticsearch ノードで実行されている場合は、 firewall-cmdコマンドを使用して次のポートを開くことを許可します。

~]# ファイアウォールコマンド --permanent --add-port=9300/tcp
~]# ファイアウォールコマンド --permanent --add-port=9200/tcp
~]# ファイアウォールコマンド --reload

Elasticsearch を設定するには、すべてのノードでファイル/etc/elasticsearch/elasticsearch.ymlを編集し、次のコンテンツを追加します。

~]# vim /etc/elasticsearch/elasticsearch.yml
クラスター名: opn-cluster
ノード名: elasticsearch1.linuxtechi.local
ネットワークホスト: 192.168.56.40
http.ポート: 9200
discovery.seed_hosts: ["elasticsearch1.linuxtechi.local", "elasticsearch2.linuxtechi.local", "elasticsearch3.linuxtechi.local"]
cluster.initial_master_nodes: ["elasticsearch1.linuxtechi.local", "elasticsearch2.linuxtechi.local", "elasticsearch3.linuxtechi.local"]

注: 各ノードで、 node.nameに正しいホスト名を入力し、 network.hostに正しい IP アドレスを入力し、他のパラメータは変更しないでください。

次に、 systemctlコマンドを使用して、3 つのノードすべてで Elasticsearch サービスを起動して有効にします。

~]# systemctlデーモンリロード
~]# systemctl で elasticsearch.service を有効にします
~]# systemctl elasticsearch.service を起動します

次のssコマンドを使用して、elasticsearch ノードがポート 9200 でリッスンを開始していることを確認します。

[root@linuxtechi ~]# ss -tunlp | grep 9200
tcp LISTEN 0 128 [::ffff:192.168.56.40]:9200 *:* ユーザー:(("java",pid=2734,fd=256))
[root@linuxtechi ~]#

次のcurlコマンドを使用して、Elasticsearch クラスターのステータスを確認します。

[root@linuxtechi ~]# curl http://elasticsearch1.linuxtechi.local:9200
[root@linuxtechi ~]# curl -X GET http://elasticsearch2.linuxtechi.local:9200/_cluster/health?pretty

コマンドの出力は次のようになります。

上記の出力は、3 ノードの Elasticsearch クラスターが正常に作成され、クラスターのステータスが緑色であることを示しています。

注: JVM ヒープ サイズを変更する場合は、 /etc/elasticsearch/jvm.options jvm.options ファイルを編集し、環境に応じて次のパラメータを変更します。

  • -Xms1g
  • -Xmx1g

それでは、Logstash ノードに移りましょう。

Logstashをインストールして設定する

両方の Logstash ノードで次の手順を実行します。

両方のノードにログインし、 hostnamectlコマンドを使用してホスト名を設定します。

[root@linuxtechi ~]# hostnamectl set-hostname "logstash1.linuxtechi.local"
[root@linuxtechi ~]# bashを実行
[root@linuxtechi ~]#
[root@linuxtechi ~]# hostnamectl set-hostname "logstash2.linuxtechi.local"
[root@linuxtechi ~]# bashを実行
[root@linuxtechi ~]#

両方の logstash ノードの/etc/hostsファイルに次のエントリを追加します。

~]# vi /etc/hosts
192.168.56.40 elasticsearch1.linuxtechi.local
192.168.56.50 elasticsearch2.linuxtechi.local
192.168.56.60 elasticsearch3.linuxtechi.local

ファイルを保存して終了します。

両方のノードで Logstash リポジトリを構成します。次の内容を含むファイルlogstash.repo /ete/yum.repo.d/フォルダーに作成します。

~]# vi /etc/yum.repos.d/logstash.repo
[エラスティックサーチ-7.x]
name=7.x パッケージの Elasticsearch リポジトリ
ベースURL=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
有効=1
自動更新=1
タイプ=rpm-md

ファイルを保存して終了し、 rpmコマンドを実行して署名キーをインポートします。

~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

yum / dnfコマンドを使用して、両方のノードに Java OpenJDK をインストールします。

~]# dnf インストール java-openjdk -y

両方のノードからyum / dnfコマンドを実行して、logstash をインストールします。

[root@linuxtechi ~]# dnf install logstash -y
[root@linuxtechi ~]# dnf install logstash -y

次に、logstash を設定します。両方の logstash ノードで次の手順を実行して、logstash 設定ファイルを作成します。まず、logstash サンプル ファイルを/etc/logstash/conf.d/にコピーします。

# cd /etc/logstash/
# cp logstash-sample.conf conf.d/logstash.conf

設定ファイルを編集し、以下を更新します。

# vi conf.d/logstash.conf
入力{
 ビート {
 ポート => 5044
 }
}
出力{
 エラスティックサーチ
 ホスト => ["http://elasticsearch1.linuxtechi.local:9200", "http://elasticsearch2.linuxtechi.local:9200", "http://elasticsearch3.linuxtechi.local:9200"]
 インデックス => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
 #user => "エラスティック"
 #パスワード => "changeme"
 }
}

outputセクションで、 hostsパラメータに 3 つの Elasticsearch ノードすべての FQDN を指定し、他のパラメータは変更しません。

オペレーティング システムのファイアウォールで logstash ポート「5044」を許可するにはfirewall-cmdコマンドを使用します。

~ # ファイアウォールコマンド --permanent --add-port=5044/tcp
~ # ファイアウォールコマンド –reload

次に、各ノードで次のsystemctlコマンドを実行して、Logstash サービスを開始して有効にします。

~]# systemctl ログスタッシュを開始します
~]# systemctl がログスタッシュに対応

ssコマンドを使用して、logstash サービスがポート 5044 でリッスンを開始していることを確認します。

[root@linuxtechi ~]# ss -tunlp | grep 5044
tcp LISTEN 0 128 *:5044 *:* ユーザー:(("java",pid=2416,fd=96))
[root@linuxtechi ~]#

上記の出力は、logstash が正常にインストールされ、構成されたことを示しています。 Kibana のインストールに移りましょう。

Kibanaをインストールして設定する

Kibana ノードにログインし、 hostnamectlコマンドを使用してホスト名を設定します。

[root@linuxtechi ~]# hostnamectl set-hostname "kibana.linuxtechi.local"
[root@linuxtechi ~]# bashを実行
[root@linuxtechi ~]#

/etc/hostsファイルを編集し、次の行を追加します。

192.168.56.40 elasticsearch1.linuxtechi.local
192.168.56.50 elasticsearch2.linuxtechi.local
192.168.56.60 elasticsearch3.linuxtechi.local

次のコマンドを使用して Kibana リポジトリを設定します。

[root@linuxtechi ~]# vi /etc/yum.repos.d/kibana.repo
[エラスティックサーチ-7.x]
name=7.x パッケージの Elasticsearch リポジトリ
ベースURL=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
有効=1
自動更新=1
タイプ=rpm-md
[root@linuxtechi ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

yum / dnfコマンドを実行して Kibana をインストールします。

[root@linuxtechi ~]# yum install kibana -y

/etc/kibana/kibana.ymlファイルを編集して Kibana を設定します。

[root@linuxtechi ~]# vim /etc/kibana/kibana.yml
…………
サーバーホスト: "kibana.linuxtechi.local"
サーバー名: "kibana.linuxtechi.local"
elasticsearch.hosts: ["http://elasticsearch1.linuxtechi.local:9200", "http://elasticsearch2.linuxtechi.local:9200", "http://elasticsearch3.linuxtechi.local:9200"]
…………

Kibana サービスを有効にして起動します。

root@linuxtechi ~]# systemctl kibanaを起動します
[root@linuxtechi ~]# systemctl で kibana を有効にする

システムファイアウォールで Kibana ポート '5601' を許可します。

[root@linuxtechi ~]# ファイアウォール-cmd --permanent --add-port=5601/tcp
成功
[root@linuxtechi ~]# ファイアウォール-cmd --reload
成功
[root@linuxtechi ~]#

次の URL を使用して Kibana インターフェースにアクセスします: http://kibana.linuxtechi.local:5601

ダッシュボードから、Elastic Stack クラスターのステータスを確認できます。

これは、RHEL 8 /CentOS 8 にマルチノード Elastic Stack クラスターが正常にインストールされ、設定されたことを証明します。

次に、他の Linux サーバーからのログを、 filebeat経由で logstash ノードに送信します。私の場合は CentOS 7 サーバーを使用しており、このサーバーの重要なログをすべてfilebeat経由で logstash にプッシュします。

CentOS 7 サーバーにログインし、yum/rpm コマンドを使用して filebeat パッケージをインストールします。

[root@linuxtechi ~]# rpm -ivh https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm を取得しています
準備中... ################################### [100%]
更新/インストール中...
 1:filebeat-7.3.1-1 ###################################### [100%]
[root@linuxtechi ~]#

/etc/hostsファイルを編集し、以下を追加します。

192.168.56.20 ログスタッシュ1.linuxtechi.local
192.168.56.30 ログスタッシュ2.linuxtechi.local

次に、ロード バランシング テクノロジーを使用してログを logstash ノードに送信できるようにfilebeatを構成し、ファイル/etc/filebeat/filebeat.ymlを編集して次のパラメーターを追加します。

filebeat.inputs:セクションで、 enabled: falseenabled: trueに変更し、 pathsパラメータの下で、logstash に送信できるログ ファイルの場所を指定します。output.elasticsearch およびhostパラメータをコメント アウトし、 output.elasticsearch output.logstash:およびhosts:からコメントを削除し、 hostsパラメータに 2 つの logstash ノードを追加して、 loadbalance: trueを設定します。

[root@linuxtechi ~]# vi /etc/filebeat/filebeat.yml
ファイルビート入力:
- タイプ: ログ
 有効: true
 パス:
 - /var/log/メッセージ
 - /var/log/dmesg
 - /var/log/メールログ
 - /var/log/boot.log
#出力.elasticsearch:
 # ホスト: ["localhost:9200"]
出力.logstash:
 ホスト: ["logstash1.linuxtechi.local:5044", "logstash2.linuxtechi.local:5044"]
 負荷分散: true

次の 2 つのsystemctlコマンドを使用して、 filebeatサービスを開始および有効にします。

[root@linuxtechi ~]# systemctl でファイルビートを起動します
[root@linuxtechi ~]# systemctl でファイルビートを有効にする

次に、Kibana UI に移動して、新しいインデックスが表示されていることを確認します。

左側のサイドバーから「管理」オプションを選択し、「Elasticsearch」の下の「インデックス管理」をクリックします。

上記のように、インデックスが表示されるようになりました。次に、インデックス モデルを作成しましょう。

Kibana セクションの「インデックス パターン」をクリックすると、新しいモデルを作成するように求められます。「インデックス パターンの作成」をクリックし、パターン名を「filebeat」に指定します。

「次へ」をクリックします。

インデックス パターンの時間フィルターとしてタイムスタンプを選択し、インデックス パターンの作成をクリックします。

次にクリックして、リアルタイムの Filebeat インデックス モデルを表示します。

これは、Filebeat エージェントが正常に構成され、Kibana ダッシュボードでリアルタイムのログを確認できることを示しています。

この記事は以上です。RHEL 8 / CentOS 8 システムで Elastic Stack クラスターをセットアップする際に役立った手順について、ぜひフィードバックやコメントをお寄せください。

出典: https://www.linuxtechi.com/setup-multinode-elastic-stack-cluster-rhel8-centos8/

要約する

上記は、RHEL8/CentOS8 でマルチノード Elastic Stack クラスターを構築するために紹介した方法です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • CentOS でマルチノード Citus クラスターを展開するための詳細な手順
  • ウェブ クラスターの Docker Stack 展開方法の手順

<<:  MySQL 8.0.13 のインストールと設定方法のグラフィックチュートリアル

>>:  Vueが初めて要素を取得できなかったときの解決記録

ブログ    

推薦する

Tomcat での jar のロードに関する異常な問題の分析と解決

現象の説明:プロジェクトでは、Springboot を使用して Web プロジェクトを開始します。起...

Docker nginxのインストールと設定方法

DockerでNginxイメージをダウンロードする docker プル nginx Docker イ...

Dockerとイメージの操作方法

ミラーを探すDocker Hubのウェブサイトからイメージを検索できます。Docker Hubのウェ...

MySQLデータベースでコマンドを自動補完する3つの方法

注意: 3 番目の方法は XSell でのみ使用され、finalsell では使用できません。方法1...

Spring jdbc のデータベース操作オブジェクト モデルの詳細な例

Spring jdbc のデータベース操作オブジェクト モデルの詳細な例Spring Jdbc デー...

Linux デバイス用ネットワーク ドライバーの紹介

有線ネットワーク: イーサネット 無線ネットワーク: 4G、WiFi、Bluetooth、5G 概要...

MySQLのトランザクションとデータ一貫性処理の問題を分析する

この記事では、セキュリティ、使用方法、同時処理などを通じて、MySQL トランザクションとデータの一...

Linuxコマンドunzipの詳しい説明

目次1. 解凍コマンド1.1 構文1.2 オプション2. 例1. 解凍コマンドunzip コマンドは...

Linuxカーネルスケジューラソースコード初期化の分析

目次1. はじめに2. スケジューラの基本概念2.1. 実行キュー (rq) 2.2 スケジューリン...

vuex での Getter の使用法の詳細な説明

序文Vuex を使用すると、ストア内に「ゲッター」を定義できます (これはストアの計算されたプロパテ...

Linux whatisコマンドの使い方

01. コマンドの概要whatis コマンドは、システム コマンドの簡単な説明を含むいくつかの特別な...

MySQL のインデックスにおける NULL の影響についての詳細な説明

序文私は多くのブログを読み、弊社の DBA を含む多くの人々が、MySql では列に null が含...

CentOS 6.5 i386 インストール MySQL 5.7.18 詳細チュートリアル

ほとんどの人はMySQLをコンパイルしてシステムディレクトリに置きますが、私のやり方はコンパイルした...

JavaScript でフロントエンドのカウントダウン効果を実装する

この記事では、フロントエンドのカウントダウン効果を実現するためのJavaScriptの具体的なコード...