このトピックでは、Alibaba Cloud Logstash のパイプライン設定機能を使用して、自己管理 Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターにデータを移行する方法について説明します。
制限事項
自己管理 Elasticsearch クラスターをホストする Elastic Compute Service (ECS) インスタンスは、VPC (Virtual Private Cloud) 内にある必要があります。ClassicLink を介して接続された ECS インスタンスはサポートされていません。
Alibaba Cloud Logstash インスタンスは VPC にデプロイされます。自己管理 Elasticsearch クラスターと Logstash クラスターが同じ VPC 内にある場合は、直接接続できます。異なるネットワークにある場合は、NAT Gateway を使用してパブリックネットワークに接続する必要があります。詳細については、「パブリックデータ伝送のための NAT ゲートウェイの設定」をご参照ください。
自己管理 Elasticsearch クラスターをホストする ECS インスタンスのセキュリティグループでは、Logstash クラスターノードの IP アドレスからのアクセスを許可する必要があります。これらの IP アドレスは、[基本情報] ページで確認できます。また、ポート 9200 を開く必要もあります。
このトピックでは、Alibaba Cloud Logstash 8.11.4 を使用して、自己管理 Elasticsearch 8.17 クラスターから Alibaba Cloud Elasticsearch 8.17 クラスターに移行する例を説明します。提供されるスクリプトはこの移行シナリオ専用であり、他のバージョンと互換性がない場合があります。別の設定を使用する場合は、「製品の互換性」を参照して互換性の問題を確認してください。問題が存在する場合は、インスタンスをアップグレードするか、新しいインスタンスを購入する必要があります。
操作手順
ステップ1:環境の準備
自己管理 Elasticsearch クラスターをセットアップします。
Alibaba Cloud ECS を使用して、自己管理 Elasticsearch クラスターをセットアップできます。このトピックでは、バージョン 8.17 を例として使用します。詳細については、「Elasticsearch のインストールと実行」をご参照ください。
Alibaba Cloud Logstash インスタンスを作成します。
自己管理 Elasticsearch クラスターをホストする ECS インスタンスと同じ VPC に Logstash インスタンスを作成します。詳細については、「Alibaba Cloud Logstash インスタンスの作成」をご参照ください。
移行先の Alibaba Cloud Elasticsearch インスタンスを作成し、インデックスの自動作成を有効にします。
Logstash インスタンスと同じ VPC にあり、同じバージョンの Elasticsearch インスタンスを作成します。このトピックでは、バージョン 8.17 を例として使用します。詳細については、「Alibaba Cloud Elasticsearch インスタンスの作成」をご参照ください。
インデックスの自動作成を有効にするには、「YML パラメーターの設定」をご参照ください。
説明Logstash はデータのみを同期し、データ構造の特徴は同期しません。インデックスの自動作成を有効にすると、同期前後のデータ構造が一致しない可能性があります。データ構造の一貫性を確保するには、まず移行先の Elasticsearch インスタンスに手動で空のインデックスを作成する必要があります。インデックスを作成する際に、ソースインスタンスから mappings および settings 構造をコピーし、適切な数のシャードを割り当ててください。
ステップ2:Logstash パイプラインの設定と実行
目的のクラスターに移動します。
上部のナビゲーションバーで、クラスターが存在するリージョンを選択します。
Logstash クラスター ページで、クラスターを見つけてその ID をクリックします。
表示されたページの左側のナビゲーションウィンドウで、パイプライン をクリックします。
[パイプライン] ページで、パイプラインの作成 をクリックします。
パイプラインタスクの作成 ページで、パイプライン ID を入力し、パイプラインを設定します。
このトピックで使用されるパイプライン設定は次のとおりです。
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" } }表 1. パラメーターの説明
パラメーター
説明
hosts
自己管理または Alibaba Cloud Elasticsearch サービスのエンドポイント。input セクションでは、フォーマットは
http://<自己管理 Elasticsearch マスターノードの IP アドレス>:<ポート>です。output セクションでは、フォーマットはhttp://<Alibaba Cloud Elasticsearch インスタンス ID>.elasticsearch.aliyuncs.com:9200です。重要パイプラインを設定する際は、<自己管理 Elasticsearch マスターノードの IP アドレス>、<ポート>、および <Alibaba Cloud Elasticsearch インスタンス ID> を実際の値に置き換えてください。
user
自己管理または Alibaba Cloud Elasticsearch サービスにアクセスするためのユーザー名。
重要user と password は必須パラメーターです。自己管理 Elasticsearch クラスターに X-Pack がインストールされていない場合は、これらのパラメーターを空のままにすることができます。
Alibaba Cloud Elasticsearch インスタンスにアクセスするためのデフォルトのユーザー名は elastic です。このトピックでは、このユーザー名を例として使用します。カスタムユーザーを使用する場合は、そのユーザーに必要なロールと権限を割り当てる必要があります。詳細については、「Elasticsearch X-Pack のロール管理を使用したユーザー権限の制御」をご参照ください。
password
自己管理または Alibaba Cloud Elasticsearch サービスにアクセスするためのパスワード。
index
同期するインデックスの名前。input セクションでは、このパラメーターを *,-.monitoring*,-.security*,-.kibana* に設定して、ピリオド (
.) で始まるシステムインデックスを除くすべてのインデックスを同期します。output セクションでは、このパラメーターを %{[@metadata][input][elasticsearch][_index]} に設定して、メタデータ内のインデックスと一致させます。これにより、Alibaba Cloud Elasticsearch によって生成されるインデックスが、自己管理 Elasticsearch クラスター内のインデックスと同じ名前を持つことが保証されます。docinfo
このパラメーターを true に設定すると、Alibaba Cloud Elasticsearch が自己管理 Elasticsearch クラスター内のドキュメントからインデックス、タイプ、ID などのメタデータをフェッチできるようになります。
document_id
このパラメーターを %{[@metadata][input][elasticsearch][_id]} に設定して、メタデータ内のドキュメント ID と一致させます。これにより、Alibaba Cloud Elasticsearch によって生成されるドキュメント ID が、自己管理 Elasticsearch クラスター内のドキュメント ID と同じであることが保証されます。
file_extend
オプション。デバッグログ機能を有効にします。path パラメーターは、デバッグログの出力パスを指定します。このパラメーターを設定すると、コンソールで直接出力を表示できます。このパラメーターを設定しない場合は、移行先で出力を確認してからコンソールに戻って変更を行う必要があり、時間がかかる場合があります。詳細については、「Logstash パイプラインを使用したデバッグ機能の設定」をご参照ください。
重要file_extend パラメーターを使用する前に、logstash-output-file_extend プラグインをインストールする必要があります。詳細については、「プラグインのインストールと削除」をご参照ください。デフォルトでは、path フィールドはシステム指定のパスに設定されています。パスを変更しないことを推奨します。設定デバッグの開始 をクリックして path を取得できます。
Elasticsearch input プラグインは、設定されたクエリ文に基づいて Elasticsearch クラスターからドキュメントを読み取ります。これは、テストログの一括インポートなどの操作に役立ちます。デフォルトでは、データの読み取り後に同期アクションは自動的に停止します。しかし、Alibaba Cloud Logstash はプロセスの継続的な実行を必要とします。プロセスが停止すると、再起動します。これにより、`logstash input es` のような単一タスクのシナリオでデータの重複書き込みが発生する可能性があります。重複書き込みを防ぐには、長い間隔で定期タスクを設定します。たとえば、3月5日 13:20 にタスクを実行するようにスケジュールできます。タスクが初めて実行された後、パイプラインを停止します。これを行うには、schedule パラメーターで cron 構文を使用します。詳細については、「Logstash ドキュメントのスケジューリングセクション」をご参照ください。
たとえば、3月5日 13:20 にタスクを実行するようにスケジュールするには:
schedule => "20 13 5 3 *"設定ファイルの設定に関する詳細については、「Logstash 設定ファイルの説明」をご参照ください。
次へ をクリックして、パイプラインパラメーターを設定します。

