このガイドでは、Alibaba Cloud Logstash のパイプライン構成機能を使用して、セルフマネージド Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターへデータを移行する方法について説明します。
Logstash はデータのみを移行し、インデックスマッピングや設定は移行しません。送信先クラスターでの自動インデックス作成に依存している場合、移行前後のデータ構造に一貫性がなくなる可能性があります。データ構造の一貫性を保つには、移行を開始する前に送信先クラスターに空のインデックスを手動で作成してください。ソースクラスターからマッピングと設定をコピーし、適切なシャード数を割り当てます。
前提条件
開始する前に、以下を確認してください。
セルフマネージド Elasticsearch クラスターをホストする Elastic Compute Service (ECS) インスタンスが Virtual Private Cloud (VPC) 内にあること。ClassicLink を介して接続された ECS インスタンスはサポートされていません。
その ECS インスタンスのセキュリティグループは、ポート 9200 を介した Logstash クラスターノードの IP アドレスからのインバウンドアクセスを許可する必要があります。Logstash インスタンスの [基本情報] ページで、ノードの IP アドレスを確認してください。
ご利用の Alibaba Cloud Logstash インスタンスと ECS インスタンスが同じ VPC 内にあること。異なるネットワークにある場合は、パブリックネットワークアクセス用に NAT Gateway を構成します。詳細については、「パブリックデータ転送用の NAT Gateway の構成」をご参照ください。
バージョンに互換性があること。このガイドでは、セルフマネージド Elasticsearch 8.17、Alibaba Cloud Elasticsearch 8.17、および Alibaba Cloud Logstash 8.11.4 を使用しています。このガイドのパイプライン構成は、このバージョン組み合わせにのみ適用されます。その他のバージョンについては、続行する前に「製品の互換性」を確認してください。
移行手順
移行には、次の 3 つのステップがあります。
ステップ 1: 環境の準備
ECS 上にセルフマネージド Elasticsearch クラスターをセットアップします。このガイドでは、バージョン 8.17 を例として使用します。インストール手順については、「Elasticsearch のインストールと実行」をご参照ください。
ご利用の ECS インスタンスと同じ VPC 内に Alibaba Cloud Logstash インスタンスを作成します。詳細については、「Alibaba Cloud Logstash インスタンスの作成」をご参照ください。
送信先 Alibaba Cloud Elasticsearch インスタンスを作成し、自動インデックス作成を有効にします。
Logstash インスタンスと同じ VPC 内に Elasticsearch インスタンスを作成し、同じバージョン (この例では 8.17) を使用します。詳細については、「Alibaba Cloud Elasticsearch インスタンスの作成」をご参照ください。
自動インデックス作成を有効にするには、「YML パラメーターの構成」をご参照ください。
ステップ 2: Logstash パイプラインの構成と実行
Alibaba Cloud Elasticsearch コンソールで、Logstash クラスターページに移動します。
トップナビゲーションバーで、お使いのクラスターが存在するリージョンを選択します。[Logstash クラスター] ページで、クラスターを探してその ID をクリックします。
左側のナビゲーションウィンドウで、[パイプライン] をクリックします。
[パイプライン] ページで、[パイプラインの作成] をクリックします。
[パイプラインタスクの作成] ページで、パイプライン ID を入力し、次の構成を使用してパイプラインを構成します。
プレースホルダー 説明 <IP address of the self-managed Elasticsearch master node>セルフマネージド Elasticsearch マスターノードの IP アドレス es-cn-mp91cbxsm000c****ご利用の Alibaba Cloud Elasticsearch インスタンス ID your_password各 Elasticsearch サービスのパスワード パラメーター 説明 hostsElasticsearch サービスのエンドポイントです。 [input]では、http://<マスターノード IP>:<ポート>を使用します。[output]では、http://<Alibaba Cloud Elasticsearch インスタンス ID>.elasticsearch.aliyuncs.com:9200を使用します。userElasticsearch にアクセスするためのユーザー名です。 userとpasswordは必須です。 セルフマネージドクラスターに X-Pack がインストールされていない場合は、これらを空白のままにします。 Alibaba Cloud Elasticsearch のデフォルトのユーザー名はelasticです。 カスタムユーザーを使用するには、まず必要なロールを割り当てます。 詳細については、「Elasticsearch X-Pack のロール管理を使用してユーザー権限を制御する」をご参照ください。passwordElasticsearch にアクセスするためのパスワードです。 index(input)次のように設定します: *,-.monitoring*,-.security*,-.kibana*。これにより、.で始まるシステムインデックスを除くすべてのインデックスが同期されます。index(output)%{[@metadata][input][elasticsearch][_index]}送信先クラスターでソースインデックス名を保持するには、`%{[@metadata][input][elasticsearch][_index]}` に設定します。docinfotrueソースクラスターからインデックス、タイプ、ID などのドキュメントメタデータをフェッチするには、`true` に設定します。document_id%{[@metadata][input][elasticsearch][_id]}送信先クラスターでソースドキュメント ID を保持するには、`%{[@metadata][input][elasticsearch][_id]}` に設定します。file_extend省略可能。デバッグログ機能を有効化します。 pathパラメーターは、ログ出力パスを指定します。このパラメーターを使用する前に、logstash-output-file_extendプラグインをインストールしてください。詳細については、「プラグインのインストールおよび削除」および「Logstash パイプラインを使用してデバッグ機能を設定する」をご参照ください。デフォルトのパスを取得するには、[設定のデバッグを開始] をクリックしてください(変更しないでください)。input { elasticsearch { hosts => ["http://<IP address of the self-managed Elasticsearch master node>:9200"] user => "elastic" index => "*,-.monitoring*,-.security*,-.kibana*" password => "your_password" docinfo => true } } filter { } output { elasticsearch { hosts => ["http://es-cn-mp91cbxsm000c****.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "your_password" index => "%{[@metadata][input][elasticsearch][_index]}" document_id => "%{[@metadata][input][elasticsearch][_id]}" } file_extend { path => "/ssd/1/ls-cn-v0h1kzca****/logstash/logs/debug/test" } }次のプレースホルダーを実際の値に置き換えます。パイプラインは、ソースクラスターからすべてのインデックスを読み取り(
.で始まるシステムインデックスを除く)、インデックス名とドキュメント ID を保持したまま送信先クラスターに書き込みます。次の表では、主要なパラメーターについて説明します。重複書き込みを防止する Elasticsearch 入力プラグインは、すべてのデータを読み取った後に自動的に停止します。Alibaba Cloud Logstash ではプロセスを継続的に実行する必要があるため、パイプラインが停止すると再起動されます。これにより、重複書き込みが発生する可能性があります。これを防ぐには、inputセクションにscheduleパラメーターを追加して、cron 式を使用してパイプラインを特定の時刻に 1 回だけ実行し、初回実行後にパイプラインを手動で停止します。schedule => "20 13 5 3 *"この例では、3 月 5 日の 13:20 にパイプラインを 1 回実行します。パイプラインが完了したら、手動で停止します。cron 構文の詳細については、Logstash ドキュメントの「スケジューリング」をご参照ください。追加の構成オプションについては、「Logstash 構成ファイルの説明」をご参照ください。
「[次へ]」をクリックして、パイプラインのパラメーターを設定します。
警告パイプラインを保存してデプロイすると、Logstash クラスターが再起動します。続行する前に、再起動がビジネスに影響しないことを確認してください。
パラメーター 説明 パイプラインワーカー フィルターおよび出力プラグインを並行して実行するワーカースレッドの数です。イベントがバックアップされている場合や CPU リソースが十分に活用されていない場合は、この値を増やします。デフォルト: vCPU の数。 パイプラインバッチサイズ 単一のワーカースレッドが、フィルタープラグインおよび出力プラグインを実行する前に、入力プラグインから収集するイベントの最大数です。値を大きくするとスループットが向上しますが、メモリ使用量も増加します。large バッチをサポートするには、 LS_HEAP_SIZE変数を使用して JVM ヒープサイズを増加させます。デフォルト値: 125。パイプラインバッチ遅延 小さなバッチをパイプラインワーカースレッドに割り当てるまでの待機時間 (ミリ秒) です。デフォルト: 50 ミリ秒。 キュータイプ イベントをバッファリングするための内部キューモデルです。MEMORY (デフォルト): メモリベースのキュー。PERSISTED: ディスクベースの永続キュー。 キューの最大バイト数 キューの最大データサイズ (MB) です。有効な値: 1 から 2⁵³ - 1 までの整数。合計ディスク容量よりも小さい必要があります。デフォルト: 1024。 キュー チェックポイント書き込み チェックポイントが適用されるまでの最大イベント数(永続化キューの場合)。制限なしの場合は 0を設定します。デフォルト値: 1024。
[保存] または [保存してデプロイ] をクリックします。
保存: パイプライン設定を保存し、クラスターの変更をトリガーしますが、設定は直ちに有効になりません。[パイプライン]ページでパイプラインを見つけ、[今すぐデプロイ]を[操作]列でクリックします。その後、システムはLogstash クラスターを再起動して、設定を有効にします。
[保存してデプロイ]: Logstash クラスターをすぐに再起動し、設定を適用します。
ステップ 3: データ移行結果の表示
Alibaba Cloud Elasticsearch インスタンスで、Kibana コンソールにログインします。左側のナビゲーションウィンドウで、
アイコンをクリックし、「管理 > よく使うツール」を選択します。このガイドでは Alibaba Cloud Elasticsearch 8.17 を使用しています。他のバージョンでは手順が異なる場合があります。実際のコンソール UI を参照してください。
[コンソール] で、次のコマンドを実行して移行されたすべてのインデックスを一覧表示します。
GET /_cat/indices?v出力には、送信先クラスター上のすべてのインデックスが一覧表示されます。インデックス名とドキュメント数がソースクラスターのものと一致することを確認します。

よくある質問
セルフマネージド Elasticsearch クラスターと Alibaba Cloud Logstash インスタンスが異なるアカウントにある場合、ネットワーク接続を構成するにはどうすればよいですか?
ECS インスタンスと Logstash インスタンスは異なるアカウントにあるため、異なる VPC に存在します。Cloud Enterprise Network (CEN) を使用して、2 つの VPC を接続します。詳細については、「ステップ 3: ネットワークインスタンスのロード」をご参照ください。
Logstash がデータの書き込みに失敗した場合、どうすればよいですか?
「Logstash データ書き込みの問題のトラブルシューティング」をご参照ください。