すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:Logstash を使用したデータ転送に関する FAQ

最終更新日:Jan 11, 2025

Alibaba Cloud Logstash クラスタを使用して、Logstash パイプラインの出力として指定された Alibaba Cloud Elasticsearch クラスタにデータを転送すると、いくつかの問題が発生する可能性があります。たとえば、ネットワークに接続できない、パイプライン構成が無効、ソース、Logstash パイプライン、または Elasticsearch クラスタの負荷が高い、パイプラインは開始されているが Elasticsearch クラスタにデータが書き込まれていない、関連サービスは正常に実行されているがソースからデータをクエリできない、または宛先のデータ書き込み操作が異常であるなどです。このトピックでは、これらの問題の解決策について説明します。

ネットワーク接続の失敗

確認項目

問題のサンプルシナリオ

推奨される解決策

Logstash クラスタが、宛先の Elasticsearch クラスタおよびソースと同じネットワーク環境にあるかどうかを確認します。

説明

Alibaba Cloud Logstash クラスタと Elasticsearch クラスタは、仮想プライベートクラウド (VPC) にデプロイされます。Logstash クラスタと Elasticsearch クラスタを同じ VPC にデプロイすることをお勧めします。

ソースはインターネット上にあり、Logstash クラスタは VPC 内にあります。

次のいずれかの解決策を使用します。

  • ネットワーク接続ツールを使用して、Logstash クラスタをソースと Elasticsearch クラスタに接続します。

  • インターネット経由でデータを送信するように NAT ゲートウェイを構成します。詳細については、「インターネット経由のデータ送信用の NAT ゲートウェイの構成」をご参照ください。

  • 同じ VPC に存在する Logstash クラスタと Elasticsearch クラスタを作成し、Logstash パイプラインを構成します。

NAT ゲートウェイが正しく構成されているかどうかを確認します。

  • NAT エントリに指定された IP アドレスまたはポート番号が正しくありません。

  • NAT ゲートウェイのタイプがシナリオに適していません。

ビジネス要件に基づいて、次のいずれかの解決策を使用します。

  • NAT エントリに指定された IP アドレスとポート番号を確認して、ネットワーク接続を確保します。

  • ビジネス要件に基づいて、IP アドレス変換タイプを選択します。

    • Source Network Address Translation (SNAT): Logstash がインターネットにアクセスできるようにします。

    • Destination Network Address Translation (DNAT): インターネット上のサービスが Logstash クラスタ内のノードにデータを転送できるようにします。

アップロードされた Java Database Connectivity (JDBC) ドライバが有効かどうかを確認します。

JDBC ドライバを使用して PolarDB からデータを同期する場合、ログにエラーは報告されませんが、宛先の Elasticsearch クラスタにデータが書き込まれません。以前のバージョンの JDBC ドライバを使用すると、データが書き込まれます。

適切なバージョンの JDBC ドライバを使用します。詳細については、「サードパーティライブラリの構成」をご参照ください。

ソースのホワイトリストメカニズムまたはセキュリティグループルールが、Logstash クラスタへのアクセスを制限しているかどうかを確認します。

Filebeat を使用して、ソースから Logstash クラスタにデータを収集します。Filebeat は、クライアント側の ECS インスタンスにデプロイされます。ただし、ECS インスタンスのポートはセキュリティグループで有効になっていません。

ビジネス要件に基づいて、次のいずれかの解決策を使用します。

  • Logstash クラスタ内のノードの IP アドレスをソースのホワイトリストに追加します。

    説明

    Logstash クラスタ内のノードの IP アドレスを取得する方法の詳細については、「クラスタの基本情報の表示」をご参照ください。

  • Logstash クラスタへのアクセスを許可するように ECS インスタンスのポートを有効にします。詳細については、「セキュリティグループルールの追加」をご参照ください。

Logstash パイプラインの入力および出力構成で指定された RAM ユーザーに必要な権限があるかどうかを確認します。

  • Elasticsearch クラスタへのアクセス用に、Logstash パイプラインの出力構成で RAM ユーザーを指定します。ただし、RAM ユーザーは、Elasticsearch クラスタの宛先インデックスに必要な権限を持っていません。

  • エラーコード 401 が Logstash クラスタのクラスタログに報告されます。

ビジネス要件に基づいて、次のいずれかの解決策を使用します。

  • RAM ユーザーに必要な権限を付与します。詳細については、「RAM ユーザーへの権限の付与」をご参照ください。

  • Elasticsearch クラスタとソースに有効なユーザー名とパスワードを指定します。パスワードには特殊文字を含めることはできません。パスワードに特殊文字が含まれている場合は、パスワードを変更します。詳細については、「Elasticsearch クラスタのアクセスパスワードのリセット」をご参照ください。

無効なパイプライン構成

構成情報に非表示の特殊文字が含まれています。

確認項目

問題のサンプルシナリオ

推奨される解決策

Logstash クラスタのクラスタログをクエリし、ログにエラーが報告されているかどうかを確認します。Logstash クラスタのクラスタログをクエリする方法については、「ログのクエリ」をご参照ください。

必要なプラグインが Logstash クラスタにインストールされていません。たとえば、クラスタログにエラーメッセージ Couldn't find any output plugin named 'file_extend' が含まれている場合、logstash-output-file_extend プラグインは Logstash クラスタにインストールされていません。

次のいずれかの解決策を使用します。

  • Logstash クラスタにプラグインをインストールします。

  • パイプライン構成でプラグインの構成情報を削除します。

構成情報を手動で入力します。

構成情報に非表示の特殊文字が含まれていないことを確認します。特殊文字が含まれている場合は、削除します。

フィルタ部分の構成に基づいてコードをフィルタリングできません。たとえば、無効な Ruby コードは、フィルタ部分の構成に基づいてフィルタリングできません。

次のいずれかの解決策を使用します。

  • フィルタ部分の構成を元の構成に簡素化し、徐々に構成をこの部分に追加します。次に、実際の状況に基づいて根本原因を見つけ、問題をトラブルシューティングします。

  • サードパーティのデバッグツールを使用して、フィルタ部分の構成をデバッグします。

パイプライン構成で構成したパラメータ名またはパラメータ値が無効です。たとえば、logstash-output-elasticsearch プラグインを構成するときに、パラメータ名 hostshost として入力するか、無効な RDS インスタンス名を入力します。

パイプライン設定の構成方法については、オープンソース Logstash ドキュメントまたは Alibaba Cloud Logstash のベストプラクティス を参照してください。

