Alibaba Cloud Logstash パイプラインを使用して、セルフマネージド Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターにデータを移行できます。このトピックでは、手順について詳しく説明します。
制限事項
セルフマネージド Elasticsearch クラスターをホストする Elastic Compute Service (ECS) インスタンスは、仮想プライベートクラウド (VPC) にデプロイする必要があります。ClassicLink 接続を介して VPC に接続されている ECS インスタンスは使用できません。
Alibaba Cloud Logstash クラスターは VPC にデプロイされます。Logstash パイプラインを構成する前に、セルフマネージド Elasticsearch クラスターをホストする ECS インスタンスが、使用する Alibaba Cloud Logstash クラスターと同じ VPC に存在するかどうかを確認する必要があります。異なる VPC に存在する場合は、ネットワークアドレス変換 (NAT) ゲートウェイを構成し、ゲートウェイを使用して ECS インスタンスと Logstash クラスターをインターネットに接続する必要があります。詳細については、「インターネット経由のデータ転送用の NAT ゲートウェイの構成」をご参照ください。
セルフマネージド Elasticsearch クラスターをホストする ECS インスタンスのセキュリティグループに対して、Logstash クラスターのノードの IP アドレスからのアクセスを許可するセキュリティグループルールを構成する必要があります。さらに、ポート 9200 を有効にする必要があります。Logstash クラスターのノードの IP アドレスは、Logstash クラスターの [基本情報] ページで取得できます。
この例では、Alibaba Cloud Logstash V6.7.0 クラスターを使用して、セルフマネージド Elasticsearch 5.6.16 クラスターから Alibaba Cloud Elasticsearch V6.7.0 クラスターにデータを移行します。このトピックで提供されているスクリプトは、このタイプのデータ移行にのみ適用されます。他のタイプのデータ移行を実行する場合は、「互換性マトリックス」の説明に基づいて、Elasticsearch クラスターと Logstash クラスターが互換性要件を満たしているかどうかを確認する必要があります。互換性要件を満たしていない場合は、バージョンをアップグレードするか、新しいクラスターを購入できます。
手順
手順 1: 準備を行う
セルフマネージド Elasticsearch クラスターを作成します。
Alibaba Cloud ECS インスタンスを使用してセルフマネージド Elasticsearch クラスターを作成することをお勧めします。この例では、セルフマネージド Elasticsearch 5.6.16 クラスターが作成されます。詳細については、「Elasticsearch のインストールと実行」をご参照ください。
Alibaba Cloud Logstash クラスターを作成します。
セルフマネージド Elasticsearch クラスターをホストする ECS インスタンスと同じ VPC に Alibaba Cloud Logstash クラスターを作成することをお勧めします。詳細については、「Alibaba Cloud Logstash クラスターの作成」をご参照ください。
Alibaba Cloud Elasticsearch クラスターを作成し、クラスターの自動インデックス作成機能を有効にします。
Alibaba Cloud Logstash クラスターと同じ VPC に Alibaba Cloud Elasticsearch クラスターを作成することをお勧めします。Alibaba Cloud Elasticsearch クラスターが Logstash クラスターと同じバージョンであることを確認してください。この例では、V6.7.0 が使用されています。詳細については、「Alibaba Cloud Elasticsearch クラスターの作成」をご参照ください。
自動インデックス作成機能を有効にする方法については、「YML ファイルの構成」をご参照ください。
説明Logstash は、データを移行するときにデータの構造機能を同期しません。そのため、自動インデックス作成機能を有効にすると、データが宛先に移行された後にデータの構造が変更される可能性があります。データの構造を変更せずに維持する場合は、宛先に空のインデックスを作成し、そのインデックスにデータを移行することをお勧めします。インデックスを作成するときは、ソースの mappings と settings の構成をコピーし、シャードの数を適切な値に設定します。
手順 2: Logstash パイプラインを構成して実行する
Alibaba Cloud Elasticsearch コンソールの [Logstash クラスター] ページ に移動します。
目的のクラスターに移動します。
上部のナビゲーションバーで、クラスターが存在するリージョンを選択します。
[logstash クラスター] ページで、クラスターを見つけて ID をクリックします。
表示されるページの左側のナビゲーションペインで、[パイプライン] をクリックします。
[パイプライン] ページで、[パイプラインの作成] をクリックします。
[作成] ウィザードで、パイプライン ID を入力し、パイプラインを構成します。
この例では、パイプラインに次の構成が使用されています。
input { elasticsearch { // セルフマネージド Elasticsearch クラスターのマスターノードの IP アドレス hosts => ["http://<IP address of the master node in the self-managed Elasticsearch cluster>:9200"] user => "elastic" // システムインデックス以外のすべてのインデックス index => "*,-.monitoring*,-.security*,-.kibana*" password => "your_password" docinfo => true } } filter { } output { elasticsearch { // Alibaba Cloud Elasticsearch クラスターのエンドポイント hosts => ["http://es-cn-mp91cbxsm000c****.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "your_password" index => "%{[@metadata][_index]}" document_type => "%{[@metadata][_type]}" document_id => "%{[@metadata][_id]}" } file_extend { path => "/ssd/1/ls-cn-v0h1kzca****/logstash/logs/debug/test" } }表 1. パラメーター
パラメーター
説明
hosts
セルフマネージド Elasticsearch クラスターまたは Alibaba Cloud Elasticsearch クラスターのエンドポイント。input 部分では、
http://<セルフマネージド Elasticsearch クラスターのマスターノードの IP アドレス>:<ポート番号>の形式でこのパラメーターの値を指定します。output 部分では、http://<Alibaba Cloud Elasticsearch クラスターの ID>.elasticsearch.aliyuncs.com:9200の形式でこのパラメーターの値を指定します。重要このパラメーターを構成する際は、<セルフマネージド Elasticsearch クラスターのマスターノードの IP アドレス>、<ポート番号>、<Alibaba Cloud Elasticsearch クラスターの ID> を実際の値に置き換える必要があります。
user
セルフマネージド Elasticsearch クラスターまたは Alibaba Cloud Elasticsearch クラスターにアクセスするために使用されるユーザー名。
重要user パラメーターと password パラメーターは、ほとんどの場合必須です。セルフマネージド Elasticsearch クラスターに X-Pack プラグインがインストールされていない場合は、これら 2 つのパラメーターを空のままにすることができます。
Alibaba Cloud Elasticsearch クラスターにアクセスするために使用されるデフォルトのユーザー名は elastic です。この例では、デフォルトのユーザー名が使用されています。カスタムユーザー名を使用することもできます。カスタムユーザー名を使用する前に、そのユーザー名のロールを作成し、必要な権限をロールに付与する必要があります。詳細については、「Elasticsearch X-Pack が提供する RBAC メカニズムを使用してアクセス制御を実装する」をご参照ください。
password
セルフマネージド Elasticsearch クラスターまたは Alibaba Cloud Elasticsearch クラスターにアクセスするために使用されるパスワード。
index
データを移行する、またはデータを移行する先のインデックスの名前。input 部分でこのパラメーターを *,-.monitoring*,-.security*,-.kibana* に設定すると、システムは、ピリオド (
.) で始まる名前を持つシステムインデックス以外のインデックスのデータを移行します。output 部分でこのパラメーターを %{[@metadata][_index]} に設定すると、システムはメタデータ内の index パラメーターと一致します。これは、Alibaba Cloud Elasticsearch クラスターで生成されるインデックスの名前が、セルフマネージド Elasticsearch クラスターのインデックスの名前と同じであることを示します。docinfo
このパラメーターを true に設定すると、システムはセルフマネージド Elasticsearch クラスター内のドキュメントのメタデータ (index、type、id フィールドなど) を抽出します。
document_type
このパラメーターを %{[@metadata][_type]} に設定すると、システムはメタデータ内のインデックスタイプと一致します。これは、Alibaba Cloud Elasticsearch クラスターで生成されるインデックスのタイプが、セルフマネージド Elasticsearch クラスターのインデックスのタイプと同じであることを示します。
説明ソース Elasticsearch クラスターのバージョンが 6.X で、宛先 Elasticsearch クラスターのバージョンが 7.X の場合は、document_type を
_docに設定します。document_id
このパラメーターを %{[@metadata][_id]} に設定すると、システムはメタデータ内のドキュメント ID と一致します。これは、Alibaba Cloud Elasticsearch クラスターで生成されるドキュメントの ID が、セルフマネージド Elasticsearch クラスターのドキュメントの ID と同じであることを示します。
file_extend
このパラメーターはオプションです。パイプライン構成のデバッグ機能が有効になっているかどうかを指定します。path フィールドを使用して、デバッグログを格納するパスを指定できます。このパラメーターを構成することをお勧めします。パラメーターが構成されると、コンソールでパイプラインの出力データを直接表示できます。パラメーターが構成されていない場合は、宛先でパイプラインの出力データを確認する必要があります。出力データが正しくない場合は、コンソールでパイプラインの構成を変更する必要があります。これにより、時間と労力のコストが増加します。この機能の詳細については、「パイプライン構成デバッグ機能を使用する」をご参照ください。
重要file_extend パラメーターを使用する前に、logstash-output-file_extend プラグインをインストールする必要があります。詳細については、「プラグインのインストールと削除」をご参照ください。デフォルトでは、path フィールドはシステム指定のパスに設定されています。パスは変更しないことをお勧めします。[構成デバッグの開始] をクリックして path を取得できます。
Elasticsearch クラスターが指定されている入力プラグインは、プラグインに構成されているクエリステートメントに基づいてクラスターからデータを読み取ることができます。このプラグインは、一度に複数のテストログをインポートする必要があるシナリオに適しています。デフォルトでは、データの読み取り後、同期操作は自動的に無効になり、Logstash プロセスは停止します。ただし、Logstash はプロセスが継続的に実行されるようにする必要があります。そのため、Logstash はプロセスを再起動します。これにより、パイプラインが 1 つしかない場合にデータの重複書き込みが発生する可能性があります。この問題に対処するには、期間を指定して、Logstash が定期的にパイプラインを実行できるようにします。たとえば、毎年 3 月 5 日の 13:20 にパイプラインを実行するように Logstash を有効にすることができます。パイプラインが初めて実行された後、Logstash はパイプラインを停止します。schedule パラメーターを cron 式の構文と組み合わせて使用して、期間を指定できます。詳細については、オープンソース Logstash のドキュメントの「Scheduling」をご参照ください。
次のコードは例を示しています。この例では、パイプラインは毎年 3 月 5 日の 13:20 に実行されるようにスケジュールされています。
// 毎年 3 月 5 日の 13:20 に実行 schedule => "20 13 5 3 *"[構成設定] フィールドのパラメーターを構成する方法の詳細については、「Logstash 構成ファイル」をご参照ください。
[次へ] をクリックしてパイプラインパラメーターを構成します。

パラメーター
説明
パイプラインワーカー
パイプラインのフィルタープラグインと出力プラグインを並列で実行するワーカースレッドの数。イベントのバックログが存在する場合、または一部の CPU リソースが使用されていない場合は、CPU 使用率を最大化するためにスレッド数を増やすことをお勧めします。このパラメーターのデフォルト値は vCPU の数です。
パイプラインバッチサイズ
単一のワーカースレッドがフィルタープラグインと出力プラグインの実行を試みる前に、入力プラグインから収集できるイベントの最大数。このパラメーターを大きな値に設定すると、単一のワーカースレッドはより多くのイベントを収集できますが、より多くのメモリを消費します。ワーカースレッドがより多くのイベントを収集するのに十分なメモリを確保するには、LS_HEAP_SIZE 変数を指定して Java 仮想マシン (JVM) のヒープサイズを増やします。デフォルト値: 125。
パイプラインバッチ遅延
イベントの待機時間。この時間は、小さなバッチをパイプラインワーカースレッドに割り当てる前、およびパイプラインイベントのバッチタスクを作成した後に発生します。デフォルト値: 50。単位: ミリ秒。
キュータイプ
イベントをバッファリングするための内部キューモデル。有効な値:
MEMORY: 従来のメモリベースのキュー。これはデフォルト値です。
PERSISTED: ディスクベースの ACKed キュー。永続キューです。
キュー最大バイト数
値はディスクの合計容量よりも小さくなければなりません。デフォルト値: 1024。単位: MB。
キューチェックポイント書き込み
永続キューが有効になっている場合にチェックポイントが適用される前に書き込まれるイベントの最大数。値 0 は制限がないことを示します。デフォルト値: 1024。
警告パラメーターを構成した後、設定を保存してパイプラインをデプロイする必要があります。これにより、Logstash クラスターの再起動がトリガーされます。続行する前に、再起動がビジネスに影響を与えないことを確認してください。
[保存] または [保存してデプロイ] をクリックします。
[保存]: このボタンをクリックすると、システムはパイプライン設定を保存し、クラスターの変更をトリガーします。ただし、設定は有効になりません。[保存] をクリックすると、[パイプライン] ページが表示されます。[パイプライン] ページで、作成したパイプラインを見つけて、[アクション] 列の [今すぐデプロイ] をクリックします。その後、システムは Logstash クラスターを再起動して設定を有効にします。
[保存してデプロイ]: このボタンをクリックすると、システムは Logstash クラスターを再起動して設定を有効にします。
手順 3: データ移行結果を表示する
Elasticsearch クラスターの Kibana コンソールにログインし、指示に従って Kibana コンソールのホームページに移動します。
Kibana コンソールにログインする方法の詳細については、「Kibana コンソールへのログイン」をご参照ください。
説明この例では、Elasticsearch V6.7.0 クラスターが使用されています。他のバージョンのクラスターでの操作は異なる場合があります。コンソールでの実際の操作が優先されます。
表示されるページの左側のナビゲーションペインで、[開発ツール] をクリックします。
表示されるページの [コンソール] タブで、
GET /_cat/indices?vコマンドを実行して、移行されたデータが格納されているインデックスを表示します。
FAQ
Q: セルフマネージド Elasticsearch クラスターをホストする ECS インスタンスと Alibaba Cloud Logstash クラスターが異なるアカウントに属している場合、ECS インスタンスを Alibaba Cloud Logstash クラスターに接続するにはどうすればよいですか?
A: ECS インスタンスと Logstash クラスターは異なるアカウントに属しています。そのため、ECS インスタンスと Logstash クラスターは異なる VPC に存在します。この場合、Cloud Enterprise Network (CEN) を使用して ECS インスタンスを Logstash クラスターに接続できます。詳細については、「手順 3: ネットワークインスタンスのアタッチ」をご参照ください。
Q: Logstash が宛先にデータを書き込むときにエラーが発生します。どうすればよいですか?
A: 「Logstash を使用したデータ転送に関する FAQ」の説明に基づいてエラーをトラブルシューティングします。