Logstash は、データをフィルタリングしてリアルタイムで転送できるオープンソースのデータ収集エンジンです。データ移行のリアルタイム性能に関する要件が高くない場合は、Logstash を使用してデータを移行できます。このトピックでは、Alibaba Cloud Elastic Compute Service (ECS) にセルフマネージド Logstash クラスターをデプロイし、それを使用してログファイル内のデータを Alibaba Cloud Elasticsearch クラスターに移行する方法を説明します。
前提条件
-
Alibaba Cloud Elasticsearch クラスターが作成され、クラスターの自動インデックス作成機能が有効になっていること。
説明-
この例では、Standard Edition の Elasticsearch V8.5.1 クラスターを使用します。
-
詳細については、「Alibaba Cloud Elasticsearch クラスターの作成」および「Elasticsearch クラスターへのアクセスと設定」をご参照ください。
-
-
Elasticsearch クラスターとセルフマネージド Logstash クラスターの両方に接続できる ECS インスタンスが作成されていること。詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
説明Elasticsearch クラスターと同じリージョン、ゾーン、および Virtual Private Cloud (VPC) 内に ECS インスタンスを作成することを推奨します。
-
ECS インスタンスに JDK がインストールされていること。詳細については、「JDK のインストール」をご参照ください。
説明JDK は Temurin 17 以降が必要です。Java JDK のバージョンと Logstash のバージョンの互換性の詳細については、「Logstash と JVM の互換性」をご参照ください。
-
移行対象のデータが準備されていること。この例では、ECS のログデータを使用します。
操作手順
手順 1: (オプション) ロールとユーザーの作成
セルフマネージド Logstash インスタンスが Elasticsearch クラスターにアクセスし、Kibana コンソールで Logstash の監視データを表示するには、Elasticsearch アカウントが必要です。組み込みの elastic ユーザーまたはカスタムユーザーのいずれかを使用できます。
業務では、カスタムユーザーの使用を推奨します。カスタムユーザーには、使用前に必要な権限を持つロールを割り当てる必要があります。業務で elastic ユーザーを使用すると、システムのセキュリティが損なわれる可能性があります。
ロールの作成
このセクションでは、logstash-* パターンに一致するインデックスに対する読み取りおよび書き込み権限を持つロールを作成する方法について説明します。
-
Elasticsearch クラスターの Kibana コンソールにログインします。
詳細については、「Kibana コンソールへのログイン」をご参照ください。
-
表示されたページの左上隅にある
アイコンをクリックし、[管理] > [スタック管理] を選択します。 -
左側のナビゲーションペインで、[セキュリティ] > ロール を選択します。
-
ロール ページで、[ロールの作成] をクリックし、ロールパラメーターを設定します。
次の表に、表示される一部のパラメーターを説明します。
パラメーター
説明
[ロール名]
ロールの名前。カスタム名を入力します。
[インデックス]
管理するインデックスとして [logstash-*] を選択します。
[権限]
ロールに付与する権限。 [読み取り]、[書き込み]、[作成]、[削除]、[インデックス作成] を選択します。
-
[ロールの作成] をクリックします。
ユーザーの作成
この例では、Logstash を監視するためのユーザーを作成します。次のいずれかの方法でユーザーを作成できます。
デフォルトでは、Alibaba Cloud Elasticsearch は組み込みの logstash_system ユーザーを無効にしています。新しいユーザーを作成し、そのユーザーに logstash_system ロールを割り当てる必要があります。新しいユーザーに logstash_system という名前を付けないでください。
-
方法 1:Kibana コンソールでのユーザー作成
-
Elasticsearch クラスターの Kibana コンソールにログインします。
詳細については、「Kibana コンソールへのログイン」をご参照ください。
-
表示されたページの左上隅にある
アイコンをクリックし、[管理] > [スタック管理] を選択します。 -
左側のナビゲーションウィンドウで、[セキュリティ] > [ユーザー] を選択します。
-
[ユーザー] ページで、右上隅の [ユーザーの作成] をクリックします。
-
[ユーザーの作成] ページで、パラメーターを設定します。
次の表に、表示される一部のパラメーターを説明します。
パラメーター
説明
[ユーザー名]
ユーザーの任意の名前を入力してください。例: [logstash_system_monitor]。
[ロール]
ユーザーに割り当てられるロールです。[logstash_system] を選択します。
-
[ユーザーの作成] をクリックします。
-
-
方法 2:コマンドラインインターフェイス (CLI) を使用したユーザー作成
ECS インスタンスに接続し、次のコマンドを実行してユーザーを作成します。
curl -u elastic:<es-password> -XPOST http://<instanceId>.elasticsearch.aliyuncs.com:9200/_xpack/security/user/logstash_system_monitor -d '{"password" : "<logstash-monitor-password>","roles" : ["logstash_system"],"full_name" : "<your full name>"}'パラメーター
説明
es-password
Elasticsearch クラスターのパスワード。このパスワードは、クラスターの Kibana コンソールへのログインにも使用されます。
<instanceId>
Elasticsearch クラスターの ID。クラスター ID は、Elasticsearch クラスターの基本情報ページで確認できます。
<logstash-monitor-password>
logstash_system_monitorユーザーのパスワード。<your full name>
ユーザーのフルネーム。
次のコマンドを実行して
logstash_system_monitor1ユーザーを作成します。ユーザーが正常に作成されると、次の結果が返されます。[root@6 /]# curl -H "Content-Type: application/json" -u xxx -XPOST http://es-cn-45xxxu.elasticsearch.aliyuncs.com:9200/_xpack/security/user/logstash_system_monitor1 -d '{"password" : "xxx","roles" : ["logstash_system"],"full_name" : "your full name"}' {"user":{"created":true},"created":true}[root@6 /]#
手順 2:ECS インスタンスへの Logstash のインストール
-
ECS インスタンスに接続します。
詳細については、「接続方法」をご参照ください。
-
Logstash インストールパッケージをダウンロードします。
Elastic のウェブサイトにアクセスし、Elasticsearch クラスターと同じバージョンの Logstash インストールパッケージをダウンロードします。
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.5.1-linux-x86_64.tar.gz説明Logstash V7.4 のコマンド:
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz -
Logstash インストールパッケージを解凍します。
この例では、Logstash V8.5.1 を使用します。
tar -xzvf logstash-8.5.1-linux-x86_64.tar.gz
手順 3:Logstash パイプラインの設定と実行
-
Logstash ディレクトリに移動します。
cd logstash-8.5.1 -
.conf ファイルを作成します。
touch test.conf -
test.conf ファイルを設定します。
次のサンプルコードに設定例を示します。
input { file { path => "/your/file/path/xxx" } } filter { } output { elasticsearch { hosts => "http://<instanceId>.elasticsearch.aliyuncs.com:9200" index => "<index-name>" user => "<user-name>" password => "<logstash-password>" } }パラメーター
説明
pathログファイルのパス。この例では、/var/log/messages を使用します。
hostsAlibaba Cloud Elasticsearch クラスターのエンドポイント。
instanceIdをお使いのインスタンスの ID に置き換えてください。例:http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200。indexログファイル内のデータが書き込まれるインデックスの名前。カスタム名を指定できます。
userElasticsearch クラスターへのアクセスに使用するユーザー名。この例では、elastic を使用します。
重要-
システムのセキュリティを確保するため、業務では elastic ユーザーではなくカスタムユーザーを使用することを推奨します。
-
ユーザー名は二重引用符 ("") で囲む必要があります。これにより、Logstash パイプラインの実行時に、ユーザー名に含まれる特殊文字による潜在的なエラーを回避できます。
passwordElasticsearch クラスターへのアクセスに使用するパスワード。
重要パスワードは二重引用符 ("") で囲む必要があります。これにより、Logstash パイプラインの実行時に、パスワードに含まれる特殊文字による潜在的なエラーを回避できます。
Logstash はさまざまな入力、フィルター、出力プラグインを提供しています。データ転送は、これらのプラグインを簡単に設定するだけで行えます。詳細については、「設定ファイルの構造」をご参照ください。
-
-
Logstash パイプラインを実行します。
bin/logstash -f test.confコマンドが正常に実行されると、Logstash は監視対象のログファイルにデータが追加されるたびに、その変更を自動的に Elasticsearch クラスターに同期します。
手順 4:移行されたデータの表示
-
Elasticsearch クラスターの Kibana コンソールにログインします。
詳細については、「Kibana コンソールへのログイン」をご参照ください。
-
表示されるページの左上隅にある
アイコンをクリックし、[管理] > [開発者ツール] を選択します。 -
表示されるページの [コンソール] タブで、次のコマンドを実行します:
GET /logstash-*/_search
手順 5: (オプション) Logstash ノードの監視
-
Logstash ディレクトリの config フォルダーに移動します。
cd logstash-8.5.1/config -
logstash.yml ファイルを設定します。
-
logstash.yml ファイルを開きます。
vim logstash.yml -
logstash.yml ファイルで、次の表に示すパラメーターのコメントアウトを解除し、パラメーターを設定します。
xpack.monitoring.enabled:true xpack.monitoring.elasticsearch.username:"<user-name>" xpack.monitoring.elasticsearch.password:"<logstash-password>" xpack.monitoring.elasticsearch.hosts:["http://es-cn-nwy3fwjp8xxxxxxx.elasticsearch.aliyuncs.com:9200"]パラメーター
説明
xpack.monitoring.enabledこのパラメーターを
trueに設定します。デフォルト値はfalseです。xpack.monitoring.elasticsearch.usernameLogstash 監視用に作成したユーザーの名前。この例では、elastic ユーザーを使用します。
重要システムのセキュリティを確保するため、業務では elastic ユーザーではなくカスタムユーザーを使用することを推奨します。
xpack.monitoring.elasticsearch.passwordLogstash 監視用に作成したユーザーのパスワード。
xpack.monitoring.elasticsearch.hostsAlibaba Cloud Elasticsearch クラスターのエンドポイント。例:
http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200。
-
-
Logstash ディレクトリに移動し、Logstash サービスを起動します。
cd ../ bin/logstash -f test.conf -
Elasticsearch クラスターの Kibana コンソールにログインします。
詳細については、「Kibana コンソールへのログイン」をご参照ください。
-
表示されたページの左上隅にある
アイコンをクリックし、[管理] > [スタックモニタリング] を選択します。 -
(任意) [ルールの作成] ダイアログボックスで、[OK] をクリックします。
-
[クラスター概要] ページで、Logstash モニタリングデータを表示します。
関連ドキュメント
-
Alibaba Cloud Elasticsearch のプラグインは、安定性、クエリと書き込みのパフォーマンス、分詞クエリ、データ検索など、クラスターの機能を強化します。詳細については、「プラグインの概要」をご参照ください。