Logstash は、データをフィルタリングし、リアルタイムでデータを送信できるオープンソースのデータ収集エンジンです。データ移行のリアルタイムパフォーマンスに高い要件がない場合は、Logstash を使用してデータを移行できます。このトピックでは、Alibaba Cloud Elastic Compute Service (ECS) を使用してセルフマネージド Logstash クラスターをデプロイする方法と、Logstash クラスターを使用してログファイル内のデータを Alibaba Cloud Elasticsearch クラスターに移行する方法について説明します。
前提条件
Alibaba Cloud Elasticsearch クラスターが作成され、クラスターで自動インデックス作成機能が有効になっています。
説明この例では、Standard Edition の Elasticsearch V8.5.1 クラスターを使用します。
詳細については、「Alibaba Cloud Elasticsearch クラスターを作成する」および「Elasticsearch クラスターにアクセスして構成する」をご参照ください。
ECS インスタンスが作成されます。 ECS インスタンスは、Elasticsearch クラスターとセルフマネージド Logstash クラスターの両方に接続できます。 詳細については、「ウィザードを使用してインスタンスを作成する」をご参照ください。
説明Elasticsearch クラスターと同じリージョン、ゾーン、および仮想プライベートクラウド (VPC) に存在する ECS インスタンスを作成することをお勧めします。
JDK が ECS インスタンスにインストールされています。 詳細については、「JDK をインストールする」をご参照ください。
説明JDK は Temurin 17 以降である必要があります。 Java JDK バージョンと Logstash バージョンの互換性については、「Logstash と JVM の互換性」をご参照ください。
移行するデータが準備されています。 この例では、ECS ログデータを使用します。
手順
ステップ 1: (オプション) ロールとユーザーを作成する
セルフマネージド Logstash クラスターを Alibaba Cloud Elasticsearch クラスターに接続する場合、または Kibana コンソールで Logstash 監視データを表示する場合は、Elasticsearch ユーザーを使用する必要があります。 elastic ユーザーまたはカスタムユーザーを使用できます。
実際のビジネスでは、カスタムユーザーを使用することをお勧めします。カスタムユーザーを使用する前に、必要な権限を持つロールをユーザーに割り当てる必要があります。実際のビジネスで elastic ユーザーを使用すると、システムのセキュリティを確保できません。
ロールを作成する
この例では、logstash-* インデックスに対する読み取りおよび書き込み権限が付与されたロールが作成されます。
Elasticsearch クラスターの Kibana コンソールにログオンします。
詳細については、「Kibana コンソールにログオンする」をご参照ください。
表示されるページの左上隅にある
アイコンをクリックし、[管理] > [スタック管理] を選択します。左側のナビゲーションペインで、[セキュリティ] > [ロール] を選択します。
[ロール] ページで、右上隅にある [ロールの作成] をクリックします。 ロール作成ページで、パラメーターを構成します。
次の表に、表示されるパラメーターの一部を示します。
パラメーター
説明
[ロール名]
ロールの名前。カスタム名を入力します。
[インデックス]
管理するインデックス。 [logstash-*] を選択します。
[権限]
ロールに付与する権限。 [読み取り]、[書き込み]、[作成]、[削除]、および [create_index] を選択します。
[ロールの作成] をクリックします。
ユーザーを作成する
この例では、Logstash を監視するためのユーザーが作成されます。 次のいずれかの方法を使用してユーザーを作成できます。
デフォルトでは、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 コンソールにログオンするためにも使用されます。 // : Elasticsearch クラスタの ID。Elasticsearch クラスタの [基本情報] ページでクラスタ ID を照会できます。 // : logstash_system_monitor ユーザーのパスワード。 // : ユーザーのフルネーム。パラメーター
説明
es-password
Elasticsearch クラスターのパスワード。このパスワードは、クラスタの Kibana コンソールにログオンするためにも使用されます。
<instanceId>
Elasticsearch クラスターの ID。 Elasticsearch クラスタの [基本情報] ページで、クラスタ ID を照会できます。
<logstash-monitor-password>
logstash_system_monitorユーザーのパスワード。<your full name>
ユーザーのフルネーム。
ユーザーが作成されると、次の図に示す結果が返されます。

