このトピックでは、Alibaba Cloud Logstashクラスターを作成し、Alibaba Cloud Elasticsearchクラスター間でデータを同期するためのLogstashパイプラインを構成する方法について説明します。
背景情報
前提条件
- Alibaba Cloudアカウントが作成されていること。
Alibaba Cloudアカウントを作成するには、[アカウント登録] ページにアクセスしてください。
- 仮想プライベートクラウド(VPC)とvSwitchが作成されていること。
詳細については、「IPv4 CIDRブロックを持つVPCを作成する」をご参照ください。
制限事項
- ソースElasticsearchクラスター、Logstashクラスター、およびデスティネーションElasticsearchクラスターは、同じVPC内に存在する必要があります。異なるVPC内に存在する場合は、Logstashクラスターにネットワークアドレス変換(NAT)ゲートウェイを設定する必要があります。これにより、Logstashクラスターはインターネット経由でソースElasticsearchクラスターとデスティネーションElasticsearchクラスターに接続できます。詳細については、「インターネット経由のデータ転送用にNATゲートウェイを構成する」をご参照ください。
- ソースElasticsearchクラスター、Logstashクラスター、およびデスティネーションElasticsearchクラスターのバージョンは、互換性要件を満たしている必要があります。詳細については、「互換性マトリックス」をご参照ください。
手順
- 準備ソース Elasticsearch クラスタとデスティネーション Elasticsearch クラスタを作成し、デスティネーション Elasticsearch クラスタの自動インデックス作成機能を有効にして、テストデータを準備します。
- 手順 1:Logstash クラスターを作成するLogstash クラスターを作成します。Logstash クラスターの状態がアクティブに変わったら、Logstash パイプラインを作成して実行できます。
- 手順 2:Logstash パイプラインを作成して実行するLogstash パイプラインを作成および構成してデータを同期します。
- 手順 3:同期結果の表示宛先 Elasticsearch クラスタの Kibana コンソールにログオンし、データ同期結果を表示します。
準備
- Alibaba Cloud Elasticsearch クラスタを作成します。
- Elasticsearch コンソール にログオンします。
- 左側のナビゲーションペインで、[elasticsearch クラスタ] をクリックします。
- [elasticsearch クラスタ] ページで [作成] をクリックし、2 つの Elasticsearch クラスタを作成します。2 つの Elasticsearch クラスタは、Logstash パイプラインの入力と出力として使用されます。詳細については、「Alibaba Cloud Elasticsearch クラスタを作成する」をご参照ください。この例では、Logstash V6.7.0 クラスタを使用して、Standard Edition の Elasticsearch V6.7.0 クラスタ間でデータを同期します。このトピックで提供されるコードは、このタイプのデータ同期にのみ適用されます。次の図は、作成された Elasticsearch クラスタの構成を示しています。説明 他のタイプのデータ同期を実行する場合は、「互換性マトリックス」の説明に基づいて、Elasticsearch クラスタと Logstash クラスタが互換性の要件を満たしているかどうかを確認する必要があります。互換性の要件を満たしていない場合は、バージョンをアップグレードするか、新しいクラスタを購入できます。
説明 Elasticsearch クラスタへのアクセスに使用されるデフォルトユーザーは elastic です。 elastic 以外のユーザーを使用する場合は、必要な権限をロールに付与し、そのロールをユーザーに割り当てる必要があります。詳細については、「Elasticsearch X-Pack が提供する RBAC メカニズムを使用してアクセス制御を実装する」をご参照ください。この例では、デフォルトユーザーが使用されます。
- 宛先 Elasticsearch クラスタの自動インデックス作成機能を有効にします。詳細については、「YML ファイルを構成する」をご参照ください。説明
データセキュリティを確保するために、Alibaba Cloud Elasticsearch はデフォルトで [自動インデックス作成] 機能を無効にしています。 Alibaba Cloud Logstash を使用してデータを Alibaba Cloud Elasticsearch クラスタに転送する場合、インデックス作成 API を呼び出すのではなく、データを送信することで Elasticsearch クラスタにインデックスが作成されます。そのため、Alibaba Cloud Logstash を使用してデータを転送する前に、宛先 Elasticsearch クラスタの [自動インデックス作成] 機能を有効にするか、宛先 Elasticsearch クラスタにインデックスを作成し、そのインデックスのマッピングを構成する必要があります。
- テストデータを準備します。ソース Elasticsearch クラスタの Kibana コンソールにログオンします。左側のナビゲーションペインで、[開発ツール] をクリックします。表示されるページの [コンソール] タブで、インデックスを作成し、ドキュメントをインデックスに挿入します。重要
- Kibana コンソールへのログオン方法の詳細については、「Kibana コンソールにログオンする」をご参照ください。
- 次のコードは Elasticsearch V6.7 クラスタにのみ適用され、テスト専用です。 V7.0 以降の Elasticsearch クラスタのサンプルコードの詳細については、「Elasticsearch を使い始める」をご参照ください。
- 名前が my_index で、タイプが my_type のインデックスを作成します。
PUT /my_index { "settings" : { "index" : { "number_of_shards" : "5", "number_of_replicas" : "1" } }, "mappings" : { "my_type" : { "properties" : { "post_date": { "type": "date" }, "tags": { "type": "keyword" }, "title" : { "type" : "text" } } } } } - 名前が 1 のドキュメントを my_index インデックスに挿入します。
PUT /my_index/my_type/1?pretty { "title": "One", "tags": ["ruby"], "post_date":"2009-11-15T13:00:00" } - 名前が 2 のドキュメントを my_index インデックスに挿入します。
PUT /my_index/my_type/2?pretty { "title": "Two", "tags": ["ruby"], "post_date":"2009-11-15T14:00:00" }
準備
- Logstash クラスタ ページに移動します。
Alibaba Cloud Elasticsearch コンソールの Logstash クラスタ ページ に移動します。
- 上部のナビゲーションバーで、デスティネーション Elasticsearch クラスタが存在するリージョンを選択します。
- 左側のナビゲーションペインで、[logstash クラスタ] をクリックします。
- [logstash クラスタ] ページで、[作成] をクリックします。
- 購入ページで、クラスタの起動設定を構成します。この例では、課金方法は従量課金制、Logstash のバージョンは 6.7 に設定されており、その他のパラメーターにはデフォルト値が保持されています。詳細については、「Alibaba Cloud Logstash クラスタを作成する」をご参照ください。説明
- プログラム開発または機能テストには、[従量課金制] の Logstash クラスタを購入することをお勧めします。
- [サブスクリプション] クラスタには割引が適用されます。
- 利用規約を読み、「Logstash (従量課金制) 利用規約」を選択し、[今すぐ購入] をクリックします。
- 作成の成功を示すメッセージが表示されたら、[コンソール] をクリックします。
- 上部のナビゲーションバーで、Logstash クラスタが存在するリージョンを選択します。左側のナビゲーションペインで、[logstash クラスタ] をクリックします。[logstash クラスタ] ページで、新しく作成された Logstash クラスタを表示します。
ステップ 2: Logstash パイプラインの作成と実行
新しく作成された Logstash クラスタの状態が [アクティブ] に変わったら、Logstash パイプラインを作成して実行し、データを同期できます。
- [logstash クラスタ] ページで、新しく作成した Logstash クラスタを見つけ、パイプラインの管理[アクション] 列の をクリックします。
- [パイプライン] ページで、[パイプラインの作成] をクリックします。
- [構成設定] ステップで、[パイプライン ID] と [構成設定] を構成します。この例では、パイプラインに次の構成を使用します。
input { elasticsearch { hosts => ["http://es-cn-0pp1f1y5g000h****.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "your_password" index => "*,-.monitoring*,-.security*,-.kibana*" docinfo => true } } filter {} output { 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" } }パラメータ 説明 hosts ソースまたはデスティネーション Elasticsearch クラスタのエンドポイント。input 部分では、 http://<ソース Elasticsearch クラスタの ID>.elasticsearch.aliyuncs.com:9200の形式でこのパラメータの値を指定します。output 部分では、http://<デスティネーション Elasticsearch クラスタの ID>.elasticsearch.aliyuncs.com:9200の形式でこのパラメータの値を指定します。user ソースまたはデスティネーション Elasticsearch クラスタへのアクセスに使用するユーザー名。デフォルトのユーザー名は elastic です。 password ソースまたはデスティネーション Elasticsearch クラスタへのアクセスに使用するパスワード。パスワードは、クラスタの作成時に指定します。パスワードを忘れた場合は、リセットできます。パスワードのリセット手順と注意事項については、Elasticsearch クラスタのアクセス パスワードをリセットする をご参照ください。 index データを同期するインデックスの名前、またはデータを同期する先のインデックス。 input 部分でこのパラメータを *,-.monitoring*,-.security*,-.kibana*に設定すると、システムは、名前がピリオド (.) で始まるシステム インデックス以外のインデックスのデータを同期します。値%{[@metadata][_index]}は、システムがメタデータ内の index パラメータと一致することを示します。この場合、デスティネーション インデックスの名前はソース インデックスの名前と同じです。説明 システム インデックスは、Elasticsearch クラスタの監視ログを保存するために使用され、同期する必要はありません。docinfo 値 true は、システムがインデックス、タイプ、ID などの Elasticsearch ドキュメントのメタデータを抽出することを示します。 document_type デスティネーション インデックスのタイプ。値 %{[@metadata][_type]}は、システムがメタデータ内の document_type パラメータと一致することを示します。この場合、デスティネーション インデックスのタイプはソース インデックスのタイプと同じです。document_id デスティネーション インデックス内のドキュメントの ID。値 %{[@metadata][_id]}は、システムがメタデータ内の document_id パラメータと一致することを示します。この場合、デスティネーション インデックス内のドキュメントの ID は、ソース インデックス内のドキュメントの ID と同じです。file_extend このパラメータはオプションです。パイプライン構成のデバッグ機能が有効になっているかどうかを指定します。path フィールドを使用して、デバッグ ログを保存するパスを指定できます。このパラメータを構成することをお勧めします。パラメータが構成されると、コンソールでパイプラインの出力データを直接表示できます。パラメータが構成されていない場合は、デスティネーションでパイプラインの出力データを確認する必要があります。出力データが正しくない場合は、コンソールでパイプラインの構成を変更する必要があります。これにより、時間と労力のコストが増加します。詳細については、パイプライン構成デバッグ機能を使用する をご参照ください。 重要file_extend パラメータを使用する前に、logstash-output-file_extend プラグインをインストールする必要があります。詳細については、プラグインをインストールおよび削除する をご参照ください。デフォルトでは、path フィールドはシステム指定のパスに設定されています。パスを変更しないことをお勧めします。[構成デバッグの開始] をクリックして、path を取得できます。
[構成設定] のコード構造とサポートされているデータ型の詳細については、構成ファイルの構造 をご参照ください。サポートされているデータ型は、バージョンによって異なる場合があります。
- [次へ] をクリックして、パイプライン パラメータを構成します。[パイプライン パラメータ] ステップで、パラメータを構成します。[パイプライン ワーカー] を、Logstash クラスタに構成した vCPU の数に設定します。この例では、他のパラメータにはデフォルト値が保持されます。詳細については、構成ファイルを使用してパイプラインを管理する をご参照ください。
[保存] または [保存してデプロイ] をクリックします。
[保存]: このボタンをクリックすると、システムはパイプライン設定を保存し、クラスタの変更をトリガーします。ただし、設定は有効になりません。[保存] をクリックすると、[パイプライン] ページが表示されます。[パイプライン] ページで、作成したパイプラインを見つけ、[アクション] 列の [今すぐデプロイ] をクリックします。その後、システムは Logstash クラスタを再起動して、設定を有効にします。
[保存してデプロイ]: このボタンをクリックすると、システムは Logstash クラスタを再起動して、設定を有効にします。
- 表示されるメッセージで、[OK] をクリックします。その後、[パイプライン] セクションで新しく作成されたパイプラインを表示できます。パイプラインの [状態] が [実行中] に変わると、システムはデータの同期を開始します。

手順 3: 同期結果の表示
Logstash パイプラインが作成され、実行が開始された後、宛先 Elasticsearch クラスタの Kibana コンソールにログオンして、データ同期結果を表示できます。
Elasticsearch クラスタの Kibana コンソールにログオンし、プロンプトに従って Kibana コンソールのホームページに移動します。
Kibana コンソールへのログオン方法の詳細については、「Kibana コンソールへのログオン」をご参照ください。
説明この例では、Elasticsearch V6.7.0 クラスタを使用しています。他のバージョンのクラスタでの操作は異なる場合があります。コンソールでの実際の操作が優先されます。
表示されるページの左側のナビゲーションペインで、[dev Tools] をクリックします。
- 表示されるページの [console] タブで、次のコマンドを実行してデータ同期結果を表示します:
GET /my_index/_search { "query": { "match_all": {} } }コマンドが正常に実行されると、次の図に示す結果が返されます。
宛先 Elasticsearch クラスタのデータがソース Elasticsearch クラスタのデータと同じである場合、データは正常に同期されています。 GET _cat/indices?vコマンドを実行し、宛先インデックスのサイズがソースインデックスのサイズと同じかどうかを確認して、データが正常に同期されているかどうかを判断することもできます。
関連情報
- Logstashクラスターのモニタリングの設定:
- サードパーティ Elasticsearch データの Alibaba Cloud Elasticsearch への移行: