

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 卓越營運支柱
<a name="operational-excellence-pillar"></a>

 AWS Well-Architected Framework 的[卓越營運](https://docs.aws.amazon.com/wellarchitected/latest/framework/operational-excellence.html)支柱著重於執行和監控系統，並持續改善流程和程序。其中包括有效支援開發和執行工作負載、深入了解其操作，以及持續改善支援程序和程序以交付商業價值的能力。您可以透過自我修復工作負載來降低操作複雜性，無需人工介入即可偵測和修復大多數問題。您可以遵循本節所述的最佳實務來實現此目標。當您的工作負載偏離預期行為時，請使用 Amazon Neptune 指標、API 和機制來正確回應。 APIs

此卓越營運支柱的討論著重於下列關鍵領域：
+ 基礎設施即程式碼 (IaC)
+ 變更管理
+ 彈性策略
+ 事件管理
+ 合規稽核報告
+ 日誌記錄和監控

## 使用 IaC 方法自動化部署
<a name="iac"></a>

使用 IaC 在 Neptune 上自動化部署的最佳實務包括下列項目：
+ 盡可能套用基礎設施即程式碼 (IaC) 來部署 Neptune 叢集。若要取得一致的環境組態，請使用 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 範本、 [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)或 [HashiCorp Terraform](https://aws.amazon.com/blogs/apn/terraform-beyond-the-basics-with-aws/) 為您的叢集建立所有必要的資源。
+ 盡可能自動化 Neptune 操作程序，例如調整執行個體大小、新增或移除僅供讀取複本，或在全域資料表上執行手動容錯移轉。
+ 從用戶端外部存放連線字串。使用擷取、轉換和載入 (ETL) 程序，以促進藍/綠部署策略、災難復原 (DR) 以及近乎零的停機時間遷移至新叢集。連線字串可以存放在 [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)、[Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) 或任何可以動態變更它們的位置。
+ 使用標籤將中繼資料新增至 Neptune 資源，並根據標籤追蹤用量。如需詳細資訊，請參閱[標記 Amazon Neptune 資源](https://docs.aws.amazon.com/neptune/latest/userguide/tagging.html)。

## 進行頻繁、小型、可逆的變更
<a name="changes"></a>

下列建議著重於小型、可逆的變更，以將複雜性降至最低，並降低工作負載中斷的可能性：
+ 在來源控制服務中存放 IaC 範本和指令碼，例如 GitHub 或 GitLab。
**重要**  
請勿在來源控制中存放 AWS 登入資料。
+ 要求 IaC 部署使用持續整合和持續交付 (CI/CD) 服務，例如 [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)或 [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)。這些服務會在非生產環境中編譯、測試和部署程式碼，其中包含暫時性 Neptune 叢集，然後再影響[您的生產 Amazon Neptune 叢集](https://aws.amazon.com/blogs/database/automated-testing-of-amazon-neptune-data-access-with-apache-tinkerpop-gremlin/)。
+ 在較低的環境中測試基礎設施和應用程式查詢，然後再將其部署到生產環境。這將最大限度地降低中斷的可能性，並有助於確保它們在工作負載和規模方面表現良好。

## 預期失敗
<a name="anticipate-failure"></a>

自我修復基礎設施透過預測故障並嘗試在不介入的情況下解決任何問題，來示範卓越營運。下列建議可協助您使用 Neptune 實現該成熟度：
+ 建立監控計畫，使用 Amazon CloudWatch 指標來監控資料庫執行個體的 CPU 和記憶體用量，並了解用量模式。為您的應用程式日誌中找到的關鍵指標和 Neptune 用戶端回應建立 CloudWatch 儀表板和警示。如需高或低 CPU 使用率指標的詳細資訊，請參閱 [Neptune 文件中的使用 CloudWatch 在 Neptune 中監控資料庫執行個體效能](https://docs.aws.amazon.com/neptune/latest/userguide/cloudwatch-monitoring-instances.html)。

  如果您經常在查詢中遇到out-of-memory例外狀況，請考慮減少查詢周遊的節點總數，或嘗試使用 `X2` 系列執行個體，其 RAM-to-CPU比率較高。
+ 設定通知以監控 Neptune 叢集的運作狀態。例如， `BufferCacheHitRatio` 應該持續處於高 （大於 99.9%)，而 `MainRequestQueuePendingRequests`應該持續處於低 （理想情況下為 0，但取決於您的需求和延遲容錯能力）。
+ 請考慮使用僅供讀取複本，以在 Neptune 中實現高可用性。您應該在與寫入器執行個體不同的可用區域中至少有兩個僅供讀取複本，以確保執行個體始終可用於在容錯移轉事件期間提供讀取查詢。
+ 根據使用率指標自動擴展僅供讀取複本。如需詳細資訊，請參閱[自動調整 Amazon Neptune 資料庫叢集中的複本數量](https://docs.aws.amazon.com/neptune/latest/userguide/manage-console-autoscaling.html)。
+ 測試資料庫執行個體的容錯移轉，以了解您的使用案例執行此程序需時多長。
+ 如果您的應用程式需要完全中斷 AWS 區域 ，請考慮使用[全域資料庫](https://docs.aws.amazon.com/neptune/latest/userguide/neptune-gdb-disaster-recovery.html)做為 DR 計畫的一部分。

## 從所有操作失敗中學習
<a name="learn"></a>

自我修復基礎設施是一種長期工作，會在發生罕見問題或回應效果不如預期時，在反覆運算中發展。採用下列實務可推動專注於該目標：
+ 透過從所有失敗中學習來推動改進。
+ 跨團隊和組織分享學到的內容。如果組織中的多個團隊使用 Neptune，請建立通用聊天室或使用者群組來共用學習和最佳實務。

## 使用記錄功能來監控未經授權的或異常的活動
<a name="logging"></a>

若要觀察異常效能和活動模式，請將日誌存放在 Amazon CloudWatch Logs 中。請考慮下列最佳實務：
+ 啟用[慢查詢記錄](https://docs.aws.amazon.com/neptune/latest/userguide/slow-query-logs.html)。定期檢閱日誌，並診斷特定查詢緩慢的原因。使用 [Gremlin](https://docs.aws.amazon.com/neptune/latest/userguide/gremlin-profile-api.html)、[SPARQL](https://docs.aws.amazon.com/neptune/latest/userguide/sparql-explain.html) 或 [openCypher ](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-opencypher-explain.html)的 Neptune 解釋和設定檔端點，深入了解這些查詢緩慢的原因。
+ [啟用 Neptune 稽核日誌](https://docs.aws.amazon.com/neptune/latest/userguide/auditing.html#auditing-enable)，並定期檢閱日誌是否有未經授權的存取或異常。
+ 如果您使用慢查詢記錄或稽核記錄，請啟用發佈至 CloudWatch Logs。這可協助您避免執行個體上的磁碟空間用盡。Neptune 執行個體的日誌儲存容量有限，且會在超過日誌空間時覆寫較舊的日誌檔案。CloudWatch Logs 支援長期保留日誌。CloudWatch Logs 中的增強型監控功能將改善您查詢日誌和診斷問題的能力。
+ 為了為您的稽核日誌提供更好的分析工具，您可以設定 Neptune 資料庫叢集，將稽核日誌資料發佈至 CloudWatch Logs 中的日誌群組。使用 CloudWatch Logs，您可以執行日誌資料的即時分析、使用 CloudWatch 來建立警示和檢視指標，並使用 CloudWatch Logs 將您的日誌記錄儲存到高耐用性儲存體。如需詳細資訊，請參閱[將 Neptune 日誌發佈至 Amazon CloudWatch Logs](https://docs.aws.amazon.com/neptune/latest/userguide/cloudwatch-logs.html)。
+ Neptune 支援使用 記錄控制平面動作 AWS CloudTrail。如需詳細資訊，請參閱[使用 記錄 Amazon Neptune API 呼叫 AWS CloudTrail](https://docs.aws.amazon.com/neptune/latest/userguide/cloudtrail.html)。