Logstash クラスタがソースまたは Elasticsearch クラスタに接続するときに接続がタイムアウトします。たとえば、Logstash クラスタが Elasticsearch クラスタに長時間接続できない場合、エラーメッセージ Elasticsearch Unreachable: [http://xxxx:9200/][Manticore::ConnectTimeout] connect timed out が表示されます。

Logstash クラスタが Elasticsearch クラスタに接続できること、およびソースと Elasticsearch クラスタのエンドポイントが正しいことを確認します。

Elasticsearch クラスタで HTTPS が有効になっていますが、Logstash パイプラインを構成するときに http を指定します。

パイプラインの構成を変更して、Logstash パイプライン、ソース、および Elasticsearch クラスタが同じプロトコルを使用するようにします。

異常な負荷

確認項目

問題のサンプルシナリオ

推奨される解決策

ノードのディスク使用率が過度に高いかどうかを確認します。詳細については、「クラスタ監視の概要」をご参照ください。

  • パイプライン構成で、[キュータイプ] パラメータが PERSISTED に設定されています。この場合、データはディスクに永続的に保存されます。その結果、データが増加するにつれてディスク容量が使い果たされます。

  • stdout{} が出力部分の構成で構成されています。

ビジネス要件に基づいて、次のいずれかの解決策を使用します。

  • [キュータイプ] パラメータをデフォルトのキュータイプである MEMORY に設定します。キュータイプを変更する方法については、「構成ファイルを使用したパイプラインの管理」をご参照ください。

    重要

    Alibaba Cloud Logstash は、ディスクをクリアするためのエントリポイントを提供していません。ディスク容量が使い果たされた場合は、Alibaba Cloud の技術担当者に連絡して、バックエンドでディスクをクリアする必要があります。

  • パイプラインの出力構成部分から stdout{} を削除します。

    重要

    パイプラインの出力構成部分で stdout{} を構成することはできません。そうしないと、ディスク使用率が過度に高くなる可能性があります。

ノードのメモリ使用量について、メモリ不足 (OOM) エラーが報告されているかどうかを確認します。詳細については、「クラスタ監視の概要」をご参照ください。

ノードのメモリ使用量について OOM エラーが報告されます。その結果、ノードが起動に失敗します。

Elasticsearch クラスタ内のノードを再起動します。

ソースまたは Elasticsearch クラスタの負荷が正常かどうかを確認します。

Elasticsearch クラスタは異常な状態です。その結果、クラスタにデータを書き込むことができません。

書き込み操作を一時停止し、Elasticsearch クラスタを正常な状態に回復します。クラスタをスケールアウトすることをお勧めします。

パイプラインの開始後に Elasticsearch クラスタにデータが書き込まれない

確認項目

問題のサンプルシナリオ

推奨される解決策

Logstash クラスタのパイプライン構成デバッグ機能を有効にし、クラスタのデバッグログを表示して、データが Logstash クラスタに転送されているかどうかを確認します。パイプライン構成デバッグ機能を有効にするには、Logstash クラスタに logstash-output-file_extend プラグインをインストールする必要があります。パイプライン構成デバッグ機能の使用方法については、「パイプライン構成デバッグ機能の使用」をご参照ください。

  • データが Logstash クラスタに転送されない場合は、ソースの構成情報が有効かどうかを確認します。

  • データが Logstash クラスタに転送される場合は、Elasticsearch クラスタの構成情報が有効かどうかを確認します。

データが Logstash クラスタに転送されない場合、次の状況が発生する可能性があります。

  • ソースの構成情報に Alibaba Cloud アカウントの AccessKey ペアが含まれていますが、AccessKey ペアが無効です。

  • リアルタイムでソースにデータが書き込まれていません。たとえば、Filebeat を使用してソースのファイルからリアルタイムでデータを収集しますが、リアルタイムでファイルにデータが保存されません。この場合、Filebeat はソースからリアルタイムデータを収集したり、Logstash クラスタにデータを転送したりできません。

ビジネス要件に基づいて、次のいずれかの解決策を使用します。

  • ソースの構成情報を確認し、無効な情報を変更します。

  • リアルタイムストリーミングデータプラグインが Logstash クラスタにインストールされている場合は、データがリアルタイムでソースに書き込まれていることを確認します。

データが Logstash クラスタに転送される場合、次の状況が発生する可能性があります。

  • Elasticsearch クラスタで自動インデックス作成機能が無効になっています。

  • Elasticsearch クラスタで書き込み操作が許可されていません。たとえば、Elasticsearch クラスタの宛先インデックスにデータを書き込むことが許可されていません。

ビジネス要件に基づいて、次のいずれかの解決策を使用します。

  • Elasticsearch クラスタで自動インデックス作成機能を有効にします。

  • Elasticsearch クラスタで書き込み操作が許可されていることを確認します。

すべてのサービスが正常に実行されている間のソースからの異常なデータクエリまたは宛先への異常なデータ書き込み

確認項目

問題のサンプルシナリオ

推奨される解決策

パイプライン構成シナリオとパイプラインプラグインの属性に基づいて、次の操作を実行します。

  • 使用している JDBC クエリステートメントが正しいかどうかを確認します。

  • logstash-input-elasticsearch プラグインを使用している場合は、プラグインがソースにデータをリアルタイムで書き込んでいるかどうかを確認します。

JDBC を使用している場合、次の状況が発生する可能性があります。

  • 戻り結果にデータが含まれていません。

  • 時間フィールドや ID などの識別子フィールドのデータが増分データではありません。

  • JDBC ドライバのタイムゾーンが Elasticsearch クラスタのタイムゾーンと異なります。

ビジネス要件に基づいて、次のいずれかの解決策を使用します。

  • ソースのクエリステートメントをデバッグします。

  • 識別子フィールドのデータタイプが、オープンソース Elasticsearch で推奨されているデータタイプと同じであることを確認します。numeric または timestamp タイプを使用することをお勧めします。

  • JDBC ドライバのタイムゾーンが Elasticsearch クラスタのタイムゾーンと同じであることを確認します。タイムゾーンが異なる場合は、確認結果に基づいて関連する構成を変更します。

logstash-input-elasticsearch プラグインを使用している場合、次の状況が発生する可能性があります。

  • データはソースにリアルタイムで書き込まれます。

  • パイプライン構成で短いクエリ間隔を指定します。この場合、データは短い間隔で Elasticsearch クラスタに書き込まれ、大量のデータが Elasticsearch クラスタに書き込まれます。その結果、データが Elasticsearch クラスタに蓄積されます。

Logstash はリアルタイムデータ同期には適していません。データがソースにリアルタイムで書き込まれる場合は、長いクエリ間隔を指定することをお勧めします。これにより、ソースでの頻繁なクエリと Elasticsearch クラスタでの頻繁な書き込み操作を防ぐことができます。

Logstash クラスタのスローログを表示して、データが Elasticsearch クラスタに低速で書き込まれているかどうかを確認します。スローログを表示する方法については、「ログのクエリ」をご参照ください。

ソースと Elasticsearch クラスタの負荷にボトルネックが発生していません。ただし、[パイプラインワーカー] パラメータにはデフォルト値が保持されます。その結果、データは宛先 Elasticsearch クラスタに低速で書き込まれます。

[パイプラインバッチサイズ] パラメータと [パイプラインワーカー] パラメータを大きい値に設定します。詳細については、「構成ファイルを使用したパイプラインの管理」をご参照ください。