パラメーター
説明
パイプラインワーカー
パイプラインのフィルタープラグインと出力プラグインを並行して実行するワーカースレッドの数。イベントのバックログが存在する場合や、一部の CPU リソースが使用されていない場合は、CPU 使用率を最大化するためにスレッド数を増やすことを推奨します。このパラメーターのデフォルト値は vCPU の数です。
パイプラインバッチサイズ
単一のワーカースレッドがフィルタープラグインと出力プラグインを実行しようとする前に、入力プラグインから収集できるイベントの最大数。このパラメーターを大きな値に設定すると、単一のワーカースレッドはより多くのイベントを収集できますが、より多くのメモリを消費します。ワーカースレッドがより多くのイベントを収集するのに十分なメモリを確保したい場合は、LS_HEAP_SIZE 変数を指定して Java 仮想マシン (JVM) ヒープサイズを増やします。デフォルト値:125。
パイプラインバッチ遅延
イベントの待機時間。この時間は、パイプラインイベントのバッチタスクを作成した後、小さなバッチをパイプラインワーカースレッドに割り当てる前に発生します。デフォルト値:50。単位:ミリ秒。
キュータイプ
イベントをバッファリングするための内部キューモデル。有効な値:
MEMORY:従来のメモリベースのキュー。これがデフォルト値です。
PERSISTED:ディスクベースの ACK 付きキュー。永続キューです。
キュー最大バイト数
キューの最大データサイズ。単位:MB。有効な値:
1 から 2<sup>53</sup> - 1までの整数。デフォルト値:1024。説明値はディスクの総容量より小さくする必要があります。
キューチェックポイント書き込み
永続キューが有効な場合に、チェックポイントが強制される前に書き込まれるイベントの最大数。値 0 は制限なしを示します。デフォルト値:1024。
警告パラメーターを設定した後、設定を保存してパイプラインをデプロイする必要があります。これにより、Logstash クラスターの再起動がトリガーされます。続行する前に、再起動がビジネスに影響を与えないことを確認してください。
保存 または 保存してデプロイ をクリックします。
保存:このボタンをクリックすると、システムはパイプライン設定を保存し、クラスターの変更をトリガーします。ただし、設定は有効になりません。[保存] をクリックすると、パイプライン ページが表示されます。パイプライン ページで、作成したパイプラインを見つけ、操作 列の 今すぐデプロイ をクリックします。その後、システムは Logstash クラスターを再起動して設定を有効にします。
保存してデプロイ:このボタンをクリックすると、システムは Logstash クラスターを再起動して設定を有効にします。
ステップ3:データ移行結果の確認
ご利用の Alibaba Cloud Elasticsearch インスタンスで、Kibana コンソールにログインします。左側のナビゲーションウィンドウで、
アイコンをクリックし、 を選択します。説明このトピックでは、Alibaba Cloud Elasticsearch 8.17 を例として使用します。他のバージョンでは操作が異なる場合があります。コンソールの実際のユーザーインターフェース (UI) が優先されます。
コンソール で、
GET /_cat/indices?vコマンドを実行して、正常に移行されたインデックスを表示します。
よくある質問
Q: ECS インスタンス上の自己管理 Elasticsearch クラスターと Alibaba Cloud Logstash インスタンスが異なるアカウントにあります。データ移行のためにネットワーク接続をどのように設定すればよいですか?
A: ECS インスタンスと Logstash インスタンスは異なるアカウントにあるため、異なる VPC に存在します。2つの VPC 間の接続を設定する必要があります。これには Cloud Enterprise Network (CEN) を使用できます。詳細については、「ステップ3:ネットワークインスタンスのロード」をご参照ください。
Q: Logstash がデータを書き込む際に問題が発生した場合はどうすればよいですか?
A: 「Logstash のデータ書き込み問題のトラブルシューティング」をご参照ください。