View a markdown version of this page

Neptune フルテキスト検索のトラブルシューティング - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Neptune フルテキスト検索のトラブルシューティング

注記

OpenSearch クラスターで詳細なアクセスコントロールを有効にした場合は、Neptune データベースでも IAM 認証を有効にする必要があります。

Neptune から OpenSearch へのレプリケーションに関する問題を診断するには、ポーラー Lambda 関数の CloudWatch Logs を参照してください。これらのログには、ストリームから読み取られたレコードの数と、OpenSearch に正常にレプリケートされたレコードの数に関する詳細が記載されています。

LoggingLevel 環境変数を変更することで、Lambda 関数の LOGGING レベルを変更することもできます。

注記

LoggingLevel を DEBUG に設定すると、StreamPoller によって Neptune から OpenSearch へデータがレプリケートされるときに削除されたストリームレコードや各レコードが削除された理由など、追加の詳細を表示できます。これは、レコードが欠落している場合に便利です。

Neptune ストリームコンシューマーアプリケーションは、問題の診断にも役立つ、CloudWatch 上の 2 つのメトリクスを公開します。

  • StreamRecordsProcessed – 単位時間当たりのアプリケーションによって処理されたレコード数。アプリケーションの実行率を追跡するのに役立ちます。

  • StreamLagTime – 現在時刻と処理中のストリームレコードのコミット時刻との間の時間差 (ミリ秒単位)。このメトリクスは、コンシューマーアプリケーションがどれだけ遅れているかを示します。

さらに、レプリケーションプロセスに関連するすべてのメトリクスは、CloudWatch テンプレートを使用してアプリケーションをインスタンス化したときに ApplicationName によって提供されたものと同じ名前で CloudWatch のダッシュボードに表示されます。

また、ポーリングが 2 回以上連続して失敗したときにトリガーされる CloudWatch アラームを作成することもできます。これを行うには、アプリケーションをインスタンス化するときに、CreateCloudWatchAlarm フィールドを true に設定します。次に、アラームがトリガーされたときに通知する E メールアドレスを指定します。

ストリームからのレコードの読み取り中に失敗するプロセスのトラブルシューティング

ストリームからのレコードの読み取り中にプロセスが失敗した場合は、次のことを確認してください。

  • ストリームはクラスターで有効になっています。

  • Neptune ストリームのエンドポイントは正しい形式です。

    • Gremlin または openCypher の場合: https://your cluster endpoint:your cluster port/propertygraph/stream またはそのエイリアスの https://your cluster endpoint:your cluster port/pg/stream

    • SPARQL の場合 : https://your cluster endpoint:your cluster port/sparql/stream

  • DynamoDB エンドポイントが VPC 用に設定されています。

  • モニタリングエンドポイントは VPC サブネットに設定されます。

OpenSearch へのデータの書き込み中に失敗するプロセスのトラブルシューティング

OpenSearch へのレコードの書き込み中にプロセスが失敗した場合は、次のことを確認してください。

  • お使いの Elasticsearch のバージョンが 7.1 以上、または Opensearch 2.3 以上であること。

  • VPC のポーラー Lambda 関数から OpenSearch にアクセスできること。

  • OpenSearch にアタッチされたセキュリティポリシーにより、インバウンド HTTP/HTTPS リクエストが許可されること。

既存のレプリケーション設定で Neptune と OpenSearch 間の同期が取れない問題の修正

ExpiredStreamException またはデータの破損により、Neptune データベースと OpenSearch ドメイン間で同期が取れない問題が発生した場合に備えて、以下の手順を使用して Neptune データベースと OpenSearch ドメインを最新のデータと同期させることができます。

この方法では、OpenSearch ドメイン内のすべてのデータが削除され、Neptune データベースの現在の状態から再同期されるため、Neptune データベースにデータを再ロードする必要がないことに注意してください。

  1. 「ストリームポーラープロセスの無効化 (一時停止)」で説明されているように、レプリケーションプロセスを無効にします。

  2. 以下のコマンドを使用して、OpenSearch ドメインの Neptune インデックスを削除します。

    curl -X DELETE "(your OpenSearch endpoint)/amazon_neptune"
  3. データベースのクローンを作成します (「Neptune でのデータベースクローニング」を参照)。

  4. Streams API エンドポイントに対してこの種のコマンドを実行することによって、クローンされたデータベース上のストリームの最新の eventID を取得します (詳細については、「Neptune Streams REST API の呼び出し」を参照)。

    curl "https://(your neptune endpoint):(port)/(propertygraph or sparql)/stream?iteratorType=LATEST"

    レスポンス内の lastEventId オブジェクト内の commitNum および opNum フィールドの値を書き留めておきます。

  5. github の export-neptune-to-elasticsearch ツールを使用して、クローンされたデータベースから OpenSearch ドメインへの 1 回限りの同期を実行します。

  6. レプリケーションスタックの DynamoDB テーブルに移動します。テーブルの名前は、 CloudFormation テンプレートで指定したアプリケーション名 (デフォルトは NeptuneStream) -LeaseTable で、サフィックスが付きます。つまり、デフォルトのテーブル名は NeptuneStream-LeaseTable です。

    テーブルには行が 1 つしかないはずなので、スキャンすることでテーブルの行を調べることができます。上記で記録した commitNum と opNum の値を使用して、次の変更を行います。

    • テーブル内の checkpoint フィールドの値を、commitNum について書き留めた値に変更します。

    • テーブル内の checkpointSubSequenceNumber フィールドの値を、opNum について書き留めた値に変更します。

  7. 「ストリームポーラープロセスの再有効化」の説明に従って、レプリケーションプロセスを再び有効にします。

  8. クローンされたデータベースとexport-neptune-to-elasticsearchツール用に作成された CloudFormation スタックを削除します。