ステップ 2: ECS インスタンスに Logstash をインストールする
ECS インスタンスに接続します。
詳細については、「ECS インスタンスに接続する」をご参照ください。
Logstash インストールパッケージをダウンロードします。
Elastic Web サイト にアクセスし、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 V7.4 のコマンド:
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gzLogstash インストールパッケージを解凍します。
この例では、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.conftest.conf ファイルを構成します。
次のサンプルコードは、構成例を提供します。
input { file { path => "/your/file/path/xxx" // ログファイルのパス。この例では、/var/log/messages が使用されます。 } } filter { } output { elasticsearch { hosts => "<http://<instanceId>.elasticsearch.aliyuncs.com:9200>" // Elasticsearch クラスタのエンドポイント。 を Elasticsearch クラスタの ID に置き換えます。クラスタの [基本情報] ページでクラスタ ID を照会できます。例: http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200。 index => "<index-name>" // ログファイル内のデータが書き込まれるインデックスの名前。カスタム名を指定できます。 user => "<user-name>" // Elasticsearch クラスタにアクセスするために使用されるユーザー名。この例では、elastic が使用されます。システムのセキュリティを確保するために、実際のビジネスでは elastic ユーザーではなくカスタムユーザーを使用することをお勧めします。ユーザー名は二重引用符("") で囲む必要があります。これにより、Logstash パイプラインを実行するときにユーザー名に特殊文字が含まれている場合に発生する可能性のあるエラーを回避できます。 password => "<logstash-password>" // Elasticsearch クラスタにアクセスするために使用されるパスワード。パスワードは二重引用符("") で囲む必要があります。これにより、Logstash パイプラインを実行するときにパスワードに特殊文字が含まれている場合に発生する可能性のあるエラーを回避できます。 } }パラメーター
説明
pathログファイルのパス。この例では、/var/log/messages を使用します。
hostsElasticsearch クラスターのエンドポイント。
instanceIdを Elasticsearch クラスターの ID に置き換えます。クラスタの [基本情報] ページで、クラスタ 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 クラスターに同期します。監視対象のログファイルにデータが追加されるたびに、Logstash は自動的にデータを Elasticsearch クラスターに同期します。
ステップ 4: 移行されたデータを表示する
Elasticsearch クラスターの Kibana コンソールにログオンします。
詳細については、「Kibana コンソールにログオンする」をご参照ください。
表示されるページの左上隅にある
アイコンをクリックし、[管理] > [開発ツール] を選択します。表示されるページの [コンソール] タブで、次のコマンドを実行します。
GET /logstash-*/_search
ステップ 5: (オプション) Logstash ノードを監視する
Logstash ディレクトリ内の config フォルダーに移動します。
cd logstash-8.5.1/configlogstash.yml ファイルを構成します。
logstash.yml ファイルを開きます。
vim logstash.ymllogstash.yml ファイルで、次の表にリストされているパラメーターの注釈を削除します。次に、パラメーターを構成します。
xpack.monitoring.enabled:true // true に設定します。デフォルト値: false。 xpack.monitoring.elasticsearch.username:"<user-name>" // Logstash 監視用に作成したユーザーの名前。この例では、elastic ユーザーが使用されます。システムのセキュリティを確保するために、実際のビジネスでは elastic ユーザーではなくカスタムユーザーを使用することをお勧めします。 xpack.monitoring.elasticsearch.password:"<logstash-password>" // Logstash 監視用に作成したユーザーのパスワード。 xpack.monitoring.elasticsearch.hosts:["http://es-cn-nwy3fwjp8xxxxxxx.elasticsearch.aliyuncs.com:9200"] // Elasticsearch クラスタのエンドポイント。例: http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200。パラメーター
説明
xpack.monitoring.enableこのパラメーターを
trueに設定します。デフォルト値:false。xpack.monitoring.elasticsearch.usernameLogstash 監視用に作成したユーザーの名前。この例では、elastic ユーザーを使用します。
重要システムのセキュリティを確保するために、実際のビジネスでは elastic ユーザーではなくカスタムユーザーを使用することをお勧めします。
xpack.monitoring.elasticsearch.passwordLogstash 監視用に作成したユーザーのパスワード。
xpack.monitoring.elasticsearch.hostsElasticsearch クラスターのエンドポイント。例:
http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200。
Logstash ディレクトリに移動し、Logstash サービスを起動します。
cd ../ bin/logstash -f test.confElasticsearch クラスターの Kibana コンソールにログオンします。
詳細については、「Kibana コンソールにログオンする」をご参照ください。
表示されるページの左上隅にある
アイコンをクリックし、[管理] > [スタック監視] を選択します。(オプション) [ルールの作成] ダイアログボックスで、[OK] をクリックします。
[クラスタの概要] ページで、Logstash 監視データを表示します。
参照
Alibaba Cloud Elasticsearch プラグインは、Alibaba Cloud Elasticsearch クラスターの安定性、クエリパフォーマンス、書き込みパフォーマンス、トークン化されたクエリ、およびデータ検索を向上させます。 詳細については、「プラグインの概要」をご参照ください。