本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
注意
如果您已在 OpenSearch 叢集上啟用精細存取控制,則也需要在 Neptune 資料庫中啟用 IAM 身分驗證。
若要診斷從 Neptune 複寫到 OpenSearch 方面的問題,請參閱輪詢器 Lambda 函數的 CloudWatch Logs。這些日誌提供自串流讀取的詳細記錄數目,以及成功複寫到 OpenSearch 的詳細記錄數目。
您也可以透過變更 LoggingLevel
環境變數,以變更 Lambda 函數的 LOGGING 層級。
注意
將 LoggingLevel
設為 DEBUG
後,您可以檢視其他詳細資訊,例如捨棄的串流記錄以及捨棄每筆記錄的原因,同時透過 StreamPoller 將資料從 Neptune 複寫到 OpenSearch。如果您發現遺失記錄,這樣做可能很有用。
Neptune 串流消費者應用程式會在 CloudWatch 上發佈兩個亦可協助您診斷問題的指標:
StreamRecordsProcessed
– 應用程式每時間單位所處理的記錄數目。有助於追蹤應用程式執行速率。StreamLagTime
– 目前時間與正在處理之串流記錄遞交時間的時間差 (以毫秒為單位)。此指標會顯示消費者應用程式落後的程度。
此外,與複寫程序相關的所有指標都會公開在 CloudWatch 的儀表板中,與您使用 CloudWatch 範本執行個體化應用程式時所提供的 ApplicationName
同名。
您也可以選擇建立 CloudWatch 警示,每次輪詢失敗連續超過兩次即觸發。執行個體化應用程式時,透過將 CreateCloudWatchAlarm
欄位設為 true
以執行此作業。然後指定您希望觸發警示時收到通知的電子郵件地址。
故障診斷從串流讀取記錄時失敗的程序
如果程序在讀取串流的記錄時失敗,請確定下列事項:
已在叢集上啟用串流。
Neptune 串流端點的格式正確:
對於 Gremlin 或 openCypher:
https://
或其別名 (your cluster endpoint
:your cluster port
/propertygraph/streamhttps://
)your cluster endpoint
:your cluster port
/pg/streamSPARQL:
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 之間的不同步問題
您可以使用下列步驟,讓 Neptune 資料庫和 OpenSearch 網域重新與最新資料同步,以防它們之間由於 ExpiredStreamException
或資料損毀而發生不同步問題。
請注意,此方法會刪除 OpenSearch 網域中的所有資料,並從 Neptune 資料庫的目前狀態重新同步它,因此不需要在 Neptune 資料庫中重新載入任何資料。
停用複寫程序,如停用 (暫停) 串流輪詢器程序中所述。
-
使用下列命令刪除 OpenSearch 網域上的 Neptune 索引:
curl -X DELETE "
(your OpenSearch endpoint)
/amazon_neptune" 建立資料庫的複製 (請參閱 Neptune 中的資料庫複製)。
-
針對串流 API 端點執行此類命令,以取得所複製資料庫上串流的最新
eventID
(如需詳細資訊,請參閱呼叫 Neptune 串流 REST API):curl "https://
(your neptune endpoint)
:(port)
/(propertygraph or sparql)
/stream?iteratorType=LATEST"記下回應中
lastEventId
物件中commitNum
和opNum
欄位中的值。 使用 github 上的 export-neptune-to-elasticsearch
工具,執行從複製的資料庫到 OpenSearch 網域的一次性同步。 -
移至複寫堆疊的 DynamoDB 資料表。資料表的名稱將是您在 AWS CloudFormation 範本中指定的應用程式名稱 (預設值為
NeptuneStream
),字尾為-LeaseTable
。換言之,預設資料表名稱為NeptuneStream-LeaseTable
。您可以透過掃描來探索資料表資料列,因為資料表中應該只有一個資料列。使用上面記錄的
commitNum
和opNum
值進行以下變更:將資料表中
checkpoint
欄位的值變更為您針對commitNum
記下的值。將資料表中
checkpointSubSequenceNumber
欄位的值變更為您針對opNum
記下的值。
重新啟用複寫程序,如重新啟用串流輪詢器程序中所述。
刪除複製的資料庫和為
export-neptune-to-elasticsearch
工具建立的 AWS CloudFormation 堆